Git
Chapters ▾ 2nd Edition

4.5 Git sur le serveur - Démon (Daemon) Git

Démon (Daemon) Git

Dans la suite, nous allons configurer un daemon qui servira des dépôts sur le protocole « Git ». C’est un choix répandu pour permettre un accès rapide sans authentification à vos données Git. Souvenez-vous que du fait de l’absence d’authentification, tout ce qui est servi sur ce protocole est public au sein de son réseau.

Mis en place sur un serveur à l’extérieur de votre pare-feu, il ne devrait être utilisé que pour des projets qui sont destinés à être visibles publiquement par le monde entier. Si le serveur est derrière le pare-feu, il peut être utilisé pour des projets avec accès en lecture seule pour un grand nombre d’utilisateurs ou des ordinateurs (intégration continue ou serveur de compilation) pour lesquels vous ne souhaitez pas avoir à gérer des clés SSH.

En tout cas, le protocole Git est relativement facile à mettre en place. Grossièrement, il suffit de lancer la commande suivante en tant que daemon :

git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

--reuseaddr autorise le serveur à redémarrer sans devoir attendre que les anciennes connexions expirent, l’option --base-path autorise les utilisateurs à cloner des projets sans devoir spécifier le chemin complet, et le chemin en fin de ligne indique au daemon Git l’endroit où chercher des dépôts à exporter. Si vous utilisez un pare-feu, il sera nécessaire de rediriger le port 9418 sur la machine hébergeant le serveur.

Transformer ce processus en daemon peut s’effectuer de différentes manières qui dépendent du système d’exploitation sur lequel il est lancé.

Puisque systemd est le système d’init le plus habitituel sur les distributions Linux modernes, vous pouvez l’utiliser pour cela. Placez simplement un fichier /etc/systemd/system/git-daemon.service avec le contenu suivant :

[Unit]
Description=Start Git Daemon

[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

Restart=always
RestartSec=500ms

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon

User=git
Group=git

[Install]
WantedBy=multi-user.target

Vous aurez noté que ce daemon Git est lancé ici avec comme utilisateur et groupe git. Modifiez-le pour correspondre à vos besoins et assurez-vous que l’utilisateur fourni existe sur le système. Vérifiez aussi que le binaire Git est bien à l’emplacement /usr/bin/git ou changer le chemin si nécessaire.

Enfin, lancez systemctl enable git-daemon pour démarrer automatiquement le service au démarrage ; vous pouvez démarrer et arrêter le service avec respectivement systemctl start git-daemon et systemctl stop git-daemon.

Sur d’autres systèmes, le choix reste large, allant de xinetd à un script de système sysvinit ou à tout autre moyen — tant que le programme est démonisé et surveillé.

Ensuite, il faut spécifier à Git quels dépôts sont autorisés en accès non authentifié au moyen du serveur. Dans chaque dépôt concerné, il suffit de créer un fichier appelé git-daemon-export-ok.

$ cd /chemin/au/projet.git
$ touch git-daemon-export-ok

La présence de ce fichier indique à Git que ce projet peut être servi sans authentification.