Inhalt
Herzstück jeder Entwicklungsumgebung ist ein Versions-Verwaltungssystem. Am weitesten verbreitet in der Open-Source-Gemeinde ist Git - es ist aber auch berüchtigt, wenn es um komplizierte Installation, umfangreiche Abhängigkeiten und aufwendige Verwaltung geht.
Eine wesentlich einfachere Lösung für einen selbst gehosteten Git-Service, der nur einer kleinen Entwicklergruppe dienen soll, ist Gogs. Er soll wie immer natürlich als Docker-Container unter openmediavault laufen.
Datenbank vorbereiten
Zunächst bereiten wir die Datenbank vor. MariaDB wurde ja schon für Nextcloud installiert und läuft auch für andere Dienste. Es muss also nur eine zusätzliche Datenbank und ein Nutzer mit den nötigen Rechten angelegt werden:
host# docker exec -it mariadb bash
docker# mysql -u root -p <root-password>
MariaDB> create database gogs;
MariaDB> create user gogs@localhost identified by '<passwort>';
MariaDB> create user gogs@'%' identified by '<passwort>';
MariaDB> grant all privileges on gogs.* to gogs@localhost;
MariaDB> grant all privileges on gogs.* to gogs@'%';
Docker einrichten
In der omv-Docker-GUI laden wir das Gogs-Image mit Docker → Image bereitstellen und geben als Quelle gogs/gogs an. Nack klicken auf Image starten erscheint der Konfiguartionsdialog für den Container:
- Container Name: gogs
- Restart Policy: always
- Netzwerkmodus: Bridge
- Hostname: gogs.mydmain.tld
- Portweiterleitung:
- Host IP: 0.0.0.0
- Host Port: 8500
- Exposed Port: 3000
- Protocol: tcp
- Portweiterleitung:
- Host IP: 0.0.0.0
- Host Port: 8522
- Exposed Port: 22
- Protocol: tcp
- Volumes and Bind mounts:
- Host path: /container/gogs/data
- Container path: /data
Gogs konfigurieren
Nach dem Starten kann man unter http://gogs.mydomain.tld:8500 den Gogs-Konfigurationsdialog aufrufen. Dort trägt man zunächst die Angaben zur Datenbank ein. Als URL sollte man die später von „außen” erreichare Adresse eintragen, also z.B. https://gogs.mydomain.tld.
Das Anlegen des Administrator-Kontos ist zwar optional, sollte aber der Vollständigkeit halber auch gleich hier erledigt werden. Ansonsten wird der erste angelegte Nutzer automatisch zum Administrator.
Reverse Proxy definieren
Schließlich sorgen wir noch mit einem nginx-Reverse-Proxy dafür, dass die Gogs-Installation unter verschlüsselt unter https://gogs.mydomain.tld erreichbar wird. Der Name muss zuvor natürlich so im DNS oder hosts-Datei eingetragen werden, dass er auf die omv-Server-Adresse zeigt.
Den Reverse Proxy richten wir über Dienste → nginx → Server → Hinzufügen mit folgenden Angaben ein:
- Aktivieren
- Verzeichnis: keines
- Hosttyp: Namensbasiert
- Servername: gogs.mydmain.tld
- SSL aktivieren
- Zertifikat: <auswählen>
- Only use SSL
- Zusätzliche Optionen:
location / {
proxy_pass http://127.0.0.1:8500;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
}
Fertig!
Haben wir alles richtig gemacht, sollte nach dem Speichern und Aktivieren der Konfiguration unser gogs jetzt unter https://gogs.mydomain.tld erreichbar sein.
Quellen:
- Gogs Homepage: gogs.io
- Dockerized Gogs git server and alpine postgres in less than 20 minutes: garthwaite.org/docker-gogs.html
2 Kommentare