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=/opt/git/ /opt/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é. Sur une machine Ubuntu, c’est un script Upstart. Donc dans le fichier :

/etc/event.d/local-git-daemon

mettez le script suivant :

start on startup
stop on shutdown
exec /usr/bin/git daemon \
    --user=git --group=git \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
respawn

Par sécurité, ce daemon devrait être lancé par un utilisateur n’ayant que des droits de lecture seule sur les dépôts — simplement en créant un nouvel utilisateur « git-ro » qui servira à lancer le daemon. Par simplicité, nous le lancerons avec le même utilisateur « git » qui est utilisé par git-shell.

Au redémarrage de la machine, votre daemon Git démarrera automatiquement et redémarrera s’il meurt. Pour le lancer sans avoir à redémarrer, vous pouvez lancer ceci :

initctl start local-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.