Jail Trac

La première chose à faire est de créer un répertoire pour héberger les données de Trac et de donner un accès en lecture et écriture à ce répertoire à la jail. Pour ça je vais créer les répertoires /home/trac et /home/jails/trac/home/trac

mkdir -p /home/trac /home/jails/trac/home/trac /home/jails/trac/home/git

…puis ajouter une ligne à /etc/fstab.trac et tant qu’à faire, autant ajouter au passage le montage du répertoire contenant les dépôts git en lecture seule.

/home/trac /home/jails/trac/home/trac nullfs rw 1 1 /home/git /home/jails/trac/home/git nullfs ro 1 1

Il suffira alors de redémarrer ezjail pour prendre ces changements en compte ou de monter le répertoire à la main en attendant :

mount_nullfs /home/trac /home/jails/trac/home/trac mount_nullfs -o ro /home/git /home/jails/trac/home/git

On peut ensuite se rendre dans la jail.

jexec trac csh

Commençons par installer Trac.

cd /usr/ports/www/trac make install clean cd /usr/ports/www/trac-gitplugin make install clean

On crée ensuite un projet Trac nommé project dans /home/trac/project basé sur SQLite dont le fichier se trouvera dans /home/trac/project/db/trac.db et en lui associant un dépôt de type git qu’on aura pris soin de créer préalablement dans /home/git/repositories/project.git (si ce n’est pas le cas ou si vous n’en avez pas besoin, vous pouvez omettre les deux derniers arguments).

trac-admin /home/trac/project initenv project sqlite:db/trac.db git /home/git/repositories/project.git

On active ensuite le plugin git pour le projet.

printf “[components]\ntracopt.versioncontrol.git.* = enabled” » /home/trac/project/conf/trac.ini

Afin de créer le fichier d’authentification au format htpasswd que Trac utilisera pour identifier les utilisateurs, on installe un outil fournit par les développeurs de Trac qui nous évite d’avoir à installer Apache juste pour générer un fichier.

cd /usr/ports/security/py-htpasswd make install clean

On crée alors le fichier d’authentification du projet et on efface l’historique du shell.

htpasswd.py -cb /home/trac/project/conf/htpasswd user password history -c

Pour ajouter un utilisateur, il faut enlever le `-c` de la commande `htpasswd.py` (pour ne garder évidemment que `-b`).

On attribue à cet utilisateur le niveau d’administrateur.

trac-admin /home/trac/project permission add user TRAC_ADMIN

On peut alors créer /etc/rc.conf.

tracd_enable=“YES” tracd_args=" –basic-auth=‘project,/home/trac/project/conf/htpasswd,realm’" tracd_listen=“12.34.56.78” tracd_port=“8080”

De cette manière Trac est configuré pour servir sur l’ip 12.34.56.78 et sur le port 8080 tous les projets situés dans /home/trac, qui est la valeur par défaut de la variable tracd_envdir.

Si vous utilisez un autre répertoire que celui-ci pour héberger vos projets, il faudra donc modifier cette variable comme : `tracd_envdir="/path/to/trac/projects"`.
D'autre part, si vous ne voulez servir qu'un seul projet il suffit d'en préciser l'emplacement via `tracd_envdir` et d'en spécifier le nom à la variable `tracd_env`.

Dans cette configuration l’authentification nécessite de créer un fichier au format htpasswd et d’ajouter un argument --basic-auth à tracd_args pour chaque projet en précisant le nom du projet, l’emplacement du fichier d’authentification et le nom du domaine d’authentification, comme plus haut.

Si vous souhaitez partager votre fichier d'authentification entre tous vos projets, il suffit de remplacer le nom du projet par une étoile : `tracd_args=" --basic-auth='*,/home/trac/htpasswd,realm'"`.

Il ne reste alors plus qu’à démarrer le serveur…

/usr/local/etc/rc.d/tracd start

…et à sortir de la jail.

exit