# Dokuwiki

## Présentation

DokuWiki est un wiki simple et standard principalement destiné à la création de documents de toute nature. Il est destiné aux équipes de développeurs, groupes de travail ou petites entreprises. Il dispose d'une syntaxe simple mais puissante qui fait que les fichiers de données restent lisibles en dehors du Wiki, et facilite la création de textes structurés. Toutes les données sont stockées dans des fichiers texte, aucune base de données n'est nécessaire.

Le wiki LemonLDAP::NG est un Dokuwiki !

Il faut installer le plugin Dokuwiki disponible sur la page de téléchargement. Ce plugin utilise la variable d'environnement `REMOTE_USER` pour récupérer le nom d'utilisateur connecté.

## Installation

Télécharger le plugin et le copier dans le répertoire dokuwiki `inc/auth/` :

    cp lemonldap.class.php inc/auth/
    cp lemonldapuserdatabackend.class.php inc/auth/

## Configuration

### Configuration locale Dokuwiki

Éditer la configuration locale Dokuwiki (`conf/local.php`) et indiquer `lemonldap` comme type d'authentification :

    $conf[authtype] = lemonldap;

### Dokuwiki virtual host

Configurer l'hôte virtuel Dokuwiki comme n'importe quel autre hôte virtuel protégé.

Si Dokuwiki est protégé par un reverse-proxy LL::NG, convertir l'en-tête en variable d'environnement REMOTE_USER.

- Pour Apache:

    <VirtualHost *:80>
           ServerName dokuwiki.example.com

           PerlHeaderParserHandler Lemonldap::NG::Handler

           ...

    </VirtualHost>

- Pour Nginx:

    server {
      listen 80;
      server_name dokuwiki.example.com;
      root /path/to/application;
      # Requête interne d'authentification
      location = /lmauth {
        internal;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
        # Ignorer les données postées
        fastcgi_pass_request_body  off;
        fastcgi_param CONTENT_LENGTH "";
        # Conserver le nom d'hôte original
        fastcgi_param HOST $http_host;
        # Conserver la requête originale (le serveur LLNG va recevoir /llauth)
        fastcgi_param X_ORIGINAL_URI  $request_uri;
      }

      # Requêtes clients
      location / {
        auth_request /lmauth;
        auth_request_set $lmremote_user $upstream_http_lm_remote_user;
        auth_request_set $lmlocation $upstream_http_location;
        error_page 401 $lmlocation;
        try_files $uri $uri/ =404;

        ...

        include /etc/lemonldap-ng/nginx-lua-headers.conf;
      }
      location / {
        try_files $uri $uri/ =404;
      }
    }

### Hôte virtuel Dokuwiki dans le manager

Aller dans le manager et créer un nouvel hôte virtuel pour Dokuwiki.

Configurer simplement la règle d'accès.

Si LL::NG est utilisé par reverse-proxy, configurer l'en-tête `Auth-User`, aucun autre en-tête n'est utile.