BookStack Docker Compose te permite desplegar una wiki self-hosted para organizar documentación en formato de libros, capítulos y páginas. Con editor WYSIWYG, Markdown, búsqueda global, diagramas integrados (diagrams.net) y soporte para OIDC, LDAP y MFA, es ideal para runbooks, documentación técnica y knowledge bases. En esta guía verás cómo instalar BookStack con Docker Compose usando la imagen de LinuxServer.io, configurar MariaDB, generar la APP_KEY y exponer el servicio tras Traefik o Caddy.
¿Qué es BookStack Docker Compose?
BookStack es un wiki open source (licencia MIT) diseñado para documentación sencilla y navegable. La estructura sigue estanterías → libros → capítulos → páginas; el editor WYSIWYG y opcionalmente Markdown facilita la escritura. Con BookStack Docker Compose despliegas la aplicación y la base de datos en unos minutos. El proyecto está en GitHub y la documentación oficial en bookstackapp.com. La imagen LinuxServer.io es la más usada y mantiene el mapeo correcto de volúmenes y variables de entorno.
Requisitos e instalación de BookStack Docker Compose
Necesitas Docker y Docker Compose v2. BookStack requiere MySQL o MariaDB; con la imagen LinuxServer puedes usar la imagen linuxserver/mariadb en el mismo stack. Genera primero la APP_KEY ejecutando:
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
Guarda la clave generada para el archivo .env. Crea un directorio para el proyecto y el archivo docker-compose.yml:
docker-compose.yml para BookStack Docker Compose
services:
bookstack_db:
image: lscr.io/linuxserver/mariadb:latest
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=rootpass
- TZ=Europe/Madrid
volumes:
- bookstack_db:/config
restart: unless-stopped
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
- APP_URL=http://TU_IP:6875
- APP_KEY=base64:TU_APP_KEY_GENERADA
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=bookstackpass
- DB_DATABASE=bookstackapp
volumes:
- bookstack_config:/config
ports:
- "6875:80"
depends_on:
- bookstack_db
restart: unless-stopped
volumes:
bookstack_db:
bookstack_config:
Antes de arrancar, crea el usuario y la base de datos en MariaDB. Conecta al contenedor bookstack_db y ejecuta:
docker exec -it bookstack_db mysql -uroot -prootpass -e "
CREATE DATABASE IF NOT EXISTS bookstackapp;
CREATE USER IF NOT EXISTS 'bookstack'@'%' IDENTIFIED BY 'bookstackpass';
GRANT ALL ON bookstackapp.* TO 'bookstack'@'%';
FLUSH PRIVILEGES;
"
O usa un docker-compose.yml que incluya un script de inicialización. Arranca con docker compose up -d. Accede a http://TU_IP:6875. Credenciales por defecto: [email protected] / password; cámbialas al instante. Si usas proxy inverso con subcarpeta o subdominio, configura APP_URL con la URL pública exacta (por ejemplo https://wiki.tudominio.com). La documentación de instalación detalla las variables adicionales.
Configurar BookStack Docker Compose detrás de proxy inverso
Con Traefik o Caddy terminas SSL y rediriges al puerto 6875 (o 80 dentro del contenedor). En APP_URL usa la URL pública (por ejemplo https://wiki.tudominio.com) sin barra final. Si cambias la URL después de la instalación, ejecuta:
docker exec -it bookstack php /app/www/artisan bookstack:update-url http://URL_VIEJA http://URL_NUEVA
El volumen /config persiste subidas, temas, backups y logs. Más guías de Docker Compose en el blog para combinar BookStack con otros servicios.
Actualizar y mantener BookStack Docker Compose
Para actualizar: docker compose pull y docker compose up -d. Los backups se guardan en /config/backups si los configuras en la aplicación. Para email, LDAP u OIDC añade las variables indicadas en la documentación de BookStack o monta un .env personalizado en /config/www/.env.
Conclusión
Con BookStack Docker Compose tienes una wiki self-hosted lista en minutos: estructura en libros y capítulos, editor WYSIWYG, Markdown, diagramas, búsqueda y opciones de autenticación avanzadas. La imagen LinuxServer.io simplifica el despliegue; combinada con MariaDB y un proxy inverso tienes una base de documentación segura y accesible.
FAQ sobre BookStack Docker Compose
¿En qué puerto escucha BookStack? Por defecto la imagen LinuxServer expone el puerto 80 del contenedor; lo mapeas a 6875 en el host (o al que prefieras).
¿Puedo usar MySQL en lugar de MariaDB? Sí. BookStack es compatible con MySQL 5.7+ y MariaDB. Ajusta DB_HOST, DB_PORT y las credenciales.
¿Cómo cambio la APP_URL después de instalar? Ejecuta docker exec -it bookstack php /app/www/artisan bookstack:update-url URL_VIEJA URL_NUEVA.
¿Dónde están los backups? En /config/backups si los activas en la configuración de la aplicación.
¿Dónde está el código fuente? En github.com/BookStackApp/BookStack. La web oficial es bookstackapp.com.
