SSD Nodes Learn 8GB de RAM — $66/an
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-02

BookStack, Wiki.js ou Outline : quel wiki auto-héberger ?

Comparez BookStack, Wiki.js et Outline selon le déploiement, l’édition, l’authentification et la recherche, avec un choix clair pour seul ou en équipe.

Quel wiki auto-hébergé devriez-vous utiliser

Un wiki auto-hébergé regroupe les documents de votre équipe dans un emplacement interrogeable depuis un serveur que vous contrôlez. BookStack, Wiki.js et Outline remplissent tous cette fonction. Ils diffèrent surtout par la quantité d’éléments à configurer avant l’affichage de la première page et par les personnes autorisées à se connecter.

BookStack est le plus simple à déployer et impose le plus sa structure. Wiki.js offre le plus grand choix d’éditeurs pour une même arborescence de pages. Outline fournit la meilleure expérience de rédaction des trois et n’autorise aucune connexion tant que vous n’avez pas configuré un fournisseur d’identité externe.

Tout ce qui suit provient de la documentation des projets et de leurs fichiers de configuration publiés. Il s’agit d’une comparaison des fonctionnalités, pas d’un benchmark. Les numéros de version et les prérequis sont datés, car les trois projets évoluent.

La structure est le vrai choix

BookStack impose la structure de votre contenu. Une page se trouve dans un livre, un livre peut contenir des chapitres et les étagères regroupent les livres. Vous ne pouvez pas inventer un cinquième niveau. Cette limite définit le produit : un nouvel auteur sait où placer une page, car elle ne peut être placée qu’à un seul endroit. En contrepartie, le contenu qui ne correspond pas à cette structure doit y être intégré de force.

Wiki.js utilise une arborescence de chemins, comme les dossiers sur un disque. Une page à ops/backup/restic se trouve à l’endroit que vous choisissez, et vous définissez la profondeur. Rien n’empêche deux personnes de classer le même sujet dans deux branches différentes. Une instance Wiki.js a donc besoin d’une personne responsable de l’arborescence.

Outline utilise des collections contenant des documents imbriqués dans d’autres documents. Pour déplacer un document, faites-le glisser avec la souris. C’est la solution la plus flexible des trois. C’est donc aussi celle qui dérive le plus facilement.

BookStack : l'installation minimale

BookStack est une application PHP qui utilise MySQL. En juillet 2026, la documentation indique comme prérequis PHP 8.2 ou une version ultérieure, ainsi que MySQL 8.0 ou MariaDB 10.6 ou une version ultérieure. Composer 2.2 ou une version ultérieure est également requis pour une installation depuis les sources. La branche de versions actuelle est 26.05.

Le projet publie un script d'installation pour chaque version d'Ubuntu. Le script pour 24.04 installe Apache, MySQL 8.0 et PHP 8.3.

wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.sh

Lisez l'avertissement présent dans ce script avant de l'exécuter. La documentation précise qu'il est « UNIQUEMENT DESTINÉ À UN OS NEUF. Il installera Apache, MySQL 8.0 et PHP 8.3 et POURRAIT ÉCRASER toute configuration web existante sur la machine ». Si un serveur répond déjà sur le port 80, le script s'approprie ce port et réécrit la configuration d'Apache. Utilisez plutôt des conteneurs dans ce cas, ou installez BookStack manuellement au-dessus de une stack LAMP existante sur Ubuntu 24.04.

La méthode avec conteneur utilise l'image LinuxServer.io, qui est celle recommandée par la documentation de BookStack. BookStack a besoin d'une clé de chiffrement des sessions et ne pourra pas servir de pages sans cette clé. Générez-la donc d'abord.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Copiez la valeur affichée dans APP_KEY, puis écrivez le service :

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=https://wiki.example.com
      - APP_KEY=paste_the_generated_key_here
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change_me
      - DB_DATABASE=bookstackapp
    volumes:
      - ./config:/config
    ports:
      - 6875:80
    restart: unless-stopped

APP_URL doit correspondre à l'adresse que les lecteurs saisissent réellement, avec le schéma et le port éventuel. Définissez-le sur http://localhost, puis servez le site en HTTPS. Sinon, les liens générés et les redirections pointeront vers le mauvais hôte, ce qui se traduira pour les lecteurs par une page de connexion qui revient en boucle sur elle-même. Si les fichiers Compose sont nouveaux pour vous, commencez par les bases de Docker Compose sur un VPS avant de suivre ce guide.

Démarrez l'application et vérifiez qu'elle répond, et pas seulement que le conteneur est en cours d'exécution :

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

Un 200 OK signifie que l'application PHP a démarré et a atteint la base de données. Un 500 signifie presque toujours que APP_KEY est vide ou que les identifiants de la base de données ne correspondent pas. docker compose logs bookstack indique lequel de ces deux problèmes est présent.

Wiki.js : une arborescence, plusieurs éditeurs

Wiki.js est une application Node.js. La configuration Docker documentée l'associe à PostgreSQL, mais le logiciel accepte également MySQL, MariaDB, MSSQL et SQLite. Voici le fichier compose de la page Docker du projet :

services:
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    init: true
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"
volumes:
  db-data:

Modifiez POSTGRES_PASSWORD et DB_PASS ensemble avant de l'exécuter, car ils constituent un seul identifiant d'authentification et la valeur d'exemple est publique. Le tag est volontairement figé sur ghcr.io/requarks/wiki:2. La documentation déconseille latest, car un changement de version majeure modifie le schéma de la base de données pendant qu'une instance est en cours d'exécution.

La version 2 est la branche à utiliser. En juillet 2026, la version 2 la plus récente est 2.5.314, publiée en mai 2026. La version 3 existe, et sa propre documentation indique : « Ce site concerne la version bêta instable de Wiki.js 3.0. Vous ne devez PAS l'installer en production. » Considérez le tag :3 comme une version de prévisualisation.

Au premier chargement, Wiki.js vous guide dans une procédure de configuration dans le navigateur qui crée le compte administrateur. Tant que vous ne l'avez pas terminée, toute personne pouvant atteindre le port accède à cet assistant. Placez donc le service derrière votre reverse proxy et TLS (sécurité de la couche transport) avant d'ouvrir le firewall. Un wiki placé sur son propre hostname se positionne naturellement derrière Traefik devant plusieurs applications Docker lorsque le serveur héberge plus que ce seul service.

Le choix de l'éditeur est la raison pour laquelle Wiki.js est souvent choisi. Une même instance peut contenir côte à côte des pages Markdown, des pages de l'éditeur visuel, des pages HTML brutes et des pages AsciiDoc. Cela facilite l'importation d'ancien contenu dans un format que vous préféreriez ne pas convertir. Cela peut aussi conduire à quatre styles éditoriaux différents dans un même wiki. Choisissez donc l'éditeur par défaut dès le premier jour et consignez cette décision.

Outline : l’éditeur le plus complet, avec les prérequis les plus lourds

Outline est généralement ce que les utilisateurs veulent dire lorsqu’ils recherchent un outil de notes qui ressemble à un produit commercial. C’est une application Node.js, et la version actuelle en juillet 2026 est 1.9.2. Son fichier d’environnement d’exemple indique ses besoins : PostgreSQL via DATABASE_URL, Redis via REDIS_URL, deux secrets aléatoires et un URL accessible publiquement.

openssl rand -hex 32
openssl rand -hex 32

Exécutez cette commande deux fois et conservez les deux valeurs. La première devient SECRET_KEY et la seconde UTILS_SECRET. La partie principale du fichier d’environnement ressemble alors à ceci :

NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

PGSSLMODE=disable est correct uniquement lorsque la base de données se trouve sur la même machine ou sur le même réseau Docker. Supprimez-le pour une base de données accessible sur le réseau, sinon la connexion circule en clair. Les pièces jointes ne vous imposent plus d’utiliser un object storage : FILE_STORAGE=local enregistre les fichiers uploadés dans le répertoire indiqué précédemment. Ce répertoire doit correspondre à un volume accessible en écriture par le conteneur et inclus dans vos sauvegardes. Définissez plutôt FILE_STORAGE=s3 avec les valeurs AWS_* si vous voulez stocker ces fichiers dans un bucket compatible S3.

Voici le point qui surprend les utilisateurs. Outline ne possède pas de système intégré de connexion par nom d’utilisateur et mot de passe. Sa configuration d’exemple indique que les identifiants d’un fournisseur tiers sont obligatoires : « au moins UN de ces éléments est requis pour une installation fonctionnelle, sinon aucune option de connexion ne sera disponible ». Les fournisseurs documentés incluent Google, Slack, Microsoft Entra, Discord et tout serveur OpenID Connect (OIDC) générique via OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI et OIDC_USERINFO_URI.

Le coût réel d’Outline est donc Outline, PostgreSQL, Redis et un fournisseur d’identité. Si votre équipe se connecte déjà avec Google Workspace ou Microsoft Entra, ce dernier élément vous demande dix minutes et Outline devient très intéressant. Dans le cas contraire, vous devez également auto-héberger un service comme Keycloak ou Authentik, ce qui ajoute un second service à mettre à jour et à sauvegarder. Prévoyez suffisamment de mémoire : les recommandations d’Outline indiquent environ 512 MB par processus web, défini par WEB_CONCURRENCY, en plus de la base de données et de Redis.

Comment chacun gère les droits de lecture

BookStack propose par défaut des comptes locaux avec adresse e-mail et mot de passe. Il prend également en charge LDAP, SAML2 et OIDC. Les permissions se définissent par rôle et peuvent être remplacées pour une étagère, un livre, un chapitre ou une page spécifique. Comme la hiérarchie est fixe, les permissions sont héritées selon une logique prévisible.

Wiki.js fournit également des comptes locaux et ajoute une longue liste de stratégies que vous activez dans l’interface d’administration. Ses règles de page autorisent ou refusent l’accès selon un modèle de chemin. Cette fonction est puissante, mais il est facile de se tromper, car une règle écrite pour ops/* couvre silencieusement toutes les pages que vous classez ensuite sous ce chemin.

Outline délègue entièrement cette gestion. L’appartenance dépend de votre fournisseur d’identité. Dans Outline, vous contrôlez l’accès par collection et par groupe. Aucun compte local ne reste lorsqu’une personne quitte l’entreprise. C’est un avantage réel lorsque le fournisseur d’identité est déjà le système utilisé pour supprimer les accès.

Fonctionnement de la recherche dans chaque outil

La recherche permet à un wiki de justifier son utilisation ou de devenir un dossier rempli de fichiers oubliés.

BookStack recherche dans la base de données et fournit aux lecteurs un langage de requête qu'ils peuvent apprendre en une minute. Entourer une expression de guillemets, comme dans "london meeting", exige la présence de cette chaîne exacte. Les crochets recherchent les tags : [location=london] effectue la recherche sur le nom du tag, sa valeur ou les deux, avec notamment les comparaisons !=, >= et like. Les accolades filtrent les métadonnées, comme dans {created_after:2016-12-30}. Tout terme exact, de tag ou de filtre peut être exclu en le préfixant par -. BookStack limite le nombre de termes de chaque type dans une requête. Une requête très longue est donc tronquée au lieu d'être exécutée.

Wiki.js traite la recherche comme un module interchangeable. Les moteurs documentés sont un moteur de base de données, un moteur PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch et Azure Search. Le moteur de base convient à quelques centaines de pages. Si vous utilisez PostgreSQL, sélectionnez le moteur PostgreSQL dans la zone d'administration, car il utilise l'index full text de la base de données au lieu d'une simple correspondance. Réservez Elasticsearch à un wiki suffisamment volumineux pour justifier l'exploitation et la mise à jour d'un second service de recherche.

Outline utilise les index full text de PostgreSQL. Il n'y a aucun moteur à sélectionner ni aucun paramètre à ajuster. La recherche porte également sur le texte des documents importés. Pour un wiki d'équipe comptant quelques milliers de documents, c'est la solution qui demande le moins de travail des trois. Vous ne disposez toutefois d'aucun réglage à modifier si la recherche devient trop lente.

Laquelle vous convient

Choisissez BookStack si vous voulez que le wiki fonctionne cet après-midi et que vous préférez discuter du contenu plutôt que de la structure. Il comporte le moins d’éléments mobiles : une application PHP et une base de données MySQL. Il convient aux procédures internes et à la documentation destinée aux clients. Il convient aussi aux équipes dont la plupart des rédacteurs ne sont pas ingénieurs. C’est également le plus facile des trois à sauvegarder, car tout l’état se résume à un dump de base de données et au répertoire des fichiers importés.

Choisissez Wiki.js si vous avez besoin d’un éditeur précis ou d’une stratégie d’authentification précise que les autres n’offrent pas, ou si vous importez un grand volume de Markdown ou d’AsciiDoc existant et souhaitez conserver la structure des chemins. Acceptez d’exécuter une stack plus lourde et verrouillez le tag de version majeure.

Choisissez Outline si la qualité de rédaction est prioritaire, si le wiki est destiné à une équipe plutôt qu’au public et si vous disposez déjà d’un fournisseur d’identité. Cette configuration vous donne en échange un éditeur que les utilisateurs apprécient réellement. Ne le choisissez pas comme première application auto-hébergée.

Si aucun des trois ne convient, le problème vient généralement du type de contenu. Les factures et les contrats numérisés doivent être stockés dans un système de gestion documentaire tel que Paperless-ngx plutôt que dans un wiki. Les y forcer explique pourquoi tant de wikis finissent à l’abandon. Pour avoir une vue plus large des applications qui méritent une place sur votre propre serveur, consultez la sélection d’applications auto-hébergées pour 2026.

Dimensionnement et sauvegardes

Les trois solutions tiennent sur un petit VPS, mais le minimum réaliste varie selon les composants utilisés par chacune. BookStack utilise un processus applicatif et MySQL. Wiki.js utilise un processus Node et PostgreSQL. Outline utilise un processus Node, PostgreSQL et Redis, généralement avec un fournisseur d’identité en plus. Il faut donc lui attribuer davantage de mémoire.

Sauvegardez la base de données et les fichiers téléversés ensemble. Restaurez-les ensuite une fois dans une instance temporaire avant de vous fier à cette sauvegarde. Une sauvegarde de wiki qui n’a jamais été restaurée n’est qu’une supposition. Pour BookStack, cela signifie mysqldump et le volume /config. Pour Wiki.js et Outline, cela signifie pg_dump et le volume de données. Pour Outline, sauvegardez également ce qui se trouve dans FILE_STORAGE_LOCAL_ROOT_DIR.

FAQ

Quel wiki auto-hébergé est le plus facile à installer ?

BookStack. Il s’agit d’une application PHP unique avec une base de données MySQL. Le projet fournit un script d’installation pour Ubuntu 24.04 qui configure Apache, MySQL 8.0 et PHP 8.3 en une seule exécution. L’image de conteneur nécessite uniquement un APP_KEY et les identifiants de la base de données. Wiki.js ajoute un runtime Node et un serveur PostgreSQL. Outline ajoute en plus Redis et un fournisseur d’identité externe.

Puis-je utiliser Outline sans Google ni un autre fournisseur SSO ?

Non. Outline ne propose pas de connexion locale avec nom d’utilisateur et mot de passe. Sa configuration d’exemple indique qu’au moins un fournisseur de connexion tiers est requis. Sinon, aucune option de connexion n’est disponible. Vous pouvez utiliser Google, Slack, Microsoft Entra, Discord ou n’importe quel serveur OpenID Connect générique, comme Keycloak ou Authentik auto-hébergé. L’exécution de ce fournisseur fait partie du coût d’exploitation d’Outline.

Dois-je installer Wiki.js 3 ou Wiki.js 2 ?

La version 2. En juillet 2026, la dernière version 2 est 2.5.314, publiée en mai 2026. La documentation de la version 3 précise qu’il s’agit d’une bêta instable qui ne doit pas être installée en production. Épinglez votre image sur ghcr.io/requarks/wiki:2 plutôt que sur latest, car un changement de version majeure modifie le schéma de la base de données d’une instance en fonctionnement.

Lequel offre la meilleure recherche ?

Ils sont performants dans des domaines différents. BookStack fournit aux lecteurs un langage de requête avec des expressions exactes, des filtres par tags comme [location=london] et des filtres de métadonnées comme {created_after:2016-12-30}. Chacun de ces termes peut être exclu avec un - placé au début. Outline ne nécessite aucune configuration et recherche dans le texte des fichiers importés. Wiki.js est le plus configurable, car vous choisissez le moteur. Le moteur PostgreSQL mérite d’être adopté dès que votre wiki dépasse quelques centaines de pages.

Puis-je déplacer ultérieurement mon contenu d’une solution à une autre ?

Partiellement, et vous devez prévoir un travail manuel. Les trois solutions exportent et importent du Markdown. Le texte des pages est donc généralement conservé. La structure ne l’est pas correctement : les livres et chapitres de BookStack n’ont pas d’équivalent dans les documents imbriqués d’Outline, et les chemins de Wiki.js ne correspondent pas à la hiérarchie fixe de BookStack. Les pièces jointes, les permissions et l’historique des pages sont les éléments les plus susceptibles d’être perdus. Exportez donc un échantillon et vérifiez-les avant de vous engager dans une migration.

#bookstack#wikijs#outline#wiki#auto-hébergement#knowledge-base