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.
Hallo,
wollte mich kurz bedanken. Anhand deiner Konfiguration konnte ich alles ohne Probleme konfigurieren! :)
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
… 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.
Danke für die Beschreibung. Damit funktioniert ein git klone problemlos.
Leider hänge ich jetzt beim push. Sobald ich git push origin master eingebe, erhalte ich folgende Fehlermeldung:
error: Cannot access URL /repo/" rel="nofollow ugc">https://user:/repo/, return code 22
fatal: git-http-push failed
Wenn man nach der Fehlermeldung sucht, findet man schnell Lösungsvorschläge. Aller benötigen allerdings Zugriff auf die Apache Config, was wir bei all-inkl.com ja nicht haben. Gibt es hier noch eine andere Lösung, die auch mit den Hosting Paketen bei all-inkl funktioniert?
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 :-(
Schade, aber trotzdem Danke für deine Rückmeldung!
Inzwischen bin ich noch auf diese Methode gestossen (Ausführung via CGI). Probiert habe ich es allerdings noch nicht:
http://steffiland.de/blog/2014/eigene-git-repositories-auf-dem-webspace/
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.
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