Skip to main content

Installation de Bookstack avec Docker : wiki personnel et documentation libre

Contexte du projet

J'ai installé Bookstack sur un vps pour deux usages principaux : la prise de notes personnelles et la création de documentation libre que je partage publiquement (guides d'installation, tutoriels, bonnes pratiques).

Configuration :

  • Docker et Docker Compose
  • Sous-domaine : book.mon-domaine.fr
  • Certificat SSL Let's Encrypt

Pourquoi Bookstack

Bookstack est une plateforme de documentation open source, simple et efficace. Son organisation en Étagères → Livres → Chapitres → Pages permet de structurer clairement la documentation.

Avantages pour mon usage :

  • Prise de notes personnelles : Doc technique, procédures clients ...
  • Documentation libre : guides techniques que je rends publics pour aider la communauté
  • Éditeur WYSIWYG : édition visuelle intuitive
  • Gestion des permissions : pages privées pour mes notes, publiques pour la documentation partagée
  • Export : PDF, HTML, Markdown pour diffuser facilement
  • Recherche puissante : retrouver rapidement n'importe quelle information

Pourquoi Docker

Docker simplifie l'installation en empaquetant Bookstack et sa base de données dans des conteneurs prêts à l'emploi. Au lieu de configurer manuellement PHP, MariaDB, Nginx et toutes les dépendances, Docker gère tout automatiquement. Résultat : installation en 10 minutes, mises à jour simplifiées, et facilité de migration vers un autre serveur.

Projet Docker officiel : https://github.com/linuxserver/docker-bookstack

Préparation du serveur

Connexion SSH et mise à jour :

ssh debian@votre-ip-serveur
sudo apt update && sudo apt upgrade -y

Installation de Docker

Installation de Docker et Docker Compose :

# Ajouter le dépôt Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installation
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose -y

Vérification :

docker --version
docker-compose --version

Configuration Docker Compose

Création de la structure :

sudo mkdir -p /opt/bookstack
cd /opt/bookstack
sudo nano docker-compose.yml

Configuration docker-compose.yml :

version: '3'

services:
  bookstack-db:
    image: mariadb:10.11
    container_name: bookstack-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MotDePasseRootSecurise123
      MYSQL_DATABASE: bookstack
      MYSQL_USER: bookstack
      MYSQL_PASSWORD: MotDePasseBookstackSecurise123
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - bookstack-network

  bookstack-app:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack-app
    restart: always
    depends_on:
      - bookstack-db
    environment:
      PUID=1000
      PGID=1000
      TZ=Europe/Paris
      APP_URL=https://book.mon-domaine.fr
      DB_HOST=bookstack-db
      DB_PORT=3306
      DB_DATABASE=bookstack
      DB_USERNAME=bookstack
      DB_PASSWORD=MotDePasseBookstackSecurise123
    volumes:
      - ./bookstack:/config
    ports:
      - "8080:80"
    networks:
      - bookstack-network

networks:
  bookstack-network:
    driver: bridge

Changez les mots de passe avant de démarrer les conteneurs.

Explication de la configuration :

bookstack-db (Base de données) :

  • mariadb:10.11 : version stable de MariaDB
  • volumes: ./db : stocke la base de données dans le dossier local
  • Variables d'environnement pour la connexion

bookstack-app (Application) :

  • Image officielle LinuxServer.io
  • ports: 8080:80 : Bookstack accessible sur le port 8080
  • APP_URL : votre domaine (avec https://)
  • TZ : fuseau horaire
  • volumes: ./bookstack : stocke les fichiers et configuration

Démarrage des conteneurs :

cd /opt/bookstack
sudo docker-compose up -d

Vérification après 30 secondes :

sudo docker-compose ps

Les deux conteneurs (bookstack-app et bookstack-db) doivent être "Up".

Configuration DNS

Dans l'interface de votre registrar, ajoutez un enregistrement A :

  • Sous-domaine : book
  • Type : A
  • Cible : l'IP de votre serveur

La propagation DNS prend entre 5 minutes et 24 heures. Vérification :

dig book.mon-domaine.fr

Installation de Nginx comme reverse proxy

Nginx sert de passerelle entre Internet et le conteneur Docker :

sudo apt install nginx certbot python3-certbot-nginx -y

Configuration Nginx :

sudo nano /etc/nginx/sites-available/bookstack
server {
    listen 80;
    server_name book.mon-domaine.fr;

    location / {
        proxy_pass http://localhost:8080;
        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;
        
        client_max_body_size 50M;
    }
}

Le paramètre client_max_body_size 50M permet l'upload de fichiers volumineux (screenshots, PDF).

Activation :

sudo ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Installation du certificat SSL

sudo certbot --nginx -d book.mon-domaine.fr

Certbot configure automatiquement HTTPS et le renouvellement automatique du certificat tous les 3 mois.

Première connexion

Accès via navigateur : https://book.mon-domaine.fr

Identifiants par défaut :

  • Email : admin@admin.com
  • Mot de passe : password

Changez immédiatement ces identifiants :

  1. Avatar en haut à droite → Settings
  2. Change Password
  3. Changez l'email administrateur

Gestion des permissions dans Bookstack

Pour rendre une page publique :

  1. Ouvrez la page
  2. Cliquez sur les trois points → Permissions
  3. Activez Public Access
  4. Choisissez le niveau : View (lecture seule pour le public)

Pour garder une page privée, ne cochez pas "Public Access". Seul vous (administrateur) pourrez la voir.

Vous pouvez également créer des rôles (éditeur, lecteur) si vous voulez partager certains contenus avec des collaborateurs spécifiques.

Avantages de Docker pour Bookstack

Installation simplifiée :

  • 10 minutes au lieu de 1 heure avec installation manuelle
  • Pas de configuration PHP/MariaDB/extensions à gérer
  • Tout est pré-configuré et optimisé

Maintenance facilitée : Mise à jour en deux commandes :

cd /opt/bookstack
sudo docker-compose pull
sudo docker-compose up -d

Portabilité : Migration vers un autre serveur simplissime : copiez le dossier /opt/bookstack, relancez docker-compose up -d, c'est tout.

Isolation : Bookstack et sa base de données sont isolés du reste du système. Pas de conflit avec d'autres applications.

Sauvegardes

Script de sauvegarde simple :

#!/bin/bash
DATE=$(date +%Y%m%d)
cd /opt/bookstack
sudo tar -czf /backup/bookstack-$DATE.tar.gz bookstack/ db/

Cette archive contient tous les fichiers, uploads et la base de données.

Automatisez avec un cron quotidien :

sudo crontab -e

Ajoutez :

0 2 * * * /chemin/vers/backup-bookstack.sh

Commandes utiles

Surveillance des conteneurs :

cd /opt/bookstack
sudo docker-compose ps
sudo docker-compose logs -f bookstack-app

Redémarrage :

sudo docker-compose restart

Arrêt/démarrage :

sudo docker-compose stop
sudo docker-compose start

Mise à jour :

sudo docker-compose pull
sudo docker-compose up -d

Export et partage de documentation

Pour partager un guide publié sur Bookstack :

Export PDF :

  1. Ouvrez le livre ou la page
  2. Trois points → ExportExport as PDF
  3. Partagez le PDF généré

Lien direct : Si la page est publique, copiez simplement l'URL. Les visiteurs peuvent la consulter sans compte.

Export Markdown : Trois points → ExportExport as Markdown Pratique pour publier sur GitHub ou un blog.

Mon retour d'expérience

Bookstack avec Docker est devenu central dans mon organisation. La distinction entre notes privées et documentation publique fonctionne parfaitement grâce au système de permissions.

Points positifs :

  • Installation Docker ultra-rapide (10 minutes)
  • Interface intuitive, pas de courbe d'apprentissage
  • Gestion des permissions simple et efficace
  • Export PDF propre pour partager des guides
  • Recherche rapide et efficace
  • Léger et rapide, même sur un petit VPS

Points d'attention :

L'éditeur WYSIWYG est excellent pour la documentation technique, mais si vous avez l'habitude de Markdown pur, il peut sembler moins flexible. Il existe un mode Markdown, mais l'éditeur WYSIWYG reste le plus intégré.

Les images uploadées sont stockées dans le conteneur. Pensez à bien sauvegarder le dossier /opt/bookstack/bookstack.

Conclusion

Bookstack avec Docker est la solution idéale pour gérer à la fois de la documentation personnelle et des guides publics. L'installation prend 10 minutes grâce à Docker, et le système de permissions permet de séparer clairement contenu privé et contenu public.

Pour organiser le besoin de documenter et également partager Bookstack offre la flexibilité parfaite.

Projet officiel : https://github.com/linuxserver/docker-bookstack