Files
wiki/Catalogue-Self-Hosted/apps/app-wikidocs.md
T
2026-06-09 18:40:21 +02:00

6.6 KiB


title: WikiDocs created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, wiki, php, flat-file, markdown, multi-langue, wysiwyg, katex, docker] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Wiki, https://github.com/Zavy86/WikiDocs, https://www.wikidocs.app/]

📗 WikiDocs

Moteur wiki flat-file PHP sans base de données : un wiki léger qui stocke tout en Markdown sur disque, avec éditeur WYSIWYG, support multi-langue, mathématiques KaTeX et révisions illimitées.

📋 Informations Générales

Champ Valeur
Site web wikidocs.app
GitHub Zavy86/WikiDocs
Licence MIT
Langage PHP
Étoiles GitHub 497
Dernière MAJ 2026-05-31 (v1.0.89)
Catégorie cat-wiki

📝 Description

WikiDocs se présente comme "un moteur wiki flat-file Markdown sans base de données". Tout le contenu est stocké en fichiers .md bruts sur le disque, ce qui rend les sauvegardes triviales (tar du dossier datasets/) et la migration vers un autre système possible à tout moment — pas de vendor lock-in, pas de base PostgreSQL à maintenir. Le projet est écrit en PHP procédural/OOP sans framework lourd, ce qui le rend très rapide à déployer.

L'éditeur WYSIWYG intégré transforme WikiDocs en alternative crédible aux wiki Markdown "code-first" : on n'a pas besoin de connaître la syntaxe Markdown pour rédiger. Les pages supportent les révisions illimitées, les pièces jointes, les uploads d'images (y compris depuis le presse-papier), les namespaces pour organiser l'arborescence, et un index + sitemap auto-générés. WikiDocs intègre aussi KaTeX pour les formules mathématiques, le syntax highlighting pour le code, le dark mode et un support multi-langue complet (italien, anglais, allemand, etc.).

Côté sécurité, WikiDocs a fait l'objet d'un durcissement majeur en 2026 (v1.0.86+) corrigeant du XSS stocké, du CSRF et des vulnérabilités de type path traversal. Le projet bloque désormais les tags HTML dangereux (<script>, <iframe> non approuvés, <object>, <form>, etc.) via une allowlist et un sanitizer ciblé. C'est un wiki particulièrement adapté aux utilisateurs qui veulent la simplicité d'un flat-file combinée à un rendu visuel moderne et un multilinguisme natif, sans la complexité d'un Wiki.js ou d'un BookStack.

🚀 Installation

Option recommandée : Docker

# docker-compose.yml
services:
  wikidocs:
    image: zavy86/wikidocs
    container_name: wikidocs
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    ports:
      - "8090:80"
    volumes:
      - ./datasets:/datasets
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80/"]
      interval: 30s
      timeout: 10s
      retries: 3

L'image tourne sous Apache + PHP. Le dossier datasets/ contient toutes les pages, configurations, images et pièces jointes : un backup = un tar de ce dossier.

Option 2 : Docker run (test rapide)

docker run -d -p 80:80 --name wikidocs \
  -v /path/to/datasets:/datasets \
  -e PUID=1000 -e PGID=1000 \
  zavy86/wikidocs

Option 3 : Installation manuelle (LAMP)

git clone https://github.com/Zavy86/wikidocs.git
cd wikidocs
cp config.sample.inc.php datasets/config.inc.php
# Éditer datasets/config.inc.php (CHEMIN, paramètres)
# Servir le dossier public/ avec Apache (mod_rewrite requis) ou Nginx

Configuration Nginx recommandée :

location / {
  if (!-e $request_filename) {
    rewrite ^/(.*)$ /index.php?doc=$1 last;
  }
  try_files $uri $uri/ =404;
}

Configuration initiale

Au premier accès, exécuter setup.php (auto-supprimé après) ou éditer manuellement datasets/config.inc.php.

⚙️ Configuration

  • Fichier datasets/config.inc.php : configuration centrale (chemin, langue, debug, etc.).
  • Multi-langue : fichiers de traduction dans locales/, langue par défaut configurable.
  • Namespaces : préfixes de dossiers (ex. docs/, recettes/) pour organiser les pages.
  • Custom CSS : déposer un fichier styles/styles-custom.css pour surcharger le thème.
  • ALLOWED_IFRAME_HOSTS : variable admin pour autoriser YouTube/Vimeo par défaut.
  • Sauvegardes : cp -r datasets/ backup-$(date +%F)/ et le wiki est sauvegardé.

🔄 Alternatives

Open Source

  • app-dokuwiki — Wiki PHP flat-file historique et ultra-mature
  • app-wiki-go — Wiki Go flat-file plus moderne avec Kanban
  • app-leafwiki — Wiki Go single-binary minimaliste
  • app-otter-wiki — Wiki Python stocké en Git
  • app-pepperminty-wiki — Wiki PHP single-file
  • Raneto — Knowledge base Markdown en Node.js
  • Wiki.js — Wiki Node.js/Vue, plus complet

Propriétaires

  • Notion — Wiki/notes moderne
  • Confluence — Wiki d'entreprise
  • Slab — Knowledge base d'équipe
  • Dropbox Paper — Documents collaboratifs

🔐 Sécurité

  • Flat-file : pas de base de données = surface d'attaque réduite (pas d'injection SQL).
  • Durcissement 2026 : XSS, CSRF, path traversal corrigés en v1.0.86+ ; sanitizer HTML avec allowlist.
  • HTTPS obligatoire via reverse proxy (Nginx, Caddy, Traefik).
  • Permissions fichiers : PUID/PGID pour ne pas faire tourner l'app en root.
  • ⚠️ Allowlist iframe : ne pas ajouter de domaines non vérifiés dans ALLOWED_IFRAME_HOSTS.
  • Sauvegardes : triviales (tar du dossier datasets/), à automatiser.
  • Mises à jour : le projet sort régulièrement des patchs de sécurité, suivre les releases.
  • ⚠️ Le debug doit rester désactivé en production (paramètre dans config.inc.php).

📚 Ressources

Pages Liées