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
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
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'
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 :
- Cliquer sur « Administrer ».
- Puis choisir « Paramètres de style du thème (template) »
- Modifier le paramètre « Largeur du site complet » avec 100%
Affichage titres
Pour afficher le titre des pages dans les menus plutôt que le nom des pages :
- Cliquer sur « Administrer ».
- Puis choisir « Paramètres de configuration »
- Aller à la partie « Paramètre d'affichage » en cliquant sur le menu correspondant sur la droite.
- Changer le paramètre « Utiliser le titre de premier niveau pour le nom de la page » par « Toujours » ou « Navigation seulement »
Ouverture des liens
- Aller dans le menu « Administrer » puis « Paramètres de configuration ».
- Chercher target dans la partie « Paramètres des liens ».
- Définir la cible désirée en fonction du type de lien
- _blank : ouvre un lien dans une nouvelle fenêtre
- _tab : ouvre un lien dans un nouvel onglet.
- _self ou vide : ouvre un lien dans la même fenêtre
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
- Aller dans le menu « Administrer » puis « Paramètres de configuration ».
- 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
- Certificat
Positionnement du certificat EUROPE-Root-CA-B64.cer dans le répertoire /etc/ldap/certs
- Prise en compte
Modification du fichier conf/local.protected.php :
$conf['plugin']['authldap']['server'] = 'ldaps://server1 ldaps://server2 ...'; $conf['plugin']['authldap']['port'] = 636;
Retour en identification locale
Editer le fichier conf/local.protected.php et modifier la ligne :
$conf['authtype'] = 'authldap';
par
$conf['authtype'] = 'authplain';
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
- Installer le package php-gd
sudo apt-get install php-gd
- Installer le plugin geophp. Egalement disponible sur Sourceforge.
- Installer le plugin OpenLayersMap par le gestionnaire ou manuellement.
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.
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>
- id : identifiant de la carte, unique sur la page.
- width : facultatif (valeur par défaut 550px).
- height : facultatif (valeur par défaut 450px).
- zoom : facultatif (autozoom par défaut).
- lat : facultatif. Permet de centrer correctement la carte.
- lon : facultatif. Permet de centrer correctement la carte.
- baselyr : facultatif. OpenStreetMap par défaut.
- gpxfile : facultatif. Permet d'afficher une trace GPX sur la carte.
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 :
User homepage
Activation
- Aller dans les paramètres de configuration du plugin Userhomepage
- Cocher la case « Créer les espaces privés des utilisateurs »
- Remplacer le contenu de la page start.txt à la racine par
{{page>user:@USER@:start}}
- Créer le contenu désiré sous user:<login>:start. Par exemple :
====== Contenu du site ======
==== Bibles ====
{{indexmenu>all:bibles.#1|context skipfile=/sidebar/}}
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 :
- Suppression des fichiers historiques de plus de 30 jours (à voir si l'on souhaite garder l'historique des pages … ou pas).
- Suppression des fichiers de verrouillage de plus de 1 jour.
- Suppression des fichiers du cache de plus de 30 jours.
- Suppression des répertoires vides.
- 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
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; }
Syntaxe
Syntax Highlighting
- apache
- awk
- bash
- basic4gl
- batch
- cmake
- cobol
- c
- cpp
- csharp
- css
- delphi
- dos
- fortran
- html
- html5
- ini
- inno
- java5
- java
- javascript
- lisp
- make
- mysql
- nagios
- nginx
- oracle11
- oracle8
- pascal
- perl6
- perl
- php
- postgresql
- postscript
- powershell
- prolog
- properties
- python
- qbasic
- reg
- rexx
- rpmspec
- ruby
- sql
- sshconfig
- tcl
- teraterm
- text
- vb
- vbscript
- vim
- xml
- yaml
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) :
- Créer le fichier conf/interwiki.local.conf avec le contenu suivant :
mailto mailto://{NAME}
- Dans le wiki ajouter un lien du type :
[[mailto>toto@free.fr?cc=truc@machin.com&subject=Sujet du mail&body=contenu du mail]]
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
- Cliquer sur « Administrer ».
- Puis choisir « Paramètres de configuration »
- Aller à la partie « Fonctionnalités expérimentales » en cliquant sur le menu correspondant sur la droite.
- Décocher la ligne correspondant à defer_js « Attendre que le code HTML des pages soit analysé avant d'exécuter le javascript. Améliore la vitesse de chargement perçue, mais pourrait casser un petit nombre de greffons. »
