Gitea ist eine leichtgewichtige, Open-Source Git-Plattform, die sich ideal für Self-Hosting auf einem eigenen Server eignet. Mit Docker Compose lässt sich Gitea schnell aufsetzen, inklusive Datenbank, persistenter Speicherung, Reverse Proxy und interner Netzwerke. Dieses Tutorial zeigt, wie Sie einen stabilen und updatefähigen Gitea-Stack auf Ihrem Server bereitstellen.
Grundkomponenten eines Gitea-Stacks
Ein typischer Gitea-Stack besteht aus mehreren Services:
- Gitea: Anwendung für Repository-Management, Benutzerverwaltung und Webinterface
- Datenbank: MySQL oder PostgreSQL für persistente Speicherung von Repositories, User-Daten und Einstellungen
- Reverse Proxy (optional): Nginx oder Traefik für SSL, Weiterleitungen und Lastverteilung
- Volumes: Persistente Speicherung von Gitea-Daten, Konfigurationen und Datenbank
- Netzwerke: Interne Kommunikation zwischen Gitea, Datenbank und Proxy
Volumes für Persistenz
Persistente Speicher stellen sicher, dass Repositories, Konfigurationen und Logs bei Neustarts erhalten bleiben.
volumes:
gitea_data:
gitea_config:
db_data:
gitea_datafür Repositories, Avatare und Uploadsgitea_configfür Konfigurationsdateien und Logsdb_datafür Datenbankinhalte- Volumes bleiben unabhängig von Container-Lebenszyklen bestehen
Netzwerke für interne Kommunikation
Separate Netzwerke erhöhen die Sicherheit, da nur autorisierte Services miteinander kommunizieren.
networks:
gitea_frontend:
gitea_backend:
gitea_frontendfür Zugriff über Reverse Proxygitea_backendfür interne Kommunikation zwischen Gitea und der Datenbank- Externe Zugriffe erfolgen nur über den Proxy
Beispiel: docker-compose.yml für Gitea
version: '3.8'
services:
gitea:
image: gitea/gitea:1.20.0
environment:
USER_UID: 1000
USER_GID: 1000
DB_TYPE: postgres
DB_HOST: db:5432
DB_NAME: gitea
DB_USER: gitea
DB_PASSWD_FILE: /run/secrets/db_password
volumes:
- gitea_data:/data
- gitea_config:/etc/gitea
ports:
- "3000:3000"
- "222:22"
networks:
- gitea_frontend
- gitea_backend
secrets:
- db_password
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_USER: gitea
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
POSTGRES_DB: gitea
volumes:
- db_data:/var/lib/postgresql/data
networks:
- gitea_backend
secrets:
- db_password
secrets:
db_password:
file: ./db_password.txt
volumes:
gitea_data:
gitea_config:
db_data:
networks:
gitea_frontend:
gitea_backend:
Erklärungen zur Compose-Datei
- Gitea: Container für Repository-Verwaltung, Webinterface auf Port 3000, SSH-Port 22 gemappt auf 222
- Datenbank: PostgreSQL Container, persistent im Volume
db_data, Passwort über Secret - Volumes: Persistente Speicherung für Repositories, Konfiguration und Datenbank
- Netzwerke: Frontend- und Backend-Trennung für Sicherheit und Übersichtlichkeit
- Secrets: Sensible Daten wie Datenbankpasswort nicht im Klartext speichern
- depends_on: Gitea startet erst, wenn die Datenbank erreichbar ist
Start und Verwaltung des Gitea-Stacks
Starten Sie den gesamten Stack mit einem Befehl:
docker-compose up -d
Zum Stoppen und Entfernen aller Container, Netzwerke und Volumes:
docker-compose down -v
Best Practices
- Volumes für persistente Daten nutzen
- Secrets für sensible Daten wie Datenbankpasswort einsetzen
- Separate Netzwerke für Frontend und Backend definieren
- Reverse Proxy für SSL und Weiterleitungen konfigurieren
- CI/CD-Pipelines für automatisierte Updates und Backups einrichten
- Versionierte Docker Images nutzen, um Rollbacks zu erleichtern
- Monitoring und Logging implementieren
- Regelmäßige Sicherheitsupdates der Images durchführen
Praxisbeispiele
Gitea starten
docker-compose up -d
Logs überwachen
docker-compose logs -f gitea
docker-compose logs -f db
Rollback auf vorherige Gitea-Version
docker service update --image gitea/gitea:1.19.0 gitea_service
Updatefähigkeit
Durch versionierte Docker Images kann Gitea unkompliziert aktualisiert werden, während persistente Volumes und Secrets unverändert bleiben. Backups lassen sich vor einem Update durchführen, um eine einfache Wiederherstellung zu ermöglichen.
docker-compose pull
docker-compose up -d
Zusammenfassung
Mit Docker Compose lässt sich Gitea leicht auf dem eigenen Server betreiben. Persistente Volumes, Secrets und getrennte Netzwerke sorgen für Sicherheit, Wartbarkeit und Stabilität. Best Practices wie Reverse Proxy, CI/CD-Integration, Backups und versionierte Images gewährleisten einen zuverlässigen Betrieb einer Self-Hosted Git-Plattform.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











