Git bei all-inkl einrichten

Nachdem ich versuchte Git per WebDAV in Verbindung mit ownCloud einzurichten, fiel mir ein, das die größeren Paketen (ab Premium) bei all-inkl.com auch einen SSH Zugang beinhalten. Mit diesem ist es relativ einfach das Webhosting Paket als Server für Git Repositories zu benutzen. Sollte auf dem lokalen Rechner noch kein SSH-Schlüssel erzeugt worden sein, so kann dies mittels:

ssh-keygen -t rsa -C ""

nachgeholt werden. Nun kann der Schlüssel an den all-inkl Server übertragen werden:

ssh-copy-id -i ~/.ssh/id_rsa.pub 

Anschließend ist es möglich sich mit dem all-inkl SSH Server ohne Authentifikation über ein Passwort anzumelden:

ssh 

Dort legen wir in dem Ordner in welchem unserer Git Repository landen soll ein leeres Repository an:

git init --bare

Als nächsten Schritt trägt man einen Remote an ein lokales Git Repository an:

git remote add origin ssh:///www/htdocs/nutzername/repos/Example.git

Danach kann das lokale Repository mit dem Befehl:

git push origin master

auf den entfernten Server kopiert werden. Benötigt man es auf einem anderen Rechner so kann das ganze mittels:

git clone ssh:///www/htdocs/nutzername/repos/Example.git

bewerkstelligt werden.

10 Kommentare » Schreibe einen Kommentar

  1. Erstmal vielen Dank für deine Anleitung, die mir sehr weitergeholfen hat.

    Meine Intention ging allerdings ein Stück weiter, denn ich wollte nicht mit SSH auf das git repo zugreifen, sondern mit HTTP, damit ich beliebige Benutzer administrieren kann, die auf das Repo zugreifen sollen, ohne dass ich eine aktive git Komponente auf dem Server habe und das hat mich einige Nerven gekostet.

    Hier ist die Anleitung
    1) Anlegen der Zugriffsdaten

  2. … hier geht es weiter, da ich versehentlich den Kommentar abgeschickt habe…

    0) Am besten legt man erst eine Subdomain an, was den Zugriff später einfach eleganter gestaltet
    1) Anlegen der Zugriffsdaten
    Im Hauptverzeichnis der subdomain legt man eine .htaccess mit folgendem Inhalt an:

    AuthUserFile /www/htdocs/meinUser/git/.htpasswd
    AuthGroupFile /dev/null
    AuthName „Mein GIT Repo“
    AuthType Basic

    require valid-user

    Options +Indexes

    Danach erzeugt man mit htpasswd die entsprechenden User und legt diese Datei an die oben eingetragene Stelle AuthUserFile /www/htdocs/meinUser/git/.htpasswd

    3) Auf dem Server muss man nun ein Bare-Repo anlegen(siehe oben) und man push die Daten wie oben beschrieben über SSH auf den Server

    4) Ganz wichtig und das hat mich Nerven gekostet, bis ich es gefunden habe:
    Auf dem Server(!) muss man im Git Repo ein „git update-server-info“ ausführen (im Zweifel mit –force)

    5) Nun geht man in ein neues Verzeichnis und kann nicht direkt ein „git clone“ ausführen, sondern muss zunacht ein „git init“ durchführen.

    6) Und jetzt endlich kann man mit git clone http://username:password@meineGitDomain/meinRepo.git auf das repo mit http zugreifen.

    Ich hoffe, dass vielen anderen diese Anleitung viel Zeit erspart.

  3. Leider bin ich an einer ähnlichen Stelle dann auch gescheitert und diverse Emails hin- und her mit all-inkl haben leider zu keinem Ergebnis geführt. Schade und sorry, dass ich dir weiter doch keine Hoffnung machen kann :-(

  4. Hallo zusammen,
    bin durch Zufall über diesen Artikel gestolpert – sehr gut geschrieben, vielen Dank. Jetzt wollte ich fragen, ob du vielleicht ein kleines / kurzes Tutorial erstellen könntest, in dem du zeigst, wie man GitLab CE (inkl. Web-UI) bei all-inkl einrichtet!?

    Vielen Dank für deine Arbeit und Mühen

    • Die Antwort darauf ist relativ einfach; gar nicht. Die Webhosting-Pakete von all-inkl laufen als klassisches LAMP-System sprich Linux, Apache, MySQL und PHP. Für GitLab wird aber unter anderem Go und Ruby benötigt.

      Das gäbe es bei all-inkl nur bei den Managed Server und da wird die Installation dann entsprechend durch all-inkl vorgenommen.

  5. Vielen Dank für den Artikel :-)

    um dir den „git update-server-info“ nach jedem commit zu ersparen…,
    damit das via http/https ausgecheckte Repo auch immer aktuell ist,
    kannst Du auch auf dem Server, in dem das „git init –bare“ gemacht wurde
    die:
    …/hooks/post-update.sample
    in
    …/hooks/post-update
    umbenennen, also das .sample weg…

    odeAlternativ im dem „git init –bare“ Folder:
    mv hooks/post-update.sample hooks/post-update

    Dort steht das schon drin: exec git update-server-info

    Liebe Grüße

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.