DokuWiki Dans notre projet d'auto-hébergement (cf. les précédents épisodes de la série), nous avons besoin d'un wiki pour mettre à jour nos documentations internes, le journal de bord de la machine, etc. Nous avons décidé d'installer DokuWiki, un excellent wiki en PHP, en utilisant le paquet Debian.[1]

La première partie de l'installation est simple :

 $ sudo aptitude install dokuwiki

On répond à quelques questions d'aptitude :

 Dokuwiki Emplacement Root : /notrewiki
 Select web server: Apache2
 Purging pages on removal : Non

Il est préférable de ne pas mettre dokuwiki à l'URL habituelle, histoire de déranger les script kiddies, d'où le choix de /notrewiki pour l'emplacement du wiki.

Une fois ceci fait, la configuration véritable commence, tout d'abord en re-configurant le paquet :

 $ sudo dpkg-reconfigure dokuwiki
 Dokuwiki Emplacement Root : /notrewiki
 Select web server: Apache2
 Access control : Sans restriction
 Purging pages on removal : Non

Le paquet Debian de dokuwiki a fortement modifié l'emplacement des fichiers originaux de dokuwiki, pour respecter les règles Debian et pour améliorer la sécurité du paquet.[2]

La plupart des fichiers sont maintenant installés dans /usr/share/dokuwiki/. En particulier, des informations pour configurer Apache sont disponibles dans le fichier /usr/share/dokuwiki/.htaccess.

Le fichier de configuration de dokuwiki pour Apache est /etc/dokuwiki/apache.conf. Ce fichier se retrouve également dans la configuration d'Apache, avec un lien symbolique de /etc/apache2/conf.d/apache.conf vers /etc/dokuwiki/apache.conf.

Nous éditons la configurations de ce fichier, en en faisant préalablement une copie.

 $ sudo mkdir -p /root/etc/dokuwiki/
 $ sudo cp /etc/dokuwiki/apache.conf /root/etc/dokuwiki/apache.conf.2009-06-10
 $ sudo vi /etc/dokuwiki/apache.conf

Nous ajoutons des règles permettant d'avoir des URL simples et lisibles. Le nouveau contenu ajouté provient de /usr/share/dokuwiki/.htaccess.

 RewriteEngine on
 
 RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
 RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
 RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
 RewriteRule ^$                        doku.php  [L]
 RewriteCond %{REQUEST_FILENAME}       !-f
 RewriteCond %{REQUEST_FILENAME}       !-d
 RewriteRule (.*)                      doku.php?id=$1 [QSA,L]
 RewriteRule ^index.php$               doku.php

Nous passons ensuite à la configuration de dokuwiki proprement dit. Dans le répertoire /etc/dokuwiki/, les fichiers en *.dist sont des fichiers de référence, que l'on peut copier et éditer en une version sans le suffixe .dist pour changer la configuration.

Les fichiers suivants sont à configurer :

  • /etc/dokuwiki/acl.auth.php : les droits d'accès des utilisateurs ;
  • /etc/dokuwiki/users.auth.php : les comptes des utilisateurs du wiki ;
  • /etc/dokuwiki/local.php : notre configuration de dokuwiki. Il est recommandé de ne pas modifier /etc/dokuwki/dokuwiki.php car ce fichier pourra être modifié lors de la mise à jour du paquet.
 $ sudo cp /etc/dokuwiki/local.php.dist /root/etc/dokuwiki/local.php.2009-06-10
 $ sudo vi /etc/dokuwiki/local.php

Nous ajoutons le contenu suivant :

// Le titre du wiki affichée dans la barre de titre
 $conf['title']       = 'Notre wiki tiptop';  
 // On veut utiliser les contrôles d'accès
 $conf['useacl']      = 1; 
 // Est super-utilisateur (alias administrateur) tous les membres du groupe (le @) niadomo
 $conf['superuser']   = '@niadomo'; 
 // On ne peut pas créer de compte avec génération de mot de passe
 $conf['autopasswd']  = 0; 
 // Groupe par défaut pour les nouveaux utilisateurs : niadomo
 $conf['defaultgroup']= 'niadomo'; 
 // Actions interdites : enregistrement de nouveaux comptes et l'envoi de mots de passe par courriel
 $conf['disableactions']= 'register,resendpwd'; 
 // Le wiki est en français
 $conf['lang']= 'fr'; 
 // Le courriel de provenance des messages envoyés par le wiki
 $conf['mailfrom']= 'webmaster@niadomo.net'; 
 // Le nom de la page de démarrage[3]
 $conf['start']= 'accueil'; 
 // On n'affiche pas les messages indiquant qu'une mise à jour de sécurité est disponible.[4]
 $conf['updatecheck']= 0; 
 // On a configuré Apache pour utiliser la ré-écriture d'URL, nous permettant d'avoir des URL propres
 $conf['userewrite']= 1;

On configure ensuite les droits d'accès :

 $ sudo vi /etc/dokuwiki/acl.auth.php

Et on rajoute dans ce fichier la ligne qui interdit par défaut toute action :

 *  @ALL   0

Par défaut, personne n'a accès au wiki, il faut donc ajouter les utilisateurs à la main.

On génère l'encodage du mot de passe à utiliser dans le fichier de configuration grâce à l'utilitaire md5sum :

 $ md5sum
 toto^D^D
 totof71dbe52628a3f83a77ab494817525c6  -

La partie en gras est ce qu'on entre au clavier, la partie en italique est produite par le programme. Le mot de passe toto n'est pas terrible. Même s'il est temporaire, vous pouvez utiliser un mot de passe un peu plus sûr. ;-)

On recopie la partie après toto (71dbe52628a3f83a77ab494817525c6) dans le fichier des mots de passe de dokuwiki :

 $ sudo vi /etc/dokuwiki/users.auth.php
 user1:71dbe52628a3f83a77ab494817525c6:User1:user1@niadomo.net:niadomo

Et voilà, dokuwiki est configuré. Il ne reste plus qu'à relancer Apache et à créer les autres utilisateurs :

$ sudo invoke-rc.d apache2 reload

On accède ensuite à notre wiki à l'URL https://niadomo.net/notrewiki.

On se connecte par le bouton Connexion et on ajoute des nouveaux utilisateurs dans le panneau accessible par le bouton Admin.

 Identifiant : 	user2
 Mot de passe :  un-bon-mot-de-passe
 Nom : 	User 2
 Courriel :  user2@niadomo.net
 Groupes :  niadomo
 Notifier l'utilisateur : 	[ ] (décochée, on ne doit pas envoyer les mots de passe par email en clair)

Ne pas oublier de changer le mot de passe du premier utilisateur (user1) s'il est faible !!

Et voilà, votre wiki est configuré et vous pouvez vous empresser de mettre à jour vos documentations. ;-)

Un dernier petit truc : si vous voulez modifier la licence par défaut, vous devez modifier le fichier /usr/lib/dokuwiki/tpl/default/footer.html.

Notes

[1] Vu la complexité de l'installation et la maturité du paquet, c'est à mon avis pas super judicieux, mais je ne suis pas le seul à décider. :-)

[2] Je ne suis pas convaincu de ce dernier point.

[3] Oui, je sais, moi aussi je préférais start. ;-)

[4] Vu que la version Debian est toujours en retard et que normalement le paquet Debian doit être mis à jour en cas de faille de sécurité.