Installation eines lokalen git-Servers mit Gogs

Dieser Artikel befasst sich mit der Installation von einem lokalen git-Server. Als Grundlage für die Installation wird ein Debian in der aktuellen Version 9.5 verwendet. Die genutzte Git-Software ist Gogs in der Version 0.11.66 vom 16.09.2018.

Git selbst gibt es ja schon seit einigen Jahren und ist (vor allem im Microsoft-Umfeld) mit Github sehr bekannt geworden. Git selbst eignet sich sehr gut für die Pflege von Code, vor allem wenn mehrere Entwickler an Code arbeiten. Gogs ist ein Web-Frontend für Git, um Änderungen und den Code selbst im Browser betrachten zu können.

Die Grundinstallation des Servers

Neben einer reinen Grundinstallation von Debian wird auf dem System nicht viel benötigt. Ich richte einen Zugang per SSH ein, damit ich nicht auf der Konsole arbeiten muss, weiterhin werden ein paar grundsätzliche Tools wie mc und htop installiert. Das System sollte einmal mit

auf den aktuellen Stand aktualisiert werden, danach beginnt die Installation.

Die Installation der Datenbank

Zur Speicherung der Daten können unterschiedliche Arten von Datenbanken verwendet werden (MySQL, MSSql, PostgreSQL oder auch eine lokale SQLite3). Ich nutze eine PostgreSQL-Datenbank, die wir wie folgt installieren können:

Nach der Installation muss der Datenbank-Dienst gestartet werden, weiterhin sollte ein automatischer Start des Dienstes eingerichtet werden bei einem System-Neustart.

Nun legen wir einen neuen Benutzer sowie eine neue Datenbank im PostgreSQL an. Mit diesen Daten melden wir uns später im Gogs an. Im ersten Schritt melden wir uns als postgres-Benutzer an, um danach mit psql in die Datenbank-Administration zu wechseln.

Nun erzeugen wir einen neuen Datenbank-Benutzer git, dieser Benutzer bekommt das Recht, neue Datenbanken anzulegen. Danach setzen wir das Kennwort für diesen Benutzer.

Nun erstellen wir eine neue Datenbank mit dem Namen gogs, der soeben erstellte Benutzer git wird der Besitzer der Datenbank.

Die Installation und Einrichtung von PostgreSQL ist nun abgeschlossen, wir können mit einem

wieder zurück auf die Konsole wechseln. Die weitere Installation führen wir dann wieder mit unserem Haupt-Benutzer durch.

Die Installation von Gogs

Nun können wir das eigentliche Web-Frontend Gogs installieren. Hierzu benötigen wir das Paket git, welches wir wie gewohnt mit apt installieren können:

Ist git installiert, können wir einen neuen Benutzer erstellen, der für die Gogs-Installation genutzt wird. Dieser Benutzer darf sich nicht am System interaktiv anmelden, ich nenne ihn genau so wie den Datenbank-Benutzer: git.

Im nächsten Schritt melden wir uns als der neue Benutzer an, erzeugen einen neuen Ordner innerhalb des home-Verzeichnisses und installieren das Paket go.

Wir prüfen nun den aktuellen Stand von Go, diesen finden wir unter golang.org. In meinem Fall ist die aktuelle Version 1.11.1.

Nach dem Download entpacken wir das Archiv und setzen ein paar environment-Variablen:

Nun laden wir die Bash neu und prüfen, ob go korrekt registriert ist.

Nun kann Gogs installiert werden.

Die Installation von Gogs

Da wir extra einen neuen Benutzer git für den Gogs-Dienst erstellt haben, wechseln wir nun in diese Sitzung und laden die aktuelle Version von Gogs herunter.

Der Download und die Kompilierung sollten fehlerfrei durchlaufen.

Ist dies der Fall, können wir testen, ob Gogs generell betriebsfähig ist. Dazu rufen wir die gogs-Datei mit dem Parameter web auf.

Wenn man nun die IP bzw. den Namen des Servers in einem Browser aufruft und Port 3000 ansteuert, sollte direkt eine Installations-Seite von Gogs erscheinen.

Wir sind an dieser Stelle noch nicht fertig, nun folgt noch die Einrichtung von Gogs als Dienst (wir wollen den Server ja schließlich auch mal neu starten, ohne per Hand immer den Dienst starten zu müssen) und die Konfiguration von nginx als Reverse-Proxy, damit wir direkt mit Port 80 bzw. 443 sprechen können. Damit wir weitere Einstellungen vornehmen können, muss der Gogs-Dienst mit einem Strg+C wieder abgebrochen werden.

Die Einrichtung als systemctl-Dienst

Damit Gogs nach einem Neustart automatisch wieder startet, müssen ein paar Dinge angepasst werden. Als erstes wechseln wir wieder in den git-Benutzer und erstellen dort eine manuelle Konfiguration.

Nun passen wir in zwei Bereichen die Konfiguration an: Im Bereich Server und im Bereich Database:

Nun können wir durch einen erneuten Aufruf von ./gogs web prüfen, ob die Konfiguration erfolgreich geladen werden kann. Hier ist nun zu beachten, dass nur auf 127.0.0.1 zugegriffen werden kann, nicht von außerhalb. Ein Refresh im Browser, falls noch geöffnet, führt nicht zu der bereits gesehenen Konfigurationsseite.

Einrichtung von nginx als Reverse Proxy

Um direkt per HTTP bzw. HTTPS (also ohne Angabe von Port 3000) auf den Server zugreifen zu können, nutzen wir den nginx-Webserver als Reverse-Proxy. Die Installation ist schnell gemacht:

Nach der Installation müssen wir eine neue Konfiguration anlegen unter /etc/nginx/sites-available.

In die Datei kommen nun ein paar Zeilen Code. Wichtig ist hierbei, dass in Zeile 3 der Name des Webservers angepasst wird.

Damit die Konfiguration nun automatisch geladen wird, müssen wir nginx noch dazu bringen, diese automatisch zu starten. Dazu legen wir einen neuen Link auf die soeben erstellte Datei an:

Bitte beachten Sie, dass vorne die Datei mit angegeben werden muss (gogs), im hinteren Teil des Befehls aber nicht mehr!

Nun können wir mit

testen, ob die Konfiguration so in Ordnung ist. Ist dies der Fall, können wir den nginx Webserver neustarten.

Die Einrichtung von Gogs als Dienst

Ist nun die Konfiguration generell lauffähig, müssen wir noch einen systemctl-Dienst einstellen, der den Gogs-Server automatisch startet. Dazu erstellen wir im Verzeichnis /etc/systemd/system eine neue Datei gogs.service.

In diese Datei schreiben wir nun die Bedingungen und Abhängigkeiten:

Nun müssen wir die Dienste neu laden, damit wir danach den Dienst Gogs starten können und als Autostart-Dienst einrichten können.

Erster Aufruf und Einrichtung von Gogs

Laufen alle Dienste, können wir nun über http://servername oder http://IP_Adresse den Webserver aufrufen. Es erscheint wieder die Install-Seite, dieses Mal allerdings mit dem Unterschied, dass direkt PostgreSQL ausgewählt ist (weil wir die Konfiguration entsprechend angepasst haben). Denken Sie daran, direkt einen Admin-Benutzer im unteren Bereich der Seite zu erstellen, um sich direkt anmelden zu können.

Werden die eingegebenen Daten angenommen, kommen Sie direkt auf die Admin-Oberfläche und können mit der weiteren Einrichtung fortfahren.

Jan

Jan Kappen arbeitet sein 2005 in der IT. Er hat seine Ausbildung 2008 abgeschlossen und war bis 2018 als IT-Consultant im Bereich Hyper-V, Failover Clustering und Software Defined Storage unterwegs. Seit 2015 wurde er jährlich von Microsoft als Most Valuable Professional (MVP) im Bereich "Cloud & Datacenter Management" ausgezeichnet für seine Kenntnisse und die Weitergabe seines Wissens. Jan ist häufig auf Konferenzen als Sprecher zu finden, weiterhin bloggt er viel. Seit September 2018 ist Jan als Senior Network- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland angestellt. In seiner Freizeit kümmert er sich um das Freifunk-Netzwerk in Winterberg und Umgebung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.