„Git-Server“ via Gitolite

Nachdem ich mir erst kürzlich einen neuen Hoster gesucht habe ist es nun an der Zeit, auch meine privaten Git-Repositories auf den neuen Server zu schieben. Bereits auf meinem alten Server habe ich hierfür Gitolite verwendet und werde auch dementsprechend auf dem neuen Server wiederum Gitolite verwenden. Die Gründe hierfür sind einfach: Das Aufsetzen geht innerhalb weniger Minuten, die Konfiguration ist einfach (erlaubt aber dennoch komplexere Einstellungen für einzelne Repositories) und vor allem braucht man keinen zusätzlichen Dienst auf dem System laufen lassen, da der Zugriff via ssh und eigenem Nutzerkonto erfolgt.

Leider zeigen viele Tutorials umständliche Wege, um Gitolite einzurichten. Dabei bringt das in Ubuntu verfügbare Paket bereits alles mit, was man braucht.

Schlüsselpaar erzeugen

Bevor man jedoch auf dem Server damit anfängt, Dinge zu installieren und konfigurieren, benötigen wir ein Schlüsselpaar. Dieses kann relativ einfach erzeugt werden:

$ ssh-keygen -t rsa

Als Namen für den Schlüssel habe ich servergitolite gewählt. Nachdem der Schlüssel erzeugt wurde kann man diesen via scp auf den Server kopieren:

$ scp ~/.ssh/server_gitolite.pub username@example.org:/tmp/git-admin.pub

Hierbei unbedingt darauf achten, dass man den öffentlichen Schlüssel (Endung .pub) auf den Server kopiert und keinesfalls den privaten Schlüssel!

Gitolite einrichten

Via ssh meldet man sich nun am Server an und installiert das entsprechende Paket:

# apt-get install gitolite

Abhängigkeiten (wie das Programm git selbst) werden hierbei automatisch installiert. Anschließend konfiguriert man das Paket neu und übergibt den zuvor hochgeladenen Schlüssel:

# dpkg-reconfigure gitolite

Dazu wählt man zuerst den Benutzernamen (oder lässt ihn auf dem Standard gitolite), gibt das Heimverzeichnis an (für gewöhnlich /var/lib/gitolite) und übergibt letztlich noch den Ort des zuvor hochgeladenen Schlüssels (/tmp/git-admin.pub)

2014-08-13_git-server-via-gitolite
Ablageort des Schlüssels

Die serverseitige Konfiguration ist damit abgeschlossen.

Gitolites „admin-gitolite“ klonen

Die Konfiguration von Gitolite erfolgt – wie sollte es auch anders sein – über ein git-Repository. Um Gitolite konfigurieren zu können klont man dieses vom Server:

$ git clone gitolite@example.org:gitolite-admin

Über die Datei conf/gitolite.conf kann man Repositories erstellen sowie den Zugriff auf diese festlegen. Der Zugriff selbst erfolgt via ssh und Public-Key-Verfahren, die öffentlichen Schlüssel legt man hierzu im Verzeichnis keydir ab. Einfacher geht's nicht.