Table des matières

Dokuwiki


Installation

Packages prérequis

Ubuntu à partir de 18.04

sudo apt-get install apache2 php mysql-server libapache2-mod-php php-mysql php-ldap php-zip php-mbstring php-xml

Dokuwiki

cd /var/www/html
sudo wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
sudo tar xvf dokuwiki-stable.tgz
sudo mv dokuwiki-*/ dokuwiki
sudo chown -R www-data:www-data dokuwiki

Haut de page

Configuration apache

Configuration du site

Fichier de configuration

dokuwiki.conf
<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerName it.wiki.acs.altran.com
                DocumentRoot "/var/www/html/it.wiki"
                ErrorLog ${APACHE_LOG_DIR}/it.wiki.error.log
                CustomLog ${APACHE_LOG_DIR}/it.wiki.access.log combined
 
                Include "sites-available/security.conf"
 
                SSLEngine on
                SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 
                AliasMatch ^/dokuwiki/sites/[^/]+$      /var/www/html/it.wiki/
                AliasMatch ^/dokuwiki/sites/[^/]+/(.*)$ /var/www/html/it.wiki/$1
                Alias      /dokuwiki                    /var/www/html/it.wiki/
 
                <Directory /var/www/html/it.wiki/>
                        Options +FollowSymLinks
                        AllowOverride All
                        order allow,deny
                        Allow from all
                        <IfModule mod_rewrite.c>
                                # Uncomment to implement server-side URL rewriting
                                # (cf. <http://www.dokuwiki.org/config:userewrite>).
                                        # Do *not* mix that with multisite!
                                #RewriteEngine on
                                #RewriteBase /dokuwiki
                                #RewriteRule ^lib                      - [L]
                                #RewriteRule ^doku.php                 - [L]
                                #RewriteRule ^feed.php                 - [L]
                                #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]
                                #RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
                        </IfModule>
                </Directory>
                <Directory /var/www/html/it.wiki/bin>
                        Require all denied
                </Directory>
                <Directory /var/www/html/it.wiki/data>
                        Require all denied
                </Directory>
         </VirtualHost>
</IfModule>

Prise en compte

sudo a2enmod ssl
sudo a2ensite dokuwiki
sudo systemctl reload apache2

Sécurisation

Activation ssl

sudo a2enmod ssl
sudo systemctl reload apache2
Eventuellement générer un certificat pour le nom de domaine.

Sécurisation des entêtes http

sudo a2enmod headers
sudo systemctl reload apache2

Ajouter les lignes suivantes à la configuration apache :

Header always set Strict-Transport-Security "max-age=15552001; includeSubDomains;"
Header always append X-Frame-Options DENY
Header set X-Content-Type-Options nosniff
Header set X-XSS-Protection "1; mode=block"
Header set Content-Security-Policy "default-src 'self' ; script-src 'self' 'unsafe-inline'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'"
Header set X-Permitted-Cross-Domain-Policies "none"
Header set Referrer-Policy "no-referrer"
Header set Expect-CT 'enforce, max-age=43200'

Haut de page

Configuration

Configuration post installation

La configuration se fait en lancant l'url http://<url-wiki>/install.php

Gestion des droits

Aller dans le menu « Administrer » puis « Gestion de la liste des contrôles d'accès (ACL) ».

Sélectionner la racine choisir le groupe @ALL et mettre autorisation « Aucune ».

Choisir le groupe @user et mettre autorisation « Envoyer ».

Largeur écran

Pour afficher les pages sur toute la largeur de l'écran :

Affichage titres

Pour afficher le titre des pages dans les menus plutôt que le nom des pages :

Ouverture des liens

  1. Aller dans le menu « Administrer » puis « Paramètres de configuration ».
  2. Chercher target dans la partie « Paramètres des liens ».
  3. Définir la cible désirée en fonction du type de lien

Les autres valeurs possibles comme _parent ou _top ne sont utiles que si votre thème utilise les frames. Dans ce cas, vos devriez savoir à quoi ils servent.

Changement signature

Il est possible de modifier la signature insérée avec le bouton prévu à cet effet.

Paramètre

  1. Aller dans le menu « Administrer » puis « Paramètres de configuration ».
  2. Chercher signature dans la partie « Paramètres d'affichage».

Il est possible de modifier l'interprétation par exemple pour ajouter un lien en haut de page on mettra en paramètre :

[[@NAMESPACE@|Haut de page]]

et on modifiera le script comme indiqué ci-dessous

Modification script php

Possibilité de modifier la fonction toolbar_signature dans le script inc/toolbar.php. Ajouter la ligne suivante pour interpréter un paramètre @NAMESPACE@ correspondant au namespace de la page courante par exemple :

 $sig = str_replace('@NAMESPACE@',$INFO['id'],$sig);

Identification

Passage en LDAPS

Positionnement du certificat EUROPE-Root-CA-B64.cer dans le répertoire /etc/ldap/certs

Modification du fichier conf/local.protected.php :

$conf['plugin']['authldap']['server'] = 'ldaps://server1 ldaps://server2  ...';
$conf['plugin']['authldap']['port'] = 636;
La précision du port n'est pas indispensable étant donné que l'on utilise le port par défaut pour le protocole ldaps.

Retour en identification locale

Editer le fichier conf/local.protected.php et modifier la ligne :

$conf['authtype'] = 'authldap';

par

$conf['authtype'] = 'authplain';

Haut de page

Plugins

Installation

Manuelle

En cas de problème il est possible de procéder à une installation manuelle (ou mise à jour). Il suffit de télécharger le paquet, d'extraire le fichier plugin.info.txt qui contient le répertoire de destination avec la variable base. Il suffit ensuite d'extraire l'archive dans le répertoire lib/plugins/<base>

Liste

Fonction Page du plugin
Couleur Color
Export au format pdf Dw2Pdf
Edition de tableau Edittable
Gallerie d'images Gallery
Inclusion de section/page Include
Menu index des pages du wiki Indexmenu
Touches clavier Keyboard
Renommage de page Move
Ajout de notes colorées Note
Export openoffice ODT (export OpenOffice)
Cartographie Openlayersmap
Export du site en html ou pdf Site Export
Syntaxe de typographie Typography
Mise à jour Wiki Upgrade
Page d'accueil personnalisée User homepage

Répertoire d'installation

Les plugins sont installés dans le sous répertoire lib/plugins.

Mise à jour

En cas d'erreur lié à un dépassement de tempo, modifier la variable max_execution_time dans le fichier /etc/php/8.1/apache2/php.ini (30s par défaut)

max_execution_time = 180

Puis redémarrer apache

sudo systemctl restart apache2

Openlayers map

Installation

sudo apt-get install php-gd
En cas d'installation manuelle, penser à activer le plugin ensuite.

Ajout du type mime gpx

Ajouter la ligne suivante dans le fichier conf/mime.local.conf (Créer le fichier si nécessaire).

gpx      !application/gpx+xml

Ajouter une icône pour le type gpx sous lib/images/fileicons.

A partir de la version 2022-07-31 Igor, il faut mettre un fichier svg sous le répertoire lib/images/fileicons/svg

Utilisation

Uploader trace GPX

Ajouter la trace GPX à l'aide du gestionnaire de média « Ajouter des images ou autres fichiers ».

Insérer le code pour la carte

A l'aide du bouton spécifique ou en ajoutant directement le code :

<olmap id="cartex" width="600px" height="400px" zoom="15" lat="45.13" lon="2.42" baselyr="OpenStreetMap" gpxfile=":chemin:vers:le:fichier:gpx ">
</olmap>
Valeurs par défaut dans le fichier de conf lib/plugins/openlayersmap/conf/default.php
Il faut un espace derrière le nom du fichier gpx sinon la carte ne s'affiche pas.

Note

Pour ajouter des boutons à l'édition pour ajouter les 4 types de notes, ajouter le fichier scripts.js dans le répertoire lib/plugins/note

script.js
if(toolbar){
    toolbar[toolbar.length] = {"type":"format", "title":"note", "key":"",
                               "icon":"../../plugins/note/images/tb_note.png",
                               "open":"<note>", "close":"</note>"
                              };
    toolbar[toolbar.length] = {"type":"format", "title":"tip", "key":"",
                               "icon":"../../plugins/note/images/tb_tip.png",
                               "open":"<note tip>", "close":"</note>"
                              };
    toolbar[toolbar.length] = {"type":"format", "title":"important", "key":"",
                               "icon":"../../plugins/note/images/tb_important.png",
                               "open":"<note important>", "close":"</note>"
                              };
    toolbar[toolbar.length] = {"type":"format", "title":"warning", "key":"",
                               "icon":"../../plugins/note/images/tb_warning.png",
                               "open":"<note warning>", "close":"</note>"
                              };
}

Boutons

Pour ajouter des boutons pour les sections de code ou les touches clavier, se rendre dans le « Gestionnaire d'extension », faire une « installation manuelle » en sélectionnant le fichier zip suivant :

boutons.zip

User homepage

Activation

{{page>user:@USER@:start}}
====== Contenu du site ======

==== Bibles ====

{{indexmenu>all:bibles.#1|context skipfile=/sidebar/}}
Attention de donner l'accès à tout le monde au fichier start.txt à la racine

Haut de page

Répertoires

Liste

conf

Fichiers de configuration.

data/pages

Pages du wiki au format texte.

data/attic

Historique des pages du Wiki.

data/media

Fichiers téléchargés (Images, documents, …).

Nettoyage

Il est possible de faire un peu de ménage de temps en temps. Script automatique ci-dessous à adapter, il permet :

cleanup-wiki.sh
#!/bin/bash
 
cleanup()
{
        local data_path="$1"        # full path to data directory of wiki
        local retention_days="$2"   # number of days after which old files are to be removed
 
        # purge files older than ${retention_days} days from attic and media_attic (old revisions)
        find "${data_path}"/{media_,}attic/ -type f -not -name _dummy -mtime +${retention_days} -delete
 
        # remove stale lock files (files which are 1-2 days old)
        find "${data_path}"/locks/ -name '*.lock' -type f -mtime +1 -delete
 
        # remove files older than ${retention_days} days from the cache
        find "${data_path}"/cache/?/ -type f -not -name _dummy -mtime +${retention_days} -delete
 
        # remove empty directories
        find "${data_path}"/{attic,cache,index,locks,media,media_attic,media_meta,meta,pages,tmp}/ -mindepth 1 -type d -empty -delete
}
 
# cleanup DokuWiki installations (path to datadir, number of days)
# some examples:
 
if [ $# -eq 1 ]; then
        REP_WIKI="$1/data"
        if [ -d ${REP_WIKI} ]; then
                cleanup ${REP_WIKI} 30
        else
                printf "\n\t>>> Répertoire ${REP_WIKI} inexistant\n\n"
                exit 1
        fi
else
        printf "\n\t>>> Passer le répertoire du Dokuwiki en paramètre\n\n"
        exit 1
fi

Haut de page

Stylesheet

Les nouveaux styles doivent être définis dans le fichier conf/userstyle.css

Encadrer les titres de niveau 2

userstyle.css
h2 {
  margin: 2px;
  padding: 2em;
  border: 2px solid __text_alt__;
}

Réduire la marge sous les titres de niveau 3

userstyle.css
h3 {
  margin-bottom: 4px;
}

Définir la couleur des titres de niveau 2

userstyle.css
h2 {
  background-color: #74992e;
  color:#ff7f27;
}

Couleurs : color

Couleur Code
Blanc #ffffff
Rose #ffaec9
Rouge #ed1c24
Orange #ff7f27
Or #ffc90e
Jaune #fff200
Vert #22b14c
Vert clair #b5e61d
Turquoise #00a2e8
Bleu ciel #99d9ea
Marron #a44340
Noir #000000

Taille : font-size

Valeur
medium
xx-small
x-small
small
large
x-large
xx-large

Style de caractères

font-style:normal;
font-style:italic;                              /* texte en italique                                */
font-weight: normal;
font-weight: bold;                              /* texte gras                                       */
font-weight: 100;                               /* normal=400 bold 700                              */
font-weight: 900;
text-decoration: normal;                        
text-decoration: underline;                     /* texte souligné                                   */
text-decoration: line-through;                  /* texte barré                                      */
text-decoration: underline dotted;              /* texte souligné de pointillés                     */
text-decoration: underline dotted red;          /* texte souligné de pointillés rouges              */
text-decoration: green wavy underline;          /* texte souligné d'une vague de couleur verte      */
text-decoration: underline overline #FF3028;    /* texte souligné et surligné avec la couleur codée */

Exemple de fichier

userstyle.css
h2 {
  margin: 2px;
  padding: 2em;
  border: 2px solid __text_alt__;
}
 
h3 {
  color:#ff7f27;
  font-style:normal;
  font-weight: bold;
  text-decoration: underline;
  font-size: large;
}

Haut de page

Syntaxe

Syntax Highlighting


Haut de page

Trucs & Astuces

Debug

Mise en place

Ajouter à la fin de l'url de la page ?do=debug ou &do=debug.

Résultat

Les traces se trouvent dans le fichier data/cache/debug.log.

Vider le cache

Pour toutes les pages

Enregistrer de nouveau les paramètres de configuration à partir du menu « Administrer / Paramètres de configuration » ou bien simplement en modifiant la date du fichier par la commande touch :

touch conf/local.php

Pour une page particulière

Ajouter simplement ?purge=true à l'url de la page ou bien &purge=true si l'url a déjà un paramètre.

Mailto

Pour pouvoir utiliser la syntaxe complète de mailto dans un lien (pour ajouter quelqu'un en copie, remplir le sujet par exemple) :

mailto    mailto://{NAME}
[[mailto>toto@free.fr?cc=truc@machin.com&subject=Sujet du mail&body=contenu du mail]]

Haut de page

Dépannage

IndexMenu plugin

Message d'erreur

Indexmenu Plugin: If you use the 'js'-option of the indexmenu plugin, you have to disable the 'defer_js'-setting. This setting is temporary, in the future the indexmenu plugin will be improved.

Solution


Haut de page

Sources


Haut de page