Git
Chapters ▾ 2nd Edition

4.5 Git en el Servidor - El demonio Git

El demonio Git

Ahora vamos a configurar un demonio sirviendo repositorios mediante el protocolo “Git”. Es la forma mas común para dar acceso anónimo pero rápido a los repositorios. Recuerda que puesto que es un acceso no autentificado, todo lo que sirvas mediante este protocolo será público en la red.

Si activas el protocolo en un servidor más allá del cortafuegos, lo debes usar únicamente en proyectos que deban ser visibles a todo el mundo. Si el servidor está detrás de un cortafuegos, puedes usarlo en proyectos a los que un gran número de personas o de computadores (por ejemplo, servidores de integración continua o de compilación) tengan acceso de sólo lectura y no necesiten establecer una clave SSH para cada uno de ellos.

El protocolo Git es relativamente fácil de configurar. Básicamente, necesitas ejecutar el comando con la variante demonio (daemon):

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

El parámetro --reuseaddr permite al servidor reiniciarse sin esperar a que se liberen viejas conexiones; el parámetro --base-path permite a los usuarios clonar proyectos sin necesidad de indicar su camino completo; y el camino indicado al final del comando mostrará al demonio Git dónde buscar los repositorios a exportar. Si tienes un cortafuegos activo, necesitarás abrir el puerto 9418 para la máquina donde estás configurando el demonio Git.

Este proceso se puede demonizar de diferentes maneras, dependiendo del sistema operativo con el que trabajas. En una máquina Ubuntu, puedes usar un script de arranque. Poniendo en el siguiente archivo:

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

un script tal como:

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

Por razones de seguridad, es recomendable lanzar este demonio con un usuario que tenga únicamente permisos de lectura en los repositorios (Lo puedes hacer creando un nuevo usuario git-ro y lanzando el demonio con él). Para simplificar, en estos ejemplos vamos a lanzar el demonio Git bajo el mismo usuario git que se usa con git-shell.

Tras reiniciar tu máquina, el demonio Git arrancará automáticamente y se reiniciará cuando se caiga. Para arrancarlo sin necesidad de reiniciar la máquina, puedes utilizar el comando:

initctl start local-git-daemon

En otros sistemas operativos, puedes utilizar xinetd, un script en el sistema sysvinit, o alguna otra manera (siempre y cuando demonizes el comando y puedas monitorizarlo).

A continuación, has de indicar a Git a cuales de tus repositorios ha de permitir acceso sin autentificar. Lo puedes hacer creando en cada repositorio un archivo llamado git-daemon-export-ok.

$ cd /path/to/project.git
$ touch git-daemon-export-ok

La presencia de este archivo dice a Git que este proyecto se puede servir sin problema sin necesidad de autentificación de usuarios.