BookStack, Wiki.js ou Outline : quel wiki auto-héberger ?
Comparez BookStack, Wiki.js et Outline sur le déploiement, l’édition, la connexion et la recherche. Choisissez le plus adapté à un admin seul ou à une équipe.
Quel wiki auto-hébergé devriez-vous utiliser
Un wiki auto-hébergé rassemble les documents de votre équipe dans un emplacement consultable sur un serveur que vous contrôlez. BookStack, Wiki.js et Outline remplissent tous cette fonction. Ils se distinguent surtout par la quantité de composants à mettre en place avant d’afficher la première page et par les personnes autorisées à se connecter.
BookStack est le plus simple à déployer et impose la structure la plus stricte. Wiki.js offre le plus grand choix d’éditeurs dans une même arborescence de pages. Outline fournit la meilleure expérience de rédaction des trois, et sa configuration de production documentée nécessite un fournisseur d’identité externe pour créer l’espace de travail initial.
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 exigences sont associés à une date, car les trois projets évoluent.
La structure est le véritable 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 fait partie du produit : un nouvel auteur sait où placer une page, car elle ne peut aller qu’à un seul endroit. En contrepartie, le contenu qui ne correspond pas à cette structure doit y être forcé.
Wiki.js utilise une arborescence de chemins, comme les dossiers sur un disque. Une page à ops/backup/restic se trouve à l’endroit où vous la placez, et vous choisissez 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, il suffit de le faire glisser avec la souris. C’est la solution la plus flexible des trois, mais aussi celle qui dérive le plus facilement.
BookStack : l’installation la plus légère
BookStack est une application PHP qui utilise MySQL. En octobre 2026, les prérequis documentés sont 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 si vous installez l’application depuis les sources. La branche de versions actuelle est la 26.09, publiée le 24 septembre 2026, et la version stable la plus récente est la 26.09.2, une version de sécurité publiée le 20 octobre 2026. À partir de la version 26.09, une valeur APP_KEY doit être définie ; les étapes avec conteneur ci-dessous la couvrent déjà. BookStack a également publié une alerte de sécurité PHP critique le 21 octobre 2026 : mettez à jour les paquets PHP sous-jacents, ou récupérez et recréez le conteneur avec une image corrigée, car la version de BookStack seule ne confirme pas que PHP est corrigé.
Le projet prend officiellement en charge les scripts d’installation et la documentation pour les versions Ubuntu LTS qu’il liste, actuellement 22.04, 24.04 et 26.04. Il publie parfois des guides et des scripts non pris en charge pour d’autres environnements. Le script pour 24.04 installe Apache, MySQL 8.0 et PHP 8.3. Sur 26.04, utilisez plutôt installation-ubuntu-26.04.sh dans les commandes ci-dessous ; il installe MySQL 8.4 et PHP 8.5.
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.shLisez l’avertissement de 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 ». Le script pour 24.04 vérifie la présence d’une configuration Apache et de données MySQL existantes. S’il en trouve une, il abandonne avant l’installation. Utilisez plutôt des conteneurs, ou installez BookStack manuellement sur une stack LAMP existante sur Ubuntu 24.04.
La méthode avec conteneur utilise l’image LinuxServer.io, qui fait partie des deux configurations de conteneurs communautaires listées dans la documentation de BookStack. BookStack a besoin d’une clé de chiffrement des sessions et ne peut pas servir de pages sans elle. Générez-la donc d’abord.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeyCopiez la valeur affichée dans APP_KEY, puis écrivez le service. Ce service a également besoin d’une base de données MySQL ou MariaDB existante. Définissez les valeurs de DB_* pour qu’elles correspondent à cette base, car cet extrait ne crée pas de service de base de données.
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-stoppedAPP_URL doit correspondre à l’adresse que les lecteurs saisissent réellement, notamment au schéma et à l’éventuel port. Si vous le définissez sur http://localhost, puis servez le site en HTTPS, les liens générés et les redirections pointeront vers le mauvais hôte. Les lecteurs verront alors une page de connexion qui redirige vers elle-même. Si les fichiers Compose sont nouveaux pour vous, commencez par les bases de Docker Compose sur un VPS avant de suivre cette procédure.
Démarrez l’application et vérifiez qu’elle répond, au lieu de vérifier uniquement que le conteneur est en cours d’exécution :
docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/loginUn 200 OK signifie que l’application PHP a démarré et a atteint la base de données. Un 500 nécessite l’examen du journal d’erreurs de l’application. Par défaut, BookStack écrit ses erreurs dans un fichier journal plutôt que dans la sortie du conteneur. Ouvrez donc ./config/log/bookstack/laravel.log sur l’hôte pour voir la cause. docker compose logs bookstack affiche les propres messages de démarrage du conteneur, qui peuvent ne pas inclure l’erreur de l’application.
Wiki.js : une arborescence, plusieurs éditeurs
Wiki.js est une application Node.js. La configuration Docker documentée l’utilise avec 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 fournie en exemple est publique. Le tag est volontairement épinglé 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 sur une instance en fonctionnement.
La version 2 est la branche à utiliser. Au 27 octobre 2026, la dernière release de la version 2 est 2.5.317, une version de correction de bugs publiée le 23 octobre 2026, qui reconstruit l’image avec les dernières mises à jour de sécurité de Node. Les releases de la version 2 sont désormais publiées depuis un dépôt requarks/wiki-v2 distinct, et le tag d’image :2 les suit toujours. La version 3 est en bêta publique. Sa documentation d’installation indique que ses images portent les tags 3.0.0-beta et que les tags simples 3 et 3.0 ne fonctionneront pas avant la fin de la phase bêta. Considérez-la comme une version d’aperçu, pas comme une cible de production. La release précédente, 2.5.316 du 2 octobre 2026, a ajouté un utilitaire d’export pour transférer ultérieurement le contenu vers la version 3.
Au premier chargement, Wiki.js vous guide dans une configuration depuis le navigateur qui crée le compte administrateur. Tant que vous ne l’avez pas terminée, toute personne qui atteint le port voit cet assistant. Placez donc le service derrière votre reverse proxy et TLS (transport layer security) avant d’ouvrir le firewall. Un wiki utilisant son propre nom d’hôte s’intègre naturellement derrière Traefik devant plusieurs applications Docker lorsque le serveur héberge plusieurs services.
Le choix de l’éditeur est la raison pour laquelle on choisit Wiki.js. 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 aide lorsque vous importez d’anciens contenus dans un format que vous préférez ne pas convertir. C’est aussi un moyen de se retrouver avec quatre styles rédactionnels différents dans un même wiki. Décidez donc de l’éditeur par défaut dès le premier jour et consignez cette décision.
Outline : le meilleur éditeur, 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. Il s’agit d’une application Node.js. Au 27 octobre 2026, sa version actuelle est la 1.12.0, publiée le 23 octobre 2026. Cette version déplace son image Docker vers une version de Node qui corrige plusieurs vulnérabilités Node récemment divulguées. Mettez donc à jour les installations anciennes. Son fichier d’environnement d’exemple liste 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 32Exécutez cette commande deux fois et conservez les deux valeurs. La première devient SECRET_KEY et la seconde UTILS_SECRET. Le cœur du fichier d’environnement se présente alors comme suit :
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/dataPGSSLMODE=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. Omettez-le pour une base de données accessible sur un réseau, sinon la connexion circule en clair. Les pièces jointes ne vous obligent plus à utiliser un stockage objet : FILE_STORAGE=local écrit les fichiers envoyés dans le répertoire indiqué ci-dessus. Celui-ci doit être un volume dans lequel le conteneur peut écrire et qui est inclus dans vos sauvegardes. Définissez plutôt FILE_STORAGE=s3 avec les valeurs de AWS_* si vous voulez stocker ces fichiers dans un bucket compatible S3.
Voici maintenant le point qui surprend les utilisateurs. Outline n’intègre pas de connexion avec nom d’utilisateur et mot de passe. Sa propre configuration d’exemple précise que des identifiants de connexion tiers sont requis : « au moins UNE de ces options est requise pour une installation fonctionnelle, sinon vous n’aurez aucune option de connexion ». Les fournisseurs documentés comprennent 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. Les espaces de travail existants peuvent également activer les passkeys et les liens ou codes envoyés par e-mail. La connexion par e-mail nécessite SMTP et ne contourne pas le SSO pour les comptes associés à un fournisseur SSO.
Le coût réel de la configuration de production documentée d’Outline est donc Outline, PostgreSQL, Redis et un fournisseur d’identité. Si votre équipe utilise déjà Google Workspace ou Microsoft Entra pour se connecter, Outline devient très intéressant. Dans le cas contraire, vous hébergez également vous-même un service comme Keycloak ou Authentik, qui constitue un second service à corriger et à sauvegarder. Prévoyez suffisamment de mémoire : les recommandations d’Outline indiquent environ 512 Mo par processus web, défini par WEB_CONCURRENCY, en plus de la base de données et de Redis.
Gestion des droits de lecture
BookStack propose par défaut des comptes locaux avec adresse e-mail et mot de passe, et prend également en charge LDAP, SAML2 et OIDC. Les permissions sont définies par rôle et peuvent être remplacées pour une étagère, un livre, un chapitre ou une page. Les permissions des livres et des chapitres sont héritées par le contenu enfant, sauf remplacement explicite ; les permissions des étagères doivent être copiées explicitement sur les livres.
Wiki.js propose également des comptes locaux et ajoute une longue liste de stratégies à activer dans la zone d’administration. Ses règles de page accordent ou refusent l’accès selon un motif de chemin. Cette fonctionnalité est puissante, mais facile à mal configurer, car une règle définie pour ops/* couvre silencieusement toutes les pages que vous classerez ensuite sous ce chemin.
Outline utilise votre fournisseur d’identité pour l’appartenance SSO. Dans Outline, vous contrôlez l’accès par collection, document et groupe. Les utilisateurs supprimés du fournisseur d’identité sont déconnectés lorsqu’ils chargent Outline la fois suivante ; suspendez-les dans Outline pour fermer immédiatement leurs sessions existantes.
Fonctionnement de la recherche dans chaque solution
La recherche détermine si un wiki devient réellement utile ou reste un répertoire de fichiers oubliés.
BookStack effectue les recherches dans la base de données et fournit aux lecteurs un langage de requête qu’ils peuvent apprendre en une minute. Mettre une expression entre guillemets, comme dans "london meeting", impose de rechercher cette chaîne exacte. Les crochets recherchent les tags : [location=london] effectue une correspondance 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}. Il est possible d’exclure n’importe quel terme exact, de tag ou de filtre en le préfixant avec -. 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 enfichable. 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 effectue les correspondances dans les titres, les descriptions et les chemins, mais pas dans le contenu des pages. Si vous utilisez PostgreSQL, sélectionnez le moteur PostgreSQL dans la zone d’administration, car il utilise l’index de recherche plein texte de la base de données au lieu d’effectuer de simples correspondances. Conservez Elasticsearch pour un wiki suffisamment volumineux pour justifier l’exécution et la maintenance d’un second service de recherche.
Outline utilise les index de recherche plein texte de PostgreSQL. Sa recherche par mots-clés intégrée ne nécessite aucun service de recherche distinct. Pour un wiki d’équipe contenant quelques milliers de documents, c’est la solution qui demande le moins de travail parmi les trois.
Celui qui vous convient
Choisissez BookStack si vous voulez que le wiki fonctionne dès cet après-midi et que vous préférez discuter du contenu plutôt que de la structure. Il comporte le moins de composants : une application PHP et une base de données MySQL. Il convient aux procédures internes et à la documentation client, ainsi qu’aux équipes dont la plupart des rédacteurs ne sont pas ingénieurs. C’est aussi le plus facile des trois à sauvegarder, car son état tient dans un dump de base de données, les fichiers importés et la configuration .env, notamment APP_KEY.
Choisissez Wiki.js si vous avez besoin d’un éditeur précis ou d’une stratégie d’authentification particulière que les autres ne proposent pas, ou si vous importez un grand volume de fichiers Markdown ou AsciiDoc existants et voulez préserver 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 accès à l’éditeur que les utilisateurs apprécient réellement. N’en faites pas votre première application auto-hébergée.
Si aucun des trois ne vous convient, le problème vient généralement du type de contenu. Les factures et les contrats numérisés doivent être géré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. L’autre incompatibilité courante consiste à vouloir un espace de travail plutôt qu’un wiki, avec des documents, des tableaux et un tableau blanc sur un même canvas. Dans ce cas, un espace de travail AFFiNE auto-hébergé convient mieux que les trois solutions ci-dessus. Pour avoir une vue plus large des solutions qui méritent une place sur votre propre serveur, consultez la sélection de solutions d’auto-hébergement 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. C’est pourquoi il faut lui attribuer davantage de mémoire.
Sauvegardez ensemble la base de données et les fichiers téléversés, puis restaurez-les une fois dans une instance temporaire avant de vous fier à cette sauvegarde. Une sauvegarde de wiki qui n’a jamais été restaurée ne constitue qu’une hypothèse. Pour BookStack, cela signifie mysqldump ainsi que le volume /config. Pour Wiki.js et Outline, cela signifie pg_dump ainsi que le volume de données. Pour Outline, cela inclut également tout 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 seule application PHP avec une base de données MySQL, et 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 un APP_KEY, un APP_URL et les identifiants d’une base de données existante. Wiki.js ajoute un runtime Node et un serveur PostgreSQL, tandis qu’Outline ajoute Redis et un fournisseur d’identité externe pour sa configuration initiale documentée.
Puis-je utiliser Outline sans Google ni un autre fournisseur SSO ?
Sa configuration de production documentée nécessite un fournisseur pour créer l’espace de travail initial. 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 ne sera 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é. Les espaces de travail existants peuvent activer les passkeys ou les liens et codes envoyés par e-mail. La connexion par e-mail nécessite SMTP ; les comptes liés au SSO continuent d’utiliser ce fournisseur.
Dois-je installer Wiki.js 3 ou Wiki.js 2 ?
La version 2. Au 27 octobre 2026, la version 2 la plus récente est la 2.5.317, publiée le 23 octobre 2026, et la version 3 est encore en bêta ; ses images portent un tag 3.0.0-beta. É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 propose aux lecteurs un langage de requête avec recherche d’expressions exactes, filtres par tags tels que [location=london] et filtres de métadonnées tels que {created_after:2016-12-30} ; chacun de ces termes peut être exclu avec un - au début. La recherche intégrée par mots-clés d’Outline ne nécessite aucun service de recherche distinct. Wiki.js est le plus configurable, car vous choisissez le moteur ; le moteur PostgreSQL recherche dans le contenu des pages, contrairement au moteur de base.
Puis-je transférer mon contenu de l’un à l’autre plus tard ?
En partie, mais prévoyez du travail manuel. Les trois solutions exportent du Markdown, mais l’import intégré de BookStack accepte son format Portable ZIP ; le Markdown seul ne permet donc pas d’importer directement du contenu dans BookStack. La structure est mal conservée : 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.