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 MariaDBvolumes: ./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 8080APP_URL: votre domaine (avec https://)TZ: fuseau horairevolumes: ./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
Identifiants par défaut :
- Email :
admin@admin.com - Mot de passe :
password
Changez immédiatement ces identifiants :
- Avatar en haut à droite → Settings
- Change Password
- Changez l'email administrateur
Organisation de ma documentation
J'utilise Bookstack pour deux types de contenu :
Documentation privée (notes personnelles)
Étagère "Configurations Serveur"
- Livre "VPS OVH" : configurations Nginx, Docker, sauvegardes
- Livre "Hébergement clients" : accès FTP, bases de données
Étagère "Projets Clients"
- Un livre par client avec toutes les informations techniques
Étagère "Snippets"
- Livre "WordPress" : fonctions PHP réutilisables
- Livre "JavaScript" : scripts utiles
- Livre "Linux" : commandes pratiques
Ces contenus sont marqués comme privés dans Bookstack (visible uniquement par moi).
Documentation publique (guides partagés)
Étagère "Guides Techniques"
- Livre "Installation Docker" : guides pas à pas
- Livre "Configurations Nginx" : exemples de configurations
- Livre "Automatisation" : scripts et procédures
Étagère "Tutoriels Web"
- Livre "WordPress" : bonnes pratiques, optimisations
- Livre "Développement" : techniques et astuces
Ces contenus sont marqués comme publics et accessibles sans authentification. Je partage les liens sur mes réseaux ou dans des forums d'entraide.
Gestion des permissions dans Bookstack
Pour rendre une page publique :
- Ouvrez la page
- Cliquez sur les trois points → Permissions
- Activez Public Access
- 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 :
- Ouvrez le livre ou la page
- Trois points → Export → Export as PDF
- 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 → Export → Export 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.
Contribution à la documentation libre
En rendant certains guides publics sur Bookstack, je contribue à la communauté du logiciel libre. Les développeurs débutants trouvent mes tutoriels d'installation Docker, les auto-entrepreneurs découvrent comment gérer leur infrastructure, et je reçois régulièrement des retours qui m'aident à améliorer mes guides.
C'est une façon simple de redonner à la communauté open source dont je bénéficie quotidiennement.
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