Eigener Git Server aus NAS?



  • Wie man auf Seite 4 lesen kann habe ich nun das Synology DS 212. http://www.c-plusplus.net/forum/308756

    Ich wollte nun schauen ob und wie ich auf dem System ein Git Server installieren kann. Fertige Pakete gibt es leider nicht per GUI, also muss Putty her halten.

    Ich habe dazu dieses Tutorial gefunden:
    http://www.bluevariant.com/2012/05/comprehensive-guide-git-gitolite-synology-diskstation/

    hätte aber ein Paar Fragen

    1. Wenn ich was falsch mache, kann es sein das dass System "kaputt" geht?
    2. Könnte man in solch einen Fall das NAS zurücksetzen bzw neu installieren ohne die Daten zu verlieren?

    (Info: Das Terminal was sich bei Putty öffnet ist BusyBox)

    Meine Linux Kenntnisse sind sehr gering, daher hab ich etwas bammel das jetzt schön laufende System durch Fehler zu korrumpieren.

    Das ist eventuell auch gut: http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html

    (Bin auch am überlegen ob ich das wirklich machen will oder nicht einfach das Lokale Repo in die Backup Prozedur mit ein zu beziehen)



  • David W schrieb:

    1. Wenn ich was falsch mache, kann es sein das dass System "kaputt" geht?

    Sehr unwahrscheinlich; es wird wohl einfach das von dir installierte Zeug nicht vernuenftig funktionieren.

    2. Könnte man in solch einen Fall das NAS zurücksetzen bzw neu installieren ohne die Daten zu verlieren?

    Ja, wobei ein Backup trotzdem empfohlen wird:
    http://forum.synology.com/wiki/index.php/How_to_Reset_the_Synology_System

    Ich wuerde die beiden Anleitungen hier verwenden, die sind sehr gut gepflegt und up-to-date:
    http://www.synology-wiki.de/index.php/IPKG
    http://www.synology-wiki.de/index.php/Gitolite

    Wobei du Gitolite vermutlich gar nicht unbedingt brauchst; Git alleine sollte auch ausreichen.



  • Git allein reicht um Repositories zu hosten? (Ist das Git Paket auch gleich der Git Server mit SSH key verwaltung?)?



  • David W schrieb:

    Git allein reicht um Repositories zu hosten?

    Ja, wenn du Zugriff via SSH hast, schon.

    (Ist das Git Paket auch gleich der Git Server mit SSH key verwaltung?)?

    Nein, aber du kannst ganz normal via SSH pushen, wenn du einen Systemuser hast.

    Wenn du Repo-User von regulaeren Unix-Usern losgeloest anlegen koennen moechtest (und die Zugriffsrechte etwas granularer brauchst als das sonst ginge), dann brauchst du sowas wie Gitolite.

    Gitolite waere also dann sinnvoll, wenn du nicht ohnehin schon einen Unix-User auf dem NAS hast, mit dem du dich einloggen kannst und auch nicht vorhast, einen anzulegen.



  • also ipgk installation schien gut zu laufen - das DS rebootet grad.
    Musste etwas mit vi rum machen (die *.sh Datei musste leicht geändert werden), glücklicherweise ist von der arbeit noch genug hängen geblieben ^^
    kann dann nun per ipgk git installieren, danach muss ich schauen wie ich mein private key auf den System bekannt mach.
    Rechteverwaltung brauch ich nicht, ich bin alleiniger Nutzer vom Desktop PC aus.



  • Na endlich, ipgk funktionier nun auch, beim root/.profile im PATH haben noch angaben zum link /opt/bin gefehlt.

    ipgk update sagt nun

    NAS> ipkg update
    Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz
    Inflating http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz
    Updated list of available packages in /opt/lib/ipkg/lists/cross
    Successfully terminated.
    

    Git haben ich soeben auch erfolgreich installiert.

    Ich muss nun rausfinden wie ich auf dem Server Repositories erstellen kann um sie auf dem Desktop dann zu klonen.
    Habe da aber grad dieses Tutorial gefunden: http://www.fabforge.ch/content/git-auf-einer-synology

    (Repo anlegen usw geht schon, fehlt aktuell "nur" noch die Permission zum clone und Push)



  • David W schrieb:

    (Repo anlegen usw geht schon, fehlt aktuell "nur" noch die Permission zum clone und Push)

    Wie, du kannst mit deinem User Repos anlegen aber nicht klonen oder reinpushen?



  • Ich habe das Repo mit Putty gemacht, innerhalb der selben (root) Session wo ich Git installiert habe.

    Meinn lokale [Tortoise]Git Installation verwendet aber kein Putty sondern SSH direkt.
    (Ich habe hier bisher nie Putty verwendet, erst als ich des NAS gekauft habe)

    Bei GitHub mach ich es immer so das ich ein SSH key pair generiere, und im Administrator bereich von GitHub den publik Key bekannt mache.
    D.H. ich muss mein Key den ich hier schon habe, auf dem NAS irgendwie angeben.

    Das Repo habe ich gemacht indem ich in der Puttty Session nachdem ich Git installiert habe gesagt hab:
    NAS> mkdir -p /volume1/Git/TestRepository
    NAS> cd /volume1/Git/TestRepository
    NAS> git init --bare --shared

    Nun versuch ich es vom Desktop aus zu klonen.
    Da kann ich aber weder an geben wie mein Desktop zum Repo verbindet, noch kann ich den Benutzernamen und Passwort angeben.
    Ein Test zeigt aber das der Lokale Benutzer verwendet wird, das ist auch in Ordnung, dieser Benutzer ist auf dem NAS bekannt.

    Wenn ich in TortoiseGit sage "Clone" kann ich diese Adresse angeben:
    Source: ssh://my.nas.ip.address/Git/TestRepository
    Target: D:\TestRepository

    Dann fragt er nach dem Passwort für mein Benutzer (Der vom PC womit ich auch auf die Freigegebenen Ordner zugreife).
    Aber egal was ich da eingebe, er sagt:

    Permission denied, please try again.
    fatal: The remote end hung up unexpectedly

    --
    Ich habe nun die Benutzereinstellung geändert sodass der Benutzer das SSH auch verwenden darf: http://blog.marmalade.de/2011/03/git-auf-synology-ds410-installieren/ bei Puinkt 3

    Nachdem ich das gemacht habe ist der permission da, aber nun sagt er egal was ich mach:
    fatal: '/Git/TestRepository' does not appear to be a git repository
    fatal: The remote end hung up unexpectedly
    Sei es nun ein Clone oder ein Commit -.-



  • David W schrieb:

    Ich habe das Repo mit Putty gemacht, innerhalb der selben (root) Session wo ich Git installiert habe.

    Das bare Repo auf dem Server würde ich nochmal neu erstellen als normaler User. Wenn du das als root erstellst, gehören alle Dateien dem root-User. Dann kann ein normaler User dieses Repository nicht so einfach verwenden.

    David W schrieb:

    Bei GitHub mach ich es immer so das ich ein SSH key pair generiere, und im Administrator bereich von GitHub den publik Key bekannt mache.
    D.H. ich muss mein Key den ich hier schon habe, auf dem NAS irgendwie angeben.

    Genauso geht es auch bei Linux-Servern, also deinem NAS. Du kannst deinen public key, also die Zeile, die du an github schicken würdest, auf dem Server in $HOME/.ssh/authorized_keys eintragen, wobei $HOME für das home-Verzeichnis des Users steht, dem du Zugriff geben möchtest. Diese Datei .ssh/authorized_keys existiert normalerweise nicht, aber die kannst du einfach anlegen und auf jeder Zeile einen public key eintragen.

    David W schrieb:

    Das Repo habe ich gemacht indem ich in der Puttty Session nachdem ich Git installiert habe gesagt hab:
    NAS> mkdir -p /volume1/Git/TestRepository

    [...]
    Wenn ich in TortoiseGit sage "Clone" kann ich diese Adresse angeben:
    Source: ssh://my.nas.ip.address/Git/TestRepository
    Target: D:\TestRepository
    [...]
    Nachdem ich das gemacht habe ist der permission da, aber nun sagt er egal was ich mach:
    fatal: '/Git/TestRepository' does not appear to be a git repository
    fatal: The remote end hung up unexpectedly
    Sei es nun ein Clone oder ein Commit -.-

    Commit ist bei git lokal, da kann dieser Fehler gar nicht kommen. Du meinst vermutlich push oder fetch/pull.

    Wenn du als Adresse ssh://my.nas.ip.address/Git/TestRepository angibst, sucht der Server in /Git/TestRepository nach dem git-Reposority. Weiter oben hast du aber geschrieben, dass das git-Repository in /volume1/Git/TestRepository liegt.



  • Habs.

    Im Repo auf dem Server habe ich des vergessen die rechte zu setzen:

    NAS> chmod -R g+ws *
    NAS> chgrp -R users *
    NAS> git config core.sharedRepository true
    

    Des weiteren war der Pfad falsch.
    Statt: ssh://my.nas.ip.address/Git/TestRepository
    musste ich ssh://my.nas.ip.address/volume1/Git/TestRepository

    Kann nun mit dem Lokalen Benutzer alles damit machen 🙂

    // Edit, der Thread titel passt irgendwie nicht mehr



  • David W schrieb:

    Im Repo auf dem Server habe ich des vergessen die rechte zu setzen:

    NAS> chmod -R g+ws *
    NAS> chgrp -R users *
    NAS> git config core.sharedRepository true
    

    Das sollte normalerweise nicht nötig sein. Wenn du das Repository von vornherein mit dem richtigen User erstellst, musst du auf dem Server nichts weiter konfigurieren oder irgendwelche Rechte setzen, dann funktioniert es einfach direkt über ssh.



  • eeeh - stimmt - also mit Putty direkt mit dem User einloggen

    man bin ich ein Held 😃



  • Ja, genau.

    Und ganz ehrlich, anfangs stellt sich kaum jemand viel cleverer an. 🙂


Log in to reply