Zum Inhalt

Git-Server auf einem Synology NAS installieren und konfigurieren

Auf einem Synology NAS kann man sehr einfach in einen Git-Server installieren, dort bare-Repositories anlegen und dann können die unterschiedlichen Entwickler von unterschiedlichen Endgeräten Dateien pushen oder pullen.

Der Zugriff vom Client des Entwicklers auf das bare-Repository auf dem Synology NAS erfolgt ausschließlich über SSH und die Git-Befehle. Eine grafische Benutzeroberfläche, z.B. den Webbrowser, steht nicht zur Verfügung.

Für den Zugriff von meinem Windows-PC auf das Synology NAS verwende ich "Git Bash". Die Installation habe ich im Artikel ausführlich beschrieben 👉 Git installieren unter Ubuntu und Windows

Git Server auf dem Synology NAS installieren

Synology bietet in seinem "Paket-Zentrum" bereits ein fertiges Git-Paket an.

Synology - Git-Server installieren

Nach der Installation könnt ihr "Git-Server" sofort öffnen. Es erscheinen jedoch keinerlei Auswahlmöglichkeiten für die Zugriffe von Benutzern oder Gruppen.

Es handelt sich hierbei um ein (scheinbar) bekanntes Problem bei den Synology NAS, das bis jetzt noch nicht korrigiert wurde.

Git-Server - Problem mit den Zugriffsrechten

Git-Server - Zugriffsberechtigungen setzten

Die Zugriffsberechtigungen lassen sich auch mit keinem Benutzer setzten, der der Gruppe "administrators" angehört. Nach einigem Suchen in den weiten des WWW gibt es anscheinend bis heute nur eine Möglichkeit, man muss mit dem Benutzer admin arbeiten.

Eigentlich sollte der Benutzer aus Sicherheitsgründen deaktiviert sein, deshalb kann es sein, dass ihr den erst wieder aktivieren müsst. Anschließend meldet ihr euch mit admin an und siehe da, die Zugriffsberechtigungen für den Git-Server lassen sich setzten.

Git-Server - Problem mit den Zugriffsrechten

Setzt nun für eure Benutzer die Zugriffsberechtigungen auf den Git-Server. Dann könnt ihr euch auch schon wieder vom admin-Konto abmelden und euren normalen Benutzer für die weitere Konfiguration nutzen.

Ich hoffe, dass Synology das Problem in einen der nächsten Versionen behebt. Zusätzlich wäre es wünschenswert, wenn man neben den Benutzern auch Gruppen die Berechtigungen für den Git-Server erteilen kann. Die Administration würde sich damit ein wenig erleichtern und auch übersichtlicher machen.

Ordner für bare-Repositories anlegen

Damit auch alle Benutzer auch einen Zugriff auf das bare-Repository haben, benötigen sie einen Zugriff auf den gleichen Ordner.

Gemeinsame Ordner werden über die Systemsteuerung --> Gemeinsame Ordner angelegt. Es ist dabei grundsätzlich egal wo ihr den Ordner anlegt.

Synology - Gemeinsamen Ordner einrichten

In diesem Ordner legt ihr dann all eure bare-Repositories, die ihr auf dem Synology NAS verwalten möchtet. Deshalb ist es ganz hilfreich, wenn der gemeinsame Ordner nicht zu weit in eurer Ordnerstruktur "versteckt" wird.

Passwortlose SSH-Anmeldung mit SSH-Schlüsselpaar oder YubiKey am Synology NAS

In meinem früheren Beitrag habe ich beschrieben, wie man sich passwortlos mit einem SSH-Schlüsselpaar an einem Synology NAS anmelden kann. Das hilft auch bei der Arbeit mit Git, da mit nicht ständig beim push / pull und den anderen Aktionen sein Passwort eingeben muss.

Mit einem Hardware-Token, z.B. einem YubiKey könnt ihr euch ebenfalls an dem Synology NAS anmelden.

bare-Repository auf Synology NAS anlegen

Ein neues bare-Repository lässt sich nach der Vorarbeit sehr schnell und einfach auf dem Synology NAS anlegen.

Schritt 1: bare-Repository auf eurem Client erstellen

Ihr habt bereits ein Working-Repo auf eurem lokalen Client erstellt. Ein bare-Repository auf dem Server gibt es noch nicht.

Working Directory lokal auf eurem lokalen Endgerät anlegen

git init

Alle Dateien committed ihr mit dem Befehl in das neu angelegt Working-Repository auf eurem Client.

git add *
git commit -m "Initial commit"

Nun wird das bare-Repository zuerst einmal auf eurem lokalen Client angelegt. Geht dazu in das Verzeichnis eures Working-Directory wo der Ordner ".git" zu finden ist. Für eine bessere Unterscheidung zwischen Working- und bare-Repos ist es üblich an den Namen für das bare-Repo .git anzuhängen.

git clone --bare .git projectname.git

Nu habt ihr in eurem lokalen Git-Ordner die beiden Unterordner

  • .git = Enthält alle Informationen zu eurem Working-Directory und verbleibt auf eurem loakeln Client
  • projectname.git = bare-Repo-Struktur und muss auf den Server übertragen werden.

Schritt 2: bare-Repository auf den Server übertragen

Der Übertrag des bare-Repo erfolgt durch ein einfaches Kopieren mit einem beliebigen Client. Ich verwende hier SCP aus der "Git Bash". Ein grafisches Tool für das Kopieren von Dateien von einem Windows-Client auf einen Linux-Server ist z.B. WinSCP.

Für den einfachen Übertrag, z.B. in eurem eigenen Netzwerk unter Verwendung der IP-Adresse des Synology NAS reicht dieser Befehl aus.

scp -r projectname.git user@ip-adresse-synology-nas:/ordner/meine-git-repositories/

Ist euer Synology NAS über das Internet über eine eigene URL erreichbar, dann ist der Befehl ähnlich.

ACHTUNG Das geht aber nur, wenn euer Synology NAS SSH-Verbindungen über den Standard-SSH-Port "22" erlaubt!

scp -r projectname.git user@meinserver.de:/ordner/meine-git-repositories/

Habt ihr den SSH-Port für euer Synology NAS geändert, dann müsst ihr das SCP mitteilen und den Kopier-Befehl entsprechend anpassen.

scp -P 66666 -r projectname.git user@meinserver.de:/ordner/meine-git-repositories/

Tauscht die Zahl hinter "\-P" gegen eure richtige SSH-Portnummer.

Das bare-Repository wird nun auf das Synology NAS kopiert. Das Ergebnis könnt ihr euch dann auch gleich anzeigen lassen, entweder auf der Konsole, über WinSCP oder auf der Weboberfläche des NAS in der "Folder Station". Es taucht dort nun der neue Ordner "projectname.git" auf. Der Kopiervorgang auf den Server war damit erfolgreich.

Schritt 3: bare-Repository auf dem Client löschen

Den Ordner für das bare-Repository wird auf eurem Client nun nicht mehr benötigt und ihr könnt den entfernen.

rm -rf projectname.git

Schritt 4: Dateien in das bare-Repository pushen

Die Dateien, dir ihr bereits auf eurem lokalen Client bearbeitet und in das Working-Directory committed habt, könnt ihr nun auf den Server in das bare-Repo übertragen.

Schaut euch vor und nach dem Ausführen des Befehls einmal die Datei ".git/config" an. Ihr seht, dass ein neuer Eintrag hinzukommt, mit den Informationen, wo eure bare-Repository zu finden ist. Dafür gibt es den Abschnitt "\[remote "origin"\]". Dort seht ihr auch in der Zeile URL die Informationen zum SSH-Übertrag.

Im eigenen Netzwerk mit der IP-Adresse des Synology NAS

git remote add origin ssh://user@ip-adresse-synology-nas:/ordner/meine-git-repositories/projectname.git

Mit der Verwendung der eigenen Domain mit dem SSH-Port "22"

git remote add origin ssh://user@meinserver.de:/ordner/meine-git-repositories/projectname.git

Mit einem anderen SSH-Port ist der Befehl entsprechend anzupassen

git remote add origin ssh://user@meinserver.de:66666/ordner/meine-git-repositories/projectname.git

Den obigen Befehl müsst ihr nur beim ersten Mal ausführen. Anschließend wurde die Information in der "config-Datei" eingetragen und ihr könnt ganz normal die Git-Befehle nutzen.

Schritt 5: Hochladen von Änderungen in das bare-Repository

Nachdem nun die Informationen über das bare-Repository in der "config-Datei" eingetragen sind, könnt ihr ganz einfach die git-Befehle nutzen. Ein Übertrag vom "master" aus eurem Working-Repo in den "master" eures bare-Repos sieht dann so ausführen

git push origin master

Synology NAS aus dem Internet erreichbar machen

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj