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:

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:

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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: