DokuWiki, un wiki "One size fits all"

Didier Villers (UMONS & ASBL LoLiGrUB)

didier.villers@umons.ac.be

20 février 2020, conférence “Jeudis du Libre”

Disclaimer

  • pas de connaissance php
  • pas consultant DokuWiki
  • utilisateur depuis près de 10 ans

Introduction

Un wiki, pour quoi faire ?

  • Système de gestion de contenu (Content Management System, CMS)
  • Wiki : création, modification et présentation (web)
  • Syntaxe simple (langage de balises)
  • Travail collaboratif (collègues, étudiants,…)
  • Outils d'administration (extensions, mises à jour, paramétrisation)
  • Gestion de versions, gestionnaire de fichiers intégré
  • Recherche indexée sur l'ensemble du site

Pourquoi DokuWiki

  • Logiciel sous licence libre (GPL2), gratuit
  • Classique : GNU/Linux - Apache2 - PHP
  • Pas de DB (fichiers textes)
  • Contrôle des accès (ACL)
  • Conçu pour les groupes, équipes
  • OK pour un usage individuel ou des pages publiques

Les concurrents

  • Mediawiki (php, DB, ACL)
  • Tiki wiki, Foswiki, moinmoin, BookStack, TWiki
  • Confluence (Atlassian), Drupal Wiki
  • TiddlyWiki, ZimWiki (personnels)

Pourquoi DokuWiki (2)

  • Projet à maturité (2004)
  • Performances (» 10⁵ pages, » 10⁴ pagepageviews/day)
  • Forte implication du créateur (Andreas Gohr)
  • Communauté, forum, créateurs d'extensions
  • Nombreux consultants (premium : CosmoCode.de)
  • 2726 stars on GitHub
  • (modules d'authentification)

Limitations

  • Pas d'éditions simultanées
  • indexation et recherches limitées
  • statistiques (pages populaires)
  • export XML
  • forum
  • chat

DW comme alternative à d'autres logiciels

  • Pour des fonctionnalités réduites, basiques :
    • evernote/onenote
    • office365/googledocs
    • MS Office, Libreoffice, LaTeX
    • doodle, framadate, limesurvey
    • Git/GitHub, wordpress
    • lecteur RSS, galerie photo, GED,…

Exemples de sites

Installation et administration

Préambule : le serveur

  • Serveur virtuel (VirtualBox)
  • Raspberry Pi, certains NAS
  • PC/portable, serveur classique
  • Hébergement dédié, mutualisé,…
  • Testé : Ubuntu server 18.04 LTS
    • OpenSSH server
    • Serveur LA(M)P
    • msmtp (emails)
    • module “rewrite” de Apache2

En pratique

sudo apt install apache2 php libapache2-mod-php
sudo apt install php-curl php-gd php-intl ...
    ... php-json php-mbstring php-xml php-zip
sudo usermod -a -G www-data admin_username
sudo apt install msmtp msmtp-mta
sudo nano /etc/msmtprc
sudo a2enmod rewrite
sudo systemctl restart apache2

Cf. https://dvillers.umons.ac.be/wiki/floss:config_ubuntu_server

Installer DokuWiki

  • Connexion et identification sur le serveur :
    • Linux :
      • ssh username@dns
      • ssh username@ip_address
    • Windows : terminal via le programme PuTTY

Installer DokuWiki (2)

cd /var/www/html
sudo mkdir wiki00
cd wiki00
sudo wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
sudo tar -xzvf dokuwiki-stable.tgz --strip-components=1
sudo rm dokuwiki-stable.tgz
sudo chown -R www-data:www-data /var/www/html/wiki00
cd /var/www/html/wiki00 (si on n'y était pas)
sudo find . ! -type d -exec chmod 660 {} \;
sudo find . -type d -exec chmod 770 {} \;

Installer DokuWiki (3 : initialisation)

  • Options :
    • Wiki Name
    • Enable ACL
    • Superuser, Full Name, E-Mail, Password
    • Initial ACL policy
    • Allow users to register themselves
  • sudo rm install.php

Installer DokuWiki (4 : premiers réglages)

  • menu “Administrer”
  • Paramètres de configuration
    • langue de l’interface → fr
    • mode de création des répertoires : 02770
    • mode de création des fichiers : 0660
    • Actions à désactiver : “s’enregistrer”
    • délai avant indexation : 60*60*24*5 → 60*5
    • notifications → email
    • activation (?) de l’abonnement aux pages + email expéditeur

Répertoires du wiki sur le serveur

  • bin - outils/scripts
  • inc - le code php
  • lib/exe - programmes accédés via la navigation
  • lib/images - images du wiki (icons, smileys, toolbar icons,…)
  • lib/plugins - extensions installées
  • lib/scripts - codes JavaScripts
  • lib/styles - feuilles de style CSS
  • lib/tpl - templates (thèmes visuels)

Répertoires (suite), à sauvegarder !

  • data/pages - pages actuelles
  • data/meta - méta-informations sur les pages (créateurs, abonnés,…)
  • data/media - fichiers media actuel (images, PDFs, …)
  • data/media_meta - métadonnées des media
  • data/attic - anciennes versions des pages
  • data/media_attic - anciennes versions des media
  • conf - réglages de configuration

Écrire

Pages et syntaxe d'écriture

Pages et syntaxe d'écriture (2)

  • Mise en forme de texte basique
  • Liens (externes, internes,…)
  • Découpage en sections
  • Images et autres fichiers Médias pris en charge
  • Listes
  • Citations, Tableaux
  • Notes, blocs, code,…
  • Agrégation de fils RSS
  • Sidebar : juste la créer…

Structure en namespaces

  • Pages organisées en structure arborescente
  • répertoires successifs = “namespaces” (et subnamespaces)
  • séparateur → “:”
  • navigation hypertextuelle entre les pages

Utilisateurs, groupes, ACL

utilisateurs

  • connexion (utilisateurs enregistrés)
  • Création de codes utilisateurs (admin)
  • Appartenance à un ou des groupes

Groupes d'utilisateurs

  • partagent les mêmes droits
  • préfixé par le caractère @
  • groupes spéciaux :
    • @ALL (tout le monde, même non connectés)
    • @user (tous les inscrits)
    • @admin

ACL (Access Control List)

Restrictions d'accès liées aux pages ou aux namespaces

  1. aucune (none)
  2. lire (read)
  3. modifier (edit)
  4. créer (create)
  5. téléverser sur le serveur (upload)
  6. effacer (delete)
  7. administrer (admin)

ACL (2)

  • Accès déterminés pour des utilisateurs ou groupes d'utilisateurs
  • groupe @ALL → limiter
  • groupes sélectionnés → autoriser

Le gestionnaire Multimédia

  • Sauvegarde et affichage : images, sons et vidéos
  • Interaction classiques (démarrer, arrêter, défiler)
  • Autres fichiers : pdfs, docs, zips,…
  • Insertion en cours d'édition
  • Gestionnaire Multimédia en mode pleine page
  • Documents → arborescence identique aux namespaces des pages
  • réglages de l'affichage (taille et position)

Le gestionnaire Multimédia (2)

Que fait-on de mieux grâce à DokuWiki

  • Écriture rapide, simple, réutilisable
  • Accès via tout navigateur
  • Travail collectif, accès contrôlés
  • Indexation et recherche sur l'ensemble du site
  • Importation - exportation (merci Pandoc !!)

Administration (level 2)

  • sauvegardes du site
  • mises à jour
  • copie
  • purge du cache, cleanup
  • installation d'extensions
  • Apparence (thèmes)
  • https (Apache2, SSL,… ) certbot

Extensions

  • Forme
    • extension de la syntaxe
    • inclusion d'éléments
  • Fonctionnalités additionnelles
  • administration, automatisation
  • ?? Dates, compatibilités,… ??

Quelques extensions

Thèmes (templates)

Quelques "plus", ...

  • indexation par les moteurs de recherche
  • plugin:farmer → ferme de wiki (animals)
  • Réglages fins :
    • Types MIME
    • Jolis URL
    • logos, favicon
    • fichier entities.conf
  • XML-RPC