Git-Server mit Nginx auf Debian 8 sicher einrichten
Git ist ein beliebtes Versionskontrollsystem, das Entwicklern hilft, Änderungen am Quellcode effizient zu verwalten. Diese Anleitung beschreibt die Schritte zur Einrichtung eines Git-Servers über HTTP(S) mit Benutzername- und Passwortschutz.
Voraussetzungen
- Debian 8 (Jessie) als Betriebssystem
- Zugriff mit Sudo-Rechten
- Ein Texteditor nach Wahl (z. B. nano oder vim)
Benötigte Pakete installieren
Installiere die erforderlichen Komponenten: nginx, git, fcgiwrap und Apache-HTTP-Tools. Verwende dazu folgenden Befehl:
sudo apt-get install nginx git fcgiwrap apache2-utils
Hinweis: Sollte Port 80 bereits durch einen anderen Dienst wie Apache belegt sein, schlägt die Installation von Nginx über dpkg
fehl.
Verzeichnis für Git-Repositories erstellen
Um deine Repositories im Pfad /var/www/git
zu speichern, führe die folgenden Befehle aus:
mkdir /var/www/git
chown www-data:www-data /var/www/git
Damit stellst du sicher, dass der Benutzer www-data
(unter dem FastCGI läuft) über die nötigen Zugriffsrechte verfügt.
Nginx konfigurieren
Um Git-Anfragen korrekt weiterzuleiten, musst du die Nginx-Konfiguration anpassen. Diese Änderungen können im Standardserverblock oder in einer eigenen Datei unter /etc/nginx/conf.d
bzw. /etc/nginx/sites-enabled
erfolgen. Die Reihenfolge der Anweisungen muss exakt eingehalten werden:
location ~ (/.*) {
client_max_body_size 0;
auth_basic „Git Login“;
auth_basic_user_file „/var/www/git/htpasswd“;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL „“;
fastcgi_param GIT_PROJECT_ROOT /var/www/git;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $1;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
Falls du deine Repositories lieber unter einem Unterverzeichnis wie /repos
anbieten möchtest, ändere die erste Zeile wie folgt:
location ~ /repos(/.*) {
Stelle außerdem sicher, dass der server_name
in deiner Konfiguration nicht mit anderen Einträgen kollidiert – sonst kann Nginx die Anfrage nicht korrekt weiterleiten.
Passwortschutz aktivieren
Um den Zugriff einzuschränken, erstelle eine htpasswd
-Datei mit folgendem Befehl:
htpasswd -c /var/www/git/htpasswd <dein-benutzername>
Du wirst aufgefordert, ein Passwort einzugeben. Weitere Benutzer kannst du hinzufügen, indem du das -c
-Flag weglässt:
htpasswd /var/www/git/htpasswd <weiterer-benutzername>
Änderungen übernehmen
Starte den Nginx-Dienst neu, damit die Konfigurationsänderungen wirksam werden:
sudo service nginx reload
Dein Git-Server ist jetzt mit Passwortschutz aktiv und einsatzbereit.
Optional: Automatische Git-Repository-Erstellung per Skript
Um sicherzustellen, dass die Repositories korrekt erstellt und mit den richtigen Rechten versehen werden, bietet sich ein Skript an. Es sollte unter dem Benutzer www-data
laufen, um spätere Zugriffsprobleme zu vermeiden. Erstelle eine Datei unter /var/www/git/gitinit.sh
und füge folgenden Inhalt ein:
#!/bin/sh
sudo -u www-data mkdir $1
cd $1
sudo -u www-data git init –bare
So führst du das Skript aus:
cd /var/www/git
./gitinit.sh repo-name
Vergiss nicht, die Datei ausführbar zu machen:
chmod +x /var/www/git/gitinit.sh
Fazit
Mit der Einrichtung eines privaten Git-Servers auf Debian 8 in Kombination mit Nginx schaffst du eine sichere und leistungsstarke Lösung zur Verwaltung von Quellcode. Dank HTTP(S)-Zugriff, Passwortschutz und optionaler Automatisierung durch ein Skript eignet sich dieses Setup hervorragend für Teams, die Kontrolle über ihre Infrastruktur wünschen – ganz ohne externe Hosting-Dienste.