Gitea-docker-compose-Konfiguration mit Traefik und PostgreSQL
Dies ist die Gitea-Produktionskonfiguration, die ich derzeit für kleine bis mittlere Unternehmen empfehle. Sie verwendet PostgreSQL als Backend und Traefik als Reverse-Proxy.
Siehe Einfaches Traefik-Docker-Compose-Setup mit Lets Encrypt Cloudflare DNS-01 & TLS-ALPN-01 & HTTP-01-Challenges für weitere Informationen zum Traefik-Setup, das ich verwende.
Führen Sie zuerst das Initialisierungsskript aus, um die notwendigen Verzeichnisse mit den korrekten Berechtigungen zu erstellen und ein zufälliges PostgreSQL-Passwort auszuwählen.
#!/bin/sh
# gitea initialize script
echo POSTGRES_PASSWORD=$(pwgen 30 1) > .env
mkdir -p gitea_data gitea_config
chown -R 1000:1000 gitea_data gitea_configdocker-compose-Konfiguration
Beachten Sie, dass einige Dinge anders sind als im offiziellen Gitea-Docker-Installationsleitfaden:
- Wir verwenden ein zufälliges PostgreSQL-Passwort anstelle von
gitea. Siehe diesen Beitrag warum dies extrem wichtig ist - Wir verwenden kein dediziertes Netzwerk, da
docker-composeohnehin ein separates Netzwerk erstellt. - Wir verwenden kein SSH, weil es uns einfach nicht interessiert. HTTPS-basiertes Git funktioniert 2024 mehr als gut genug.
services:
postgres:
image: postgres:17
restart: unless-stopped
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=gitea
volumes:
- ./postgres_data:/var/lib/postgresql/data
gitea:
image: gitea/gitea:latest-rootless
container_name: gitea
depends_on:
- postgres
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=${POSTGRES_PASSWORD}
restart: unless-stopped
volumes:
- ./gitea_data:/var/lib/gitea
- ./gitea_config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.mydomain.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=cloudflare"
- "traefik.http.routers.gitea.tls.domains[0].main=mydomain.com"
- "traefik.http.routers.gitea.tls.domains[0].sans=*.mydomain.com"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"Nun können Sie einen systemd-Service erstellen, um den Gitea-Service automatisch zu starten. Details finden Sie in unserem Beitrag zu docker-compose-systemd-Services
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdinWie man beginnt
Konfigurieren Sie nun Gitea, indem Sie Ihre Domain im Browser öffnen. Das schema-Feld muss leer gelassen werden.