Guía de despliegue

Alojar BookStack en su propio VPS

Desplegar en un VPS Cloud →

Tutorial

Alojar BookStack en su propio VPS

Autoalojamiento7 min de lectura5 pasos

BookStack es una plataforma de documentación de código abierto organizada en estantes, libros, capítulos y páginas. Autoalojada en un VPS, se convierte en el wiki interno ideal para su equipo o agencia: búsqueda de texto completo, editor WYSIWYG, permisos granulares. Esta guía cubre la instalación completa con Docker Compose, la configuración SSL, la resolución de errores comunes y la configuración de una copia de seguridad fiable.

Contenido· Por qué autoalojar BookStack en un VPS1/12
  1. 01Por qué autoalojar BookStack en un VPS
  2. 02Beneficios concretos de un BookStack autoalojado
  3. 03Requisitos de hardware y software
  4. 04BookStack frente a alternativas autoalojadas
  5. 05Desplegar BookStack con Docker Compose y SSL
  6. 06Configuración avanzada: SSO, LDAP y SAML
  7. 07Hacer copias de seguridad y restaurar BookStack
  8. 08Resolución de problemas: errores comunes
  9. 09Problemas frecuentes y soluciones
  10. 10Actualizar BookStack
  11. 11Consejo de seguridad
  12. 12Para profundizar

Por qué autoalojar BookStack en un VPS

BookStack destaca por su simplicidad: allí donde otros wikis ahogan al usuario con opciones, impone una jerarquía clara — estantes, libros, capítulos, páginas — que hace la documentación navegable de inmediato. Construido sobre Laravel, es ligero y fácil de mantener. Autoalojado en un VPS, conserva toda su documentación interna — procedimientos, runbooks, base de conocimiento de clientes — en su propia infraestructura, sin suscripción por usuario. Para una agencia que documenta sus proyectos o un equipo técnico que centraliza sus procedimientos, es un wiki privado que usted controla de principio a fin, con búsqueda de texto completo, gestión detallada de permisos y editor WYSIWYG o Markdown.

Beneficios concretos de un BookStack autoalojado

  • Estructura clara en estantes/libros/capítulos/páginas: documentación navegable sin esfuerzo.
  • Editor WYSIWYG y Markdown a elección, con diagramas Draw.io integrados.
  • Permisos granulares por rol y por libro para compartimentar los contenidos sensibles.
  • Búsqueda de texto completo y rápida sobre el conjunto de la base de conocimiento.
  • Autenticación LDAP, SAML u OAuth para integrarse con su directorio corporativo.
  • Huella ligera: un VPS con 2 GB de RAM basta para la documentación de un equipo.
  • Sin suscripción por usuario — número ilimitado de colaboradores sin coste adicional.

Requisitos de hardware y software

BookStack es poco exigente. Un VPS de 1 a 2 vCPU y 2 GB de RAM como mínimo aloja cómodamente la documentación de un equipo; con BookStack y MariaDB ejecutándose juntos, 2 GB es el mínimo recomendado — por debajo, las migraciones de Laravel en el primer arranque pueden fallar por falta de memoria. El consumo sube sobre todo con el volumen de imágenes subidas.

Prevea de 15 a 25 GB de SSD según la cantidad de archivos adjuntos. En cuanto al software: Docker 24+ y el plugin Compose v2 (docker compose sin guion), un subdominio wiki.sudominio.com con un registro A, y acceso SMTP para invitaciones y notificaciones por correo electrónico.

BookStack frente a alternativas autoalojadas

Desplace la tabla

HerramientaStackRAM mín.Punto fuerte
BookStackLaravel + MariaDB2 GBJerarquía libros/capítulos, WYSIWYG
Wiki.jsNode.js + BD a elegir512 MBEditor moderno, sincronización Git
OutlineNode.js + PostgreSQL1 GBUI tipo Notion, API rica
ConfluenceSaaS / on-premise4 GB+Integración Atlassian, maduro

Desplegar BookStack con Docker Compose y SSL

  1. Preparar el VPS e instalar Docker

    Conéctese por SSH e instale Docker y el plugin Compose:

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

    Verifique: docker compose version debe mostrar v2.x o superior. La imagen comunitaria lscr.io/linuxserver/bookstack es la más extendida y mejor mantenida para un despliegue en contenedores.

  2. Crear el archivo docker-compose.yml

    Cree /opt/bookstack/docker-compose.yml con dos servicios — MariaDB y BookStack — en una red dedicada:

    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.sudominio.com
          DB_HOST: mariadb
          DB_USER: bookstack
          DB_PASS: changeme_bk
          DB_DATABASE: bookstack
          MAIL_DRIVER: smtp
          MAIL_HOST: smtp.sudominio.com
          MAIL_PORT: 587
          MAIL_FROM: [email protected]
          MAIL_USERNAME: [email protected]
          MAIL_PASSWORD: su_contrasena_smtp
        ports:
          - "6875:80"
        volumes:
          - ./data/bookstack:/config
        depends_on: [mariadb]
        networks: [bookstack]
    
    networks:
      bookstack:

    APP_URL debe coincidir exactamente con la URL HTTPS final. Un valor incorrecto rompe los enlaces internos y las subidas.

  3. Lanzar la pila y comprobar los registros

    docker compose up -d
    docker compose logs -f bookstack

    En el primer arranque, BookStack ejecuta automáticamente las migraciones de Laravel para crear el esquema de la base de datos. Espere la línea Server running on http://0.0.0.0:80 antes de continuar — tarda entre 30 y 60 segundos.

  4. Configurar el reverse proxy y el SSL

    Con Caddy (gestión automática del certificado):

    wiki.sudominio.com {
        reverse_proxy localhost:6875
    }

    Recargue Caddy: systemctl reload caddy.

    Con Nginx + Certbot:

    server {
        listen 80;
        server_name wiki.sudominio.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name wiki.sudominio.com;
        ssl_certificate /etc/letsencrypt/live/wiki.sudominio.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wiki.sudominio.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;
        }
    }

    Obtenga el certificado con certbot --nginx -d wiki.sudominio.com.

  5. Primera conexión y segurización de la cuenta admin

    Abra https://wiki.sudominio.com. La cuenta por defecto es [email protected] con la contraseña password. Cámbielas inmediatamente en Configuración → Perfil.

    Verifique después que SMTP funciona: Configuración → Configuración de correo electrónico → Enviar un correo de prueba. Si el test falla, revise los registros: docker compose logs bookstack | grep -i mail.

Configuración avanzada: SSO, LDAP y SAML

BookStack soporta varios mecanismos de autenticación centralizada, configurables mediante variables de entorno en docker-compose.yml.

LDAP / Active Directory: añada las variables AUTH_METHOD=ldap, LDAP_SERVER, LDAP_BASE_DN, LDAP_USER_FILTER y LDAP_VERSION. Los usuarios inician sesión con sus credenciales corporativas sin una cuenta BookStack separada.

SAML 2.0 (para proveedores como Authentik, Keycloak o Azure AD): establezca AUTH_METHOD=saml2 y rellene SAML2_IDP_ENTITYID, SAML2_IDP_SSO y SAML2_IDP_SLO. La documentación oficial de BookStack ofrece ejemplos por proveedor.

OAuth social (GitHub, Google, Slack): cada proveedor tiene su par de variables *_APP_ID / *_APP_SECRET. Esta opción es útil para equipos que quieren evitar la gestión de contraseñas sin desplegar un servidor LDAP.

Hacer copias de seguridad y restaurar BookStack

Una instancia de BookStack se apoya en tres elementos: la base de datos MariaDB, la carpeta uploads (imágenes y archivos adjuntos) y el valor APP_KEY en la configuración. Sin el APP_KEY, el contenido cifrado es irrecuperable tras la restauración.

Script de copia de seguridad diaria en /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

Copie después estos archivos a almacenamiento externo (S3, Backblaze B2 o el almacenamiento objeto de su VPS). Guarde el APP_KEY en un gestor de secretos fuera del servidor — es el único elemento que no puede recrearse.

Resolución de problemas: errores comunes

Algunos errores aparecen con frecuencia durante una instalación nueva o una actualización.

Problemas frecuentes y soluciones

  • Error SMTP «Connection refused» o timeout: compruebe que MAIL_PORT corresponde al puerto real (587 para STARTTLS, 465 para SSL). Algunos servidores SMTP bloquean el puerto 25 saliente. Pruebe la conectividad desde el contenedor: docker exec -it bookstack curl -v telnet://smtp.sudominio.com:587.
  • Permisos en storage/: error 500 o página en blanco: la carpeta /opt/bookstack/data/bookstack debe pertenecer al UID 1000 (variable PUID). Corrija con chown -R 1000:1000 /opt/bookstack/data/bookstack y reinicie el contenedor.
  • Lentitud o timeout de MariaDB al arrancar: BookStack espera a que MariaDB esté lista. Si el contenedor BookStack se reinicia en bucle los primeros segundos, es normal. Añada un healthcheck al servicio mariadb en el Compose o espere 30 segundos antes de inspeccionar los registros.
  • Las imágenes no se muestran tras un cambio de dominio: APP_URL debe coincidir exactamente con la URL HTTPS pública. Si cambia de dominio, actualice APP_URL en el Compose, reinicie el contenedor y ejecute php artisan bookstack:update-url desde dentro del contenedor para actualizar las URLs almacenadas en la base de datos.
  • Las migraciones se detienen en el primer arranque (OOM): si el VPS tiene menos de 2 GB de RAM, las migraciones de Laravel pueden ser eliminadas por el OOM killer. Añada un fichero de swap de 2 GB (fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile) o aumente la RAM del VPS antes de reintentar.

Actualizar BookStack

La imagen lscr.io/linuxserver/bookstack:latest recibe las nuevas versiones poco después de su publicación en GitHub. Para actualizar:

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

Las migraciones de base de datos se aplican automáticamente al arrancar. Consulte las notas de versión de BookStack antes de cualquier actualización mayor: algunas versiones introducen cambios de esquema o de configuración.

Consejo de seguridad

Configure una entrada robots.txt o proteja su instancia de BookStack detrás de un firewall de aplicaciones web si contiene procedimientos internos sensibles. BookStack no ofrece un modo «solo intranet» por defecto — la URL pública es accesible para cualquiera que conozca la dirección. Para una documentación verdaderamente privada, combine los permisos granulares de BookStack con una regla UFW o una VPN WireGuard que restrinja el acceso al puerto 443.

Para profundizar

Instale BookStack en un VPS ServOrbit con un clic

BookStack está disponible en el Marketplace ServOrbit. Pida un VPS Cloud y el wiki estructurado se instala automáticamente, MariaDB incluida.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva