Synology Diskstation als Git-Server

Meine Synology Diskstation nutze ich hauptsächlich als Fileserver und für Backups. Es ist also naheliegend für meine Entwicklungen auch ein Git-Repository auf der NAS aufzusetzen. Die Installation und Konfiguration ist an sich ganz einfach. Die Suche nach der Dokumentation ist allerdings mühselig, da die notwendigen Informationen auf mehrere Quelle verteilt sind.  Genau das ändert sich mit folgendem Post.

Ziel ist es auf der Diskstation ein Git-Repository zu installieren, auf dem sich die Benutzer via ssh verbinden können. Die Authentifizierung geschieht über Key-Files.

Git Installation über die Synology Diskstation Admin-Oberfläche

Git lässt sich einfach über die Administrationsoberfläche der Diskstation installieren. Dazu muss man nur den Dienst Git im Paketmanager auswählen und auf installieren klicken. Nach dem Download steht Git auf der Konsole zur Verfügung.

Git Dienst im Synology Diskstation Pakeketzentrum

Git User Anlegen

Als nächstes lege ich einen neuen Benutzer „git“ an. Hierzu verwende ich auch die Administrationsoberfäche: Systemsteuerung > Benutzer > erstellen.

Der Benutzer benötigt Zugriff auf die Konsole via ssh. Leider kann ich das nicht über die Administrationsoberfläche zuweisen. Dazu logge ich mich als root via ssh auf die Synology Diskstation ein. Über die Konsole bearbeite ich die Datei /etc/passwd (z.B. mit dem vi):

Diskstation> vi /etc/passwd

und ändere die Zeile:

git:x:1028:100::/var/services/homes/git:/sbin/nologin

in:

git:x:1028:100::/var/services/homes/git:/bin/ash

Nach dem Speichern kann sich der git Benutzer via ssh auf der Diskstation anmelden.

Git Repository anlegen

Genau das tue ich  jetzt um das Git Repository anzulegen.

strolzm@localhost:~$ ssh git@[IpDIskstation]

Ich befinde mich im Home-Verzeichnis des Git Users auf der Diskstation. Hier erstelle ich ein neues Verzeichnis, in dem wir ein leeres Git-Repository anlegen:

Diskstation> mkdir repos 
Diskstation> cd repos
Diskstation> mkdir firstRepo
Diskstation> cd firstRepo
Diskstation> git init --bare

Authorisierung über SSH-Keys

Jetzt bin ich schon ziemlich weit. Ich könnte schon einen lokalen Klon des Repositorys erzeugen, müsste mich aber mit dem Passwort des git-Benutzers authentifizieren. Das möchte ich natürlich nicht bei jedem Zugriff machen und lege deshalb ssh-Keys an. Unter Linux geschieht das über:

strolzm@localhost:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/strolzm/.ssh/id_rsa):

Ich speichere die Schlüssel wie vorgeschlagen im [home]/.ssh-Verzeichnis. Den öffentlichen Schlüssel erzeuge ich im Anschluss:

strolzm@localhost:~$ ssh-keygen -p
Enter file in which the key is (/home/strolzm/.ssh/id_rsa):

Den öffentlichen Schlüssel kopiere  ich auf die Diskstation. Falls es noch nicht existiert, lege ich dort das Verzeichnis [home]/.ssh an

Diskstation> mkdir .ssh

Mit folgendem Befehl kopiere ich den öffentlichen Schlüssel in die Datei .ssh/authorized_keys auf der Diskstation. Wenn diese Datei schon existiert und Schlüssel enthält, muss der neue Schlüssel natürlich angehängt werden. In dem Fall verwendet man am einfachsten einen Texteditor

strolzm@localhost:~$ scp .ssh/id_rsa.pub git@[IpDiskstation]:/volume1/homes/git/.ssh/authorized_keys

Git Repository Klonen

Ich habe es geschafft und kann das angelegte Git Repository auf meiner lokalen Maschine klonen:

strolzm@localhost:~$ git clone ssh://git@[IpDiskstation]:/volume1/homes/git/repos/firstRepo

Quellen

Die Suche nach der Doku für die einzelnen Schritte hat eigentlich am längsten gedauert. Ich habe mich an folgenden Seiten durchgehangelt. Falls ich etwas vergessen habe, kann es sicher auf einer der Seiten gefunden werden. Noch schöner wäre ein Hinweis an mich, sodass ich die Beschreibung ergänzen kann.

         

9 thoughts on “Synology Diskstation als Git-Server

    1. Mstrolz Beitragsautor

      Hallo Michael,

      das weiß ich leider nicht, weil ich den GitHub Desktop nicht kenne. Aber ich gehe davon aus, dass es gehen sollte, weil sich ein Git Repository auf der DiskStation wie jedes andere Git Repository verhält. Es ist über ssh erreichbar und wenn GitHub Desktop eine Verbindung per ssh unterstützt sollte es gehen.

      Ich hoffe das hilft weiter.

      Viele Grüße,

      Matthias

      Antworten
  1. marcel

    Hi Matthias,

    hast du auch eine Weboberfläche für git auf deinem Synology (zB gitweb) zum laufen gebracht ? Wäre im täglichen Betrieb gelegentlich doch ganz nützlich glaube ich. 🙂

    Gruß, Marcel

    Antworten
    1. Mstrolz Beitragsautor

      Hallo Marcel,

      eine Weboberfläche habe ich nicht installiert. Für meine Projekte hab ich das nicht benötigt. Tut mir Leid, dass ich dir da nicht weiterhelfen kann.

      Viele Grüße,

      Matthias

      Antworten
  2. DL

    Danke für die gute Beschreibung – werde mich gleich sofort dran machen, ein GIT Repository zu erstellen. Eine Frage, die sich mir nur gerade noch stellt, ist, wie man unterschiedliche GIT Repositories für unterschiedliche Projekte mit mehreren Benutzern anlegen kann.

    Antworten
    1. Tim

      Steht im Prinzip da. Diese 3 Befehle:

      mkdir firstRepo
      cd firstRepo
      git init –bare

      kannst du für ein zweites Repo wiederholen (vorher mit ‚cd ..‘ wieder ein Verzeichnis höher gehen natürlich, aber das sollte klar sein.)

      Antworten

Schreibe einen Kommentar zu tobias Antworten abbrechen

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