commit
4dce244532
|
@ -0,0 +1,4 @@
|
||||||
|
DB_USER=gitea
|
||||||
|
DB_PASSWORD=gitea
|
||||||
|
DB_NAME=gitea
|
||||||
|
SITE_URL=nama.domain.anda
|
|
@ -0,0 +1,4 @@
|
||||||
|
/.vscode
|
||||||
|
/.env
|
||||||
|
/traefik/.users
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
# GIT SERVER MAGELANG
|
||||||
|
|
||||||
|
Konfigurasi docker-compose untuk menjalankan GIT SERVER MAGELANG.
|
||||||
|
|
||||||
|
## Kebutuhan
|
||||||
|
|
||||||
|
Server yang telah dikonfigurasi dengan:
|
||||||
|
|
||||||
|
* docker
|
||||||
|
* docker-compose
|
||||||
|
|
||||||
|
## Penggunaan
|
||||||
|
|
||||||
|
1. clone repository
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://git.magelangkota.go.id/radityo/gitea-docker.git
|
||||||
|
cd gitea-docker
|
||||||
|
```
|
||||||
|
|
||||||
|
2. salin **.env.example** ke **.env** dan ubah sesuai dengan konfigurasi yang diperlukan
|
||||||
|
|
||||||
|
3. Buat file **.users** di direktori **traefik** berisi pengguna yang akan diberi akses ke dashboard traefik.
|
||||||
|
|
||||||
|
Untuk membuat pengguna dapat menggunakan program **htpasswd**.
|
||||||
|
|
||||||
|
```
|
||||||
|
htpasswd -c .users <nama pengguna>
|
||||||
|
```
|
||||||
|
|
||||||
|
Sebagai contoh, file **.users.example** berisi pengguna **admin** dengan password **admin**.
|
||||||
|
|
||||||
|
4. Jalankan aplikasi dengan **docker-compose**
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
|
@ -0,0 +1,87 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
gitnet:
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
gitea-data:
|
||||||
|
pg-db:
|
||||||
|
traefik-acme:
|
||||||
|
|
||||||
|
|
||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:latest
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- RUN_MODE= prod
|
||||||
|
- GITEA__database__DB_TYPE=postgres
|
||||||
|
- GITEA__database__HOST=db:5432
|
||||||
|
- GITEA__database__USER=${DB_USER}
|
||||||
|
- GITEA__database__PASSWD=${DB_PASSWORD}
|
||||||
|
- GITEA__database__NAME=${DB_NAME}
|
||||||
|
- SSH_PORT=2222
|
||||||
|
- SSH_LISTEN_PORT=22
|
||||||
|
- ROOT_URL=https://${SITE_URL}
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- gitnet
|
||||||
|
volumes:
|
||||||
|
- gitea-data:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.gitea.rule=Host(`${SITE_URL}`)"
|
||||||
|
- "traefik.http.routers.gitea.service=gitea"
|
||||||
|
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.gitea.entrypoints=websecure"
|
||||||
|
- "traefik.http.services.gitea.loadbalancer.passhostheader=true"
|
||||||
|
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "2222:22"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
container_name: db
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${DB_USER}
|
||||||
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||||
|
- POSTGRES_DB=${DB_NAME}
|
||||||
|
networks:
|
||||||
|
- gitnet
|
||||||
|
volumes:
|
||||||
|
- pg-db:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
traefik:
|
||||||
|
image: traefik:2.5
|
||||||
|
container_name: traefik
|
||||||
|
restart: unless-stopped
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
networks:
|
||||||
|
- gitnet
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/traefik.yml:/traefik.yml:ro
|
||||||
|
- ./traefik/dynamic.yml:/dynamic.yml
|
||||||
|
- ./traefik/.users:/.users
|
||||||
|
- traefik-acme:/acme/
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.traefik-secure.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.${SITE_URL}`)"
|
||||||
|
- "traefik.http.routers.traefik-secure.middlewares=user-auth@file"
|
||||||
|
- "traefik.http.routers.traefik-secure.service=api@internal"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
admin:$apr1$GvISg7Bo$nbqoZm9jQL1K76E.sGVI1/
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Dynamic configuration
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
secureHeaders:
|
||||||
|
headers:
|
||||||
|
sslRedirect: true
|
||||||
|
forceSTSHeader: true
|
||||||
|
stsIncludeSubdomains: true
|
||||||
|
stsPreload: true
|
||||||
|
stsSeconds: 31536000
|
||||||
|
|
||||||
|
user-auth:
|
||||||
|
basicAuth:
|
||||||
|
usersFile: /.users
|
||||||
|
|
||||||
|
tls:
|
||||||
|
options:
|
||||||
|
default:
|
||||||
|
cipherSuites:
|
||||||
|
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
|
||||||
|
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
||||||
|
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
|
||||||
|
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||||
|
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
||||||
|
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
|
|
@ -0,0 +1,34 @@
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: :80
|
||||||
|
http:
|
||||||
|
redirections:
|
||||||
|
entryPoint:
|
||||||
|
to: websecure
|
||||||
|
|
||||||
|
websecure:
|
||||||
|
address: :443
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
- secureHeaders@file
|
||||||
|
tls:
|
||||||
|
certResolver: letsencrypt
|
||||||
|
|
||||||
|
providers:
|
||||||
|
docker:
|
||||||
|
endpoint: "unix:///var/run/docker.sock"
|
||||||
|
exposedByDefault: false
|
||||||
|
file:
|
||||||
|
filename: /dynamic.yml
|
||||||
|
|
||||||
|
certificatesResolvers:
|
||||||
|
letsencrypt:
|
||||||
|
acme:
|
||||||
|
email: git@magelangkota.go.id
|
||||||
|
storage: /acme/acme.json
|
||||||
|
keyType: EC384
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: web
|
Loading…
Reference in New Issue