Guide de déploiement

Héberger BookStack sur votre propre VPS

Déployer sur un VPS Cloud →

Tutoriel

Self-hosting

Héberger BookStack sur votre propre VPS

BookStack est une plateforme de documentation open source organisée en étagères, livres, chapitres et pages. Auto-hébergée sur un VPS, elle devient le wiki interne de votre équipe ou agence : recherche full-text, éditeur WYSIWYG, permissions granulaires. Ce guide couvre l'installation complète avec Docker Compose, la configuration SSL, le dépannage des erreurs courantes et la mise en place d'une sauvegarde fiable.

7 min de lecture5 étapes
Sommaire· Pourquoi self-héberger BookStack sur un VPS1/12
  1. 01Pourquoi self-héberger BookStack sur un VPS
  2. 02Bénéfices concrets d'un BookStack auto-hébergé
  3. 03Prérequis matériels et logiciels
  4. 04BookStack vs alternatives self-hosted
  5. 05Déployer BookStack avec Docker Compose et SSL
  6. 06Configuration avancée : SSO, LDAP et SAML
  7. 07Sauvegarder et restaurer BookStack
  8. 08Dépannage : erreurs courantes
  9. 09Problèmes fréquents et solutions
  10. 10Mettre à jour BookStack
  11. 11Astuce de sécurité
  12. 12Pour aller plus loin

Pourquoi self-héberger BookStack sur un VPS

BookStack se distingue par sa simplicité : là où d'autres wikis noient l'utilisateur sous les options, il impose une hiérarchie claire — étagères, livres, chapitres, pages — qui rend la documentation navigable immédiatement. Construit sur Laravel, il est léger et facile à maintenir. Auto-hébergé sur VPS, il garde toute votre documentation interne — procédures, runbooks, base de connaissances client — sur votre propre infrastructure, sans abonnement par utilisateur. Pour une agence qui documente ses projets ou une équipe technique qui centralise ses procédures, c'est un wiki privé que vous contrôlez de bout en bout, avec recherche full-text, gestion fine des permissions et éditeur WYSIWYG ou Markdown.

Bénéfices concrets d'un BookStack auto-hébergé

  • Structure claire en étagères/livres/chapitres/pages : documentation navigable sans effort.
  • Éditeur WYSIWYG et Markdown au choix, avec diagrammes Draw.io intégrés.
  • Permissions granulaires par rôle et par livre pour cloisonner les contenus sensibles.
  • Recherche full-text rapide sur l'ensemble de la base de connaissances.
  • Authentification LDAP, SAML ou OAuth pour s'intégrer à votre annuaire d'entreprise.
  • Empreinte légère : un VPS avec 2 Go de RAM suffit pour une documentation d'équipe.
  • Aucun abonnement par utilisateur — un nombre sans limite de membres de contributeurs sans surcoût.

Prérequis matériels et logiciels

BookStack est peu exigeant. Un VPS de 1 à 2 vCPU et 2 Go de RAM minimum héberge confortablement la documentation d'une équipe ; avec BookStack et MariaDB tournant ensemble, réserver 2 Go est le plancher recommandé — en dessous, les migrations Laravel au premier démarrage peuvent échouer par manque de mémoire. La consommation grimpe surtout avec le volume d'images uploadées.

Prévoyez 15 à 25 Go de SSD selon la quantité de pièces jointes. Côté logiciel : Docker 24+ et le plugin Compose v2 (docker compose sans tiret), un sous-domaine wiki.votredomaine.com avec un enregistrement A, et un accès SMTP pour les invitations et notifications par e-mail.

BookStack vs alternatives self-hosted

Faites défiler le tableau

OutilModèleRAM min.Point fort
BookStackLaravel + MariaDB2 GoHiérarchie livres/chapitres, WYSIWYG
Wiki.jsNode.js + DB au choix512 MoÉditeur moderne, Git sync
OutlineNode.js + PostgreSQL1 GoInterface Notion-like, API riche
ConfluenceSaaS / on-premise4 Go+Intégration Atlassian, mature

Déployer BookStack avec Docker Compose et SSL

  1. Préparer le VPS et installer Docker

    Connectez-vous en SSH puis installez Docker et le plugin Compose :

    curl -fsSL https://get.docker.com | sh
    apt install docker-compose-plugin
    mkdir -p /opt/bookstack && cd /opt/bookstack

    Vérifiez : docker compose version doit afficher v2.x ou supérieur. L'image communautaire lscr.io/linuxserver/bookstack est la plus répandue et la mieux maintenue pour un déploiement conteneurisé.

  2. Créer le fichier docker-compose.yml

    Créez /opt/bookstack/docker-compose.yml avec les deux services — MariaDB et BookStack — sur un réseau dédié :

    services:
      mariadb:
        image: mariadb:10.11
        environment:
          MYSQL_ROOT_PASSWORD: changeme_root
          MYSQL_DATABASE: bookstack
          MYSQL_USER: bookstack
          MYSQL_PASSWORD: changeme_bk
        volumes:
          - ./data/mariadb:/var/lib/mysql
        networks: [bookstack]
    
      bookstack:
        image: lscr.io/linuxserver/bookstack:latest
        environment:
          PUID: 1000
          PGID: 1000
          APP_URL: https://wiki.votredomaine.com
          DB_HOST: mariadb
          DB_USER: bookstack
          DB_PASS: changeme_bk
          DB_DATABASE: bookstack
          MAIL_DRIVER: smtp
          MAIL_HOST: smtp.votredomaine.com
          MAIL_PORT: 587
          MAIL_FROM: [email protected]
          MAIL_USERNAME: [email protected]
          MAIL_PASSWORD: votre_mot_de_passe_smtp
        ports:
          - "6875:80"
        volumes:
          - ./data/bookstack:/config
        depends_on: [mariadb]
        networks: [bookstack]
    
    networks:
      bookstack:

    APP_URL doit correspondre exactement à l'URL HTTPS finale. Une valeur incorrecte casse les liens internes et les uploads.

  3. Lancer la stack et vérifier les logs

    docker compose up -d
    docker compose logs -f bookstack

    Au premier démarrage, BookStack exécute automatiquement les migrations Laravel pour créer le schéma de la base. Attendez la ligne Server running on http://0.0.0.0:80 avant de continuer — cela prend 30 à 60 secondes.

  4. Configurer le reverse proxy et SSL

    Avec Caddy (gestion automatique du certificat) :

    wiki.votredomaine.com {
        reverse_proxy localhost:6875
    }

    Redémarrez Caddy : systemctl reload caddy.

    Avec Nginx + Certbot :

    server {
        listen 80;
        server_name wiki.votredomaine.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name wiki.votredomaine.com;
        ssl_certificate /etc/letsencrypt/live/wiki.votredomaine.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wiki.votredomaine.com/privkey.pem;
        location / {
            proxy_pass http://127.0.0.1:6875;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    Obtenez le certificat avec certbot --nginx -d wiki.votredomaine.com.

  5. Première connexion et sécurisation du compte admin

    Ouvrez https://wiki.votredomaine.com. Le compte par défaut est [email protected] avec le mot de passe password. Changez-les immédiatement dans Paramètres → Profil.

    Vérifiez ensuite que le SMTP fonctionne : Paramètres → Configuration des e-mails → Envoyer un e-mail de test. Si le test échoue, consultez les logs : docker compose logs bookstack | grep -i mail.

Configuration avancée : SSO, LDAP et SAML

BookStack prend en charge plusieurs mécanismes d'authentification centralisée, configurables via des variables d'environnement dans le docker-compose.yml.

LDAP / Active Directory : ajoutez les variables AUTH_METHOD=ldap, LDAP_SERVER, LDAP_BASE_DN, LDAP_USER_FILTER et LDAP_VERSION. Les utilisateurs se connectent alors avec leurs identifiants d'entreprise sans compte BookStack séparé.

SAML 2.0 (pour des fournisseurs comme Authentik, Keycloak ou Azure AD) : passez AUTH_METHOD=saml2 et renseignez SAML2_IDP_ENTITYID, SAML2_IDP_SSO et SAML2_IDP_SLO. La documentation officielle de BookStack fournit des exemples par fournisseur.

OAuth social (GitHub, Google, Slack) : chaque fournisseur a sa paire de variables *_APP_ID / *_APP_SECRET. Cette option est utile pour des équipes qui souhaitent éviter la gestion de mots de passe sans déployer un serveur LDAP.

Sauvegarder et restaurer BookStack

Une instance BookStack repose sur trois éléments : la base MariaDB, le dossier uploads (images et pièces jointes) et la valeur APP_KEY dans la configuration. Sans l'APP_KEY, les contenus chiffrés sont irrécupérables après restauration.

Script de sauvegarde quotidienne à placer dans /etc/cron.daily/bookstack-backup :

#!/bin/bash
BACKUP_DIR=/var/backups/bookstack
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d)
docker exec $(docker ps -qf name=mariadb) \
  mysqldump -u bookstack -pchangeme_bk bookstack \
  > $BACKUP_DIR/bookstack-db-$DATE.sql
tar -czf $BACKUP_DIR/bookstack-uploads-$DATE.tar.gz /opt/bookstack/data/bookstack/uploads
find $BACKUP_DIR -mtime +14 -delete

Copiez ensuite ces archives vers un stockage externe (S3, Backblaze B2, ou le stockage objet de votre VPS). Conservez l'APP_KEY dans un gestionnaire de secrets hors serveur — c'est le seul élément qui ne peut pas être recréé.

Dépannage : erreurs courantes

Quelques erreurs reviennent souvent lors d'une installation fraîche ou d'une mise à jour.

Problèmes fréquents et solutions

  • Erreur SMTP « Connection refused » ou timeout : vérifiez que MAIL_PORT correspond au port réel (587 pour STARTTLS, 465 pour SSL). Certains serveurs SMTP bloquent le port 25 sortant. Testez la connectivité depuis le conteneur : docker exec -it bookstack curl -v telnet://smtp.votredomaine.com:587.
  • Permissions sur storage/ : erreur 500 ou page blanche : le dossier /opt/bookstack/data/bookstack doit appartenir à l'UID 1000 (variable PUID). Corrigez avec chown -R 1000:1000 /opt/bookstack/data/bookstack puis redémarrez le conteneur.
  • Lenteur ou timeout avec MariaDB au démarrage : BookStack attend que MariaDB soit prêt. Si le conteneur BookStack redémarre en boucle les premières secondes, c'est normal. Ajoutez un healthcheck sur le service mariadb dans le Compose ou attendez 30 secondes avant d'inspecter les logs.
  • Images qui ne s'affichent pas après déplacement : APP_URL doit correspondre exactement à l'URL HTTPS publique. Si vous changez de domaine, mettez à jour APP_URL dans le Compose, redémarrez le conteneur, puis exécutez php artisan bookstack:update-url depuis le conteneur pour mettre à jour les URLs stockées en base.
  • Migrations bloquées au premier démarrage (OOM) : si le VPS dispose de moins de 2 Go de RAM, les migrations Laravel peuvent être tuées par l'OOM killer. Ajoutez un fichier de swap de 2 Go (fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile) ou augmentez la RAM du VPS avant de relancer.

Mettre à jour BookStack

L'image lscr.io/linuxserver/bookstack:latest reçoit les nouvelles versions peu après leur publication sur GitHub. Pour mettre à jour :

cd /opt/bookstack
docker compose pull
docker compose up -d
docker compose logs -f bookstack

Les migrations de base de données sont appliquées automatiquement au démarrage. Consultez les notes de version BookStack avant toute mise à jour majeure : certaines versions introduisent des changements de schéma ou de configuration.

Astuce de sécurité

Configurez une entrée robots.txt ou protégez votre instance BookStack derrière un pare-feu applicatif si elle contient des procédures internes sensibles. BookStack ne propose pas de mode « intranet seulement » par défaut — l'URL publique est accessible à quiconque connaît l'adresse. Pour une documentation vraiment privée, combinez les permissions granulaires de BookStack avec une règle UFW ou un VPN WireGuard qui restreint l'accès au port 443.

Pour aller plus loin

Installer BookStack sur un VPS ServOrbit en un clic

BookStack est disponible dans le Marketplace ServOrbit. Commandez un VPS Cloud et le wiki structuré s'installe automatiquement, MariaDB incluse.