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