Git-Server einrichten

galdak

Benutzer
Mitglied seit
06. Okt 2010
Beiträge
107
Punkte für Reaktionen
0
Punkte
22
Hallo Community

Ich wollte eigentlich "kurz" den Git-Server auf meiner DS216+II installieren. Aber das "kurz" klappt so nicht.

Bei der Installation ging ich gem. folgenden Beschreibungen aus dem Wiki resp. Synology-Help vor:
http://www.synology-wiki.de/index.php/Git_Server
https://www.synology.com/de-de/knowledgebase/DSM/help/Git/git

Leider ohne Erfolg.:confused:
Das Paket habe ich installiert, gestartet und meinen Benutzer entsprechend für den Zugriff aktiviert.

Wie beschrieben, habe ich unter "volumeX" den Pfad, sowie ein leeres Git-Repo erstellt:
Rich (BBCode):
cd /volume1/git/myproject
sudo git init (--bare --shared)

Wenn ich nun via Client das Repo clonen will, erhalte ich immer Fehlermeldungen.
Fehlermeldung Github Desktop:
HTML:
Authentication failed. You may not have permission to access the repository.

Fehlermeldung GitKraken:
HTML:
failed to connect to 192.168.xxx.xxx.

Clone führe ich gem. Anleitung mit folgendem Befehl durch:
Rich (BBCode):
ssh://User@192.168.xxxx.xxx/volume1/git/myproject

Ob mit oder ohne "volume1" oder ob IP oder Server-Name: das Ergebnis ist dasselbe.

Wer weiss Rat?


Mein Benutzer ist ein normaler User, also ohne Admin Rechte - gem. Beschreibung sollte der User auch nur auf das git Zugriff erhalten.
Der SSH-Zugriff via Terminal habe ich eingerichtet.


PS: obwohl das Problem bereits paar mal im Forum gemeldet wurde, habe ich nirgends eine Lösung gefunden. Daher halt ein neuer Post.
 

galdak

Benutzer
Mitglied seit
06. Okt 2010
Beiträge
107
Punkte für Reaktionen
0
Punkte
22
Hab's doch noch hingekriegt, den Git-Server zum Laufen zu bringen.
Die Lösung findet ihr hier: https://gist.github.com/walkerjeffd/374750c366605cd5123d

Beachten:
Nach der Initialisierung eines leeren Repos mit "git --bare init <repo-name>.git" wurde die Ordnerstruktur zwar korrekt erstellt, aber das File "config" hatte überhaupt keine Berechtigungen. Der Befehl "chown -R gituser:users ..." reicht also nicht aus.
Ich musste bei mir noch folgendes ergänzen
Rich (BBCode):
chmod 700 config
(--> theoretisch reicht auch "600")

Weitere Infos
  • die ssh-key's habe ich mit dem PuTTY Key Generator (PuttyGen) erstellt
  • Als Git-Desktop Client verwende ich Sourcetree (klappt wunderbar)
  • beim Befehl "git clone" den ssh-Port mitgeben, falls abweichend vom Standard
    Beispiel
Rich (BBCode):
ssh://gituser@diskstation.local:<Port>/volume1/git/<repo-name>.git


Nun läuft's.
 

heavy

Benutzer
Mitglied seit
13. Mai 2012
Beiträge
3.741
Punkte für Reaktionen
148
Punkte
129
Danke für die Rückmeldung und dass du an dem Problem drangeblieben bist. Ich wünsche dir weiterhin viel Spass mit deiner DS.
 

spoli

Benutzer
Mitglied seit
12. Jul 2008
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Danke, werde ich jetzt so versuchen , hänge zufällig an selbem Problem
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hallo Zusammen,

ich hänge gerade zufällig am selben Problem. Ich versuche auf ein GIT Repo auf meiner DS216 zuzugreifen. Das Clonen funktioniert, aber beim push bekomme ich folgende Fehlermeldungen:

Rich (BBCode):
remote: error: insufficient permission for adding an object to repository database /volume1/git/test/test.git/./objects/incoming-dUToNe
remote: fatal: failed to write object
error: remote unpack failed: unpack-objects abnormal exit

Ich habe bereits das Repo neu initialisiert auch mit dem --shared switch, wie es hier im ersten Kommentar vorgeschlagen wurde:

git init --bare --shared test.git

Das Repo ist im Ordner /volume1/git/test/test.git. Der Benutzer "jenkins" hat darauf zugriff und mit diesem Benutzer versuche ich zu klonen und zu pushen. Ich habe im Ordner /volume1/git/ die Berechtiungen mit folgenden Befehlen bearbeitet:

chmod -R 766 /volume1/git/
chown -R jenkins:user /volume1/git

Der Benutzer Jenkins hat sonst Berechtigungen auf die File Station Applikation, die Homes verzeichnisse.
SSH ist aktiviert und läuft auf einem anderen Port: 12346
Im Git-Server ist auch der Haken für diesen Benutzer gesetzt.

Was ich lediglich nicht gemacht habe, ist RSA-Keys für den Benutzer einzurichten. Zum einen ist die verlinkte Anleitung für Linux-Maschinen (Ich arbeite mit Windows 10 und Tortoise-GIT), zum anderen reicht mir die Authentifizierung per Benutzername und Kennwort.

Frage: Muss ich zwingend die Authentifizierung mit RSA-Keys einrichten, damit es klappt (Das Klonen funktioniert ja, von daher denke ich nicht, dass es notwendig ist)?

Der Link zum repo sieht wie folgt aus:

ssh://jenkins@<IP-Adresse-der-NAS>:12345/volume1/git/test/test.git

Trotzdem bekomme ich die Fehlermeldung. Hat jemand eine Idee?

Danke und Grüße,

Michael
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Nach ein wenig googlen habe ich diesen Beitrag gefunden:

https://forum.synology.com/enu/viewtopic.php?t=129292

Da schreibt der Benutzer markshep, dass das Problem wahrscheinlich die Synology-Verschlüsselung des unter dem Repo liegenden Dateisystems ist. Dabei ist wohl das Problem, dass die Verschlüsselung kein File-Locking unterstützt. Somit kann man zumindest auf Verschlüsselten Shares von Synology kein GIT betreiben :(. Das Betrifft sowohl den Zugriff über SSH als auch über SMB (habs ausprobiert).

Grüße,

Michael
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
versuche gerade auch einen Git-Server einzurichten.
Habe
1. SSH aktiviert,
2. Git Server installiert und geöffnet und dort Benutzer berechtigt
3. GIT-Ordner erstellt, mit SSH den Pfad geöffnet und git init eingegeben

Wie kann ich nun in GitHub Desktop das Repository hinzufügen?
Wenn ich auf Add Repository -> Clone a Repository > URL > https://addresse-zur-synology.de eingebe und mir dann versuche anzumelden kommt die Meldung Authentification failed.
Hat jemand eine Idee?
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hallo update-freak,

du wirst wahrscheinlich die SSH-Adresse deiner syno angeben müssen (ssh://addresse-zur-synology.de). Selbstverständlich müssen dann auch die Ports (22 für SSH) in allen Firewalls freigeschaltet sein (Desktop-PC, Router, Synology).

Ich lese gerade, dass du Github-Desktop verwendest. Ohne es jemals selbst verwendet zu haben würde ich sagen, dass das Tool mit der Syno nicht funktioniert, da es auf Github angepasst ist. GIT ist der Server, welchen du auf deiner Syno verwendest. Github ist ein Anbieter für GIT (einer der bekanntesten).

Falls du WIndows verwendest, kann ich Dir TortoiseGIT empfehlen, damit hab ich zumindest meine ersten Gehversuche mit GIT gemacht.
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Ich nutze gitea via Docker auf der DS mit Web-GUI

Kann man das auch auf einem verschlüsselten Laufwerk verwenden? Das war ja das Problem, warum GIT von Synology auf meiner Syno nicht funktionierte, weil ich die Repos gerne auf einem verschlüsseltem Share haben wollte.
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
danke für die schnelle Antwort. Habe es jetzt mal mit der lokalen IP des NAS probiert anstatt der DynDNS-Adresse.
Bei dem Versuch das Repository zu clonen, bekomme ich in der Synology den Fehler: IP-Adresse von NAS wurde von SSH blockiert.
Hat jemand eine Idee?
 
Zuletzt bearbeitet:

galdak

Benutzer
Mitglied seit
06. Okt 2010
Beiträge
107
Punkte für Reaktionen
0
Punkte
22
Vielleicht hilft dir dieser Thread weiter: Link
Hast du mal einen anderen Port als 22 versucht?
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
habe noch ein paar Fragen:
gegebene Ordnerstruktur, z.B. volume1/documents/Git/Masterarbeit
- Muss der Befehl git init --bare --shared im Ordner Git oder Masterarbeit ausgeführt werden?
- Was bewirkt --bare und --shared?
- Muss der Ordner Masterarbeit.git oder nur Masterarbeit heißen?

Müssen noch zusätzliche Rechts durch Befehle erteilt werden? z.B. mit
- chown -R gituser:users Masterarbeit auf der Ebene im Git-Ordner
- chmod 700 config in der Ebene innerhalb des .git-Ordners

Clonen müsste dann so klappen? (SSH mit Port 46)
ssh://gituser@192.168.178.36:46/volume1/documents/Git/Masterarbeit bzw. ssh://gituser@https://pfade-zur-synology:46/volume1/documents/Git/Masterarbeit (Portweiterleitung eingerichtet)

Muss der Befehl git update-server-info ausgeführt werden und was bewirkt er?

Müssen die homes Verzeichnisse aktiviert sein?

Muss ich eine Authentifizierung mit RSA-Keys einrichten?

Hier wird gesagt, dass GitHub funktioniert (https://stackoverflow.com/questions/51780067/github-desktop-synology-6-2).
Kann das einer bestätigen?
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
also nochmal meine Vorgehensweise (vielleicht sieht jemand einen Fehler).
Ausgangszustand:
volume1/documents/Git/Masterarbeit
homes-Verzeichnisse sind deaktiviert, Benutzer xyz gehört zu den Admins,

Vorgehen
1.) SSH-Dienst bei Systemsteuerung > Terminal aktivieren und z.B. Port 46 einstellen
2.) Git-Paket installieren und öffnen. Benutzer xyz ist schon ausgewählt da Admin
3.) Putty öffnen, mit Nas verbinden, sudo -i für root, in Ordner Masterarbeit wechseln und dort git init ausführen
4.) In Ordner Git wechseln und chown -R xyz:users Masterarbeit ausführen
5.) In Ordner Masterarbeit wechseln und chown -R xyz:users .git ausführen
6.) In Ordner .git wechseln und dort chmod 700 config ausführen
7.) über ssh://xyz@192.168.178.36:46/volume1/Git/Masterarbeit hinzufügen

irgendwas scheint noch nicht zu passen, weiß aber nicht was
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hi update-freak,

danke für die schnelle Antwort. Habe es jetzt mal mit der lokalen IP des NAS probiert anstatt der DynDNS-Adresse.
Bei dem Versuch das Repository zu clonen, bekomme ich in der Synology den Fehler: IP-Adresse von NAS wurde von SSH blockiert.
Hat jemand eine Idee?

womit clonst du denn? Über Kommandozeile? wie sieht dein genauer Befehl aus, den du zum klonen verwendest?

Das klingt ein wenig so, also ob du irgendwo einen user voreingestellt und gespeichert hast. Dann versucht git immerwieder mit dem selben user über SSH zuzugreifen und blockiert dann nach X versuchen.

Ich habe GIT auf meiner Syno auch versucht zum laufen zu bekommen, bin aber daran gescheitert, dass GIT und die Laufwerksverschlüsselung von Synology sich nicht vertragen haben. Anscheinend geht kein File-Locking, wenn das darunter liegende Laufwerk verschlüsselt ist.

Da meine Syno Docker-fähig ist habe ich mich dann kurzerhand für gitea entschieden. Danke @geimist für den Tipp!!

Gitea ist im prinzip ein github-clone. Du hast eine Web-Oberfläche kannst dort Benutzer, Repositories, Issues uvm. verwalten. Das mag für kleine Projekte ein wenig overkill sein, aber für mich funktioniert es gut. Und das beste ist, dass man über HTTP(s) klonen und pushen kann :). SSH ist optional möglich, du musst nur das portmapping entsprechend anpassen.

Falls du lust hast das über Docker und gitea zu machen hier mein funktionierendes docker-compose.yml. Dabei ist zu beachten, dass die Datenbank die Daten auf einem Bind-Mount-Volume speichert (hier musst du unter /volume1/zur/gitea/datenbank einen entsprechenden Ordner erstellen). Gitea selbst speichert die Daten in einem von Docker verwalteten Volume. Das ist bei mir notwendig, da ich sonst bei einem Bind-Mount-Volumne wieder in konflikt gerate mit der LW-Verschlüsselung.

Rich (BBCode):
version: '2'
services:
  web:
    image: gitea/gitea:1.7.1
    container_name: gitea
    volumes:
      - gitea-data:/data
    environment:
      - DB_TYPE=mysql
      - DB_HOST=db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=<Hier ein tolles passwort eintragen>
    ports:
      - "33333:33333"
      - "33332:22"
    depends_on:
      - db
    restart: always
  db:
    image: mariadb:10
    container_name: gitea_db
    restart: always
    user: 1053:65552
    environment:
      - MYSQL_ROOT_PASSWORD=<hier ein anderes root passwort eintragen>
      - MYSQL_DATABASE=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=<Hier ein tolles passwort eintragen>
    volumes:
      - /volume1/zur/gitea/datenbank:/var/lib/mysql

volumes:
  gitea-data:

Falls gitea mit docker eine option für dich ist, sag bescheid und ich kann dann auch eine etwas detailliertere Anleitung schreiben.
 
  • Like
Reaktionen: update-freak

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
womit clonst du denn? Über Kommandozeile? wie sieht dein genauer Befehl aus, den du zum klonen verwendest?
Das klingt ein wenig so, also ob du irgendwo einen user voreingestellt und gespeichert hast. Dann versucht git immerwieder mit dem selben user über SSH zuzugreifen und blockiert dann nach X versuchen.

Ich versuche direkt in GitHub Desktop (File > Clone a repository > URL) zu clonen.
Dort gebe ich bei URL ssh://xyz@192.168.178.36:46/volume1/Git/Masterarbeit ein
github.png
Kann gut sein, dass irgendwo ein User voreingestellt ist, da ich es schon für die Repositories an der Uni verwende und nun ja meinen eigenen User von Synology hinzufügen will.
Zu gitea muss ich noch etwas recherchieren ob das eine Option ist; benötige das ganze nur für LaTeX-Dokumentationen und OpenFOAM-Simulationen.
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Ich weiß nicht, ob der Github Desktop-Client mit dem SSH protokoll kompatibel ist. Üblicherweise nimmt man bei Github immer HTTPS. Ich glaube, dass der Synology-GIT-Server nur SSH kann. Wahrscheinlich ließe sich auch HTTPS einrichten aber nicht ohne eine "pain-in-the-ass" Konfiguration.

Schau mal, bei Github habe ich glaube ich das entsprechende Issue zum thema SSH gefunden: https://github.com/desktop/desktop/issues/2085

Ansonsten kann ich für kleine Projekte den SVN-Server von Synology empfehlen. Ist sehr einfach einzurichten und von Clientseite zu bedienen.
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
bin mit folgender Vorgehensweise etwas weitergekommen:

- SSH aktivieren, Port 46, Portfreigabe einrichten
- User Verzeichnisse aktivieren
- Git Server installieren
- Ordner Git erstellen: volume1/documents/Git
- Putty mit root (sudo -i)

im Verzeichnis volume1/documents:
chown -R xyz:administrators Git
chmod -R 772 Git

im Verzeichnis volume1/documents/Git:
git init --shared Test.git

- im Programm Sublime Merge
ssh://xyz@192.168.178.36:46/volume1/documents/Git/Test.git

-> das Hinzufügen hat damit geklappt.


Fehlermeldung beim Pushen:
error: src refspec master does not match any.
error: failed to push some refs to 'ssh://xyz@192.168.178.36:46/volume1/documents/Git/Test.git'

Fehlermeldung beim Pullen:
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.

Hat jemand eine Idee wie man den Fehler beheben kann?

EDIT: Fehler gefunden. Musste im Git Client (z.B. Fork) noch folgendes ausführen:
git commit -m "Initial import"
git push -u origin master

Jetzt funktioniert es endlich
 
Zuletzt bearbeitet:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat