2
Actualización
groales edited this page 2025-12-04 16:42:30 +01:00

Actualización

Mantén BookStack y MariaDB actualizados de forma segura.

Pre-requisitos

⚠️ SIEMPRE haz backup antes de actualizar

# Backup rápido
docker exec bookstack-db mariadb-dump -u bookstack -p${DB_PASSWORD} bookstack > bookstack-pre-update-$(date +%Y%m%d).sql
docker run --rm -v bookstack_config:/backup -v $(pwd):/target alpine tar czf /target/bookstack-config-pre-update.tar.gz -C /backup .

Actualizar BookStack

Proceso Manual

# 1. Backup (ver arriba)

# 2. Detener stack
docker stop bookstack bookstack-db

# 3. Actualizar imágenes
docker pull lscr.io/linuxserver/bookstack:latest
docker pull mariadb:12

# 4. Iniciar MariaDB primero
docker start bookstack-db
sleep 10

# 5. Iniciar BookStack
docker start bookstack

# 6. Verificar logs
docker logs -f bookstack

# 7. Acceder y verificar
# https://bookstack.tudominio.com
# Settings → About → Verificar versión

Con Portainer

  1. Ve al stack bookstack
  2. Click en Pull and redeploy
  3. Espera 1-2 minutos
  4. Verifica logs y acceso

Actualizar MariaDB

Actualización Menor (11.x → 11.y)

# Actualizar normalmente
docker stop bookstack bookstack-db
docker pull mariadb:12
docker start bookstack-db
sleep 15
docker start bookstack

Actualización Mayor (10 → 11)

⚠️ Requiere dump y restore

# 1. Backup completo
docker exec bookstack-db mariadb-dump -u bookstack -p${DB_PASSWORD} bookstack > bookstack-mariadb-upgrade.sql

# 2. Detener todo
docker stop bookstack bookstack-db

# 3. Eliminar contenedor y volumen antiguo
docker rm bookstack-db
docker volume rm bookstack_db

# 4. Recrear volumen
docker volume create bookstack_db

# 5. Iniciar MariaDB 12
docker compose up -d bookstack-db

# 6. Esperar inicialización
sleep 20

# 7. Restaurar datos
cat bookstack-mariadb-upgrade.sql | docker exec -i bookstack-db mariadb -u bookstack -p${DB_PASSWORD} bookstack

# 8. Iniciar BookStack
docker start bookstack

# 9. Verificar
docker logs bookstack

Rollback (Revertir Actualización)

Rollback Rápido

# 1. Detener todo
docker stop bookstack bookstack-db

# 2. Volver a versión anterior de imagen
docker pull lscr.io/linuxserver/bookstack:v24.05.4
docker tag lscr.io/linuxserver/bookstack:v24.05.4 lscr.io/linuxserver/bookstack:latest

# 3. Restaurar BD desde backup
gunzip < bookstack-pre-update-20250101.sql.gz | docker exec -i bookstack-db mariadb -u bookstack -p${DB_PASSWORD} bookstack

# 4. Iniciar
docker start bookstack-db
sleep 10
docker start bookstack

Rollback Completo

# 1. Detener y eliminar todo
docker stop bookstack bookstack-db
docker rm bookstack bookstack-db
docker volume rm bookstack_config bookstack_db

# 2. Recrear volúmenes
docker volume create bookstack_config
docker volume create bookstack_db

# 3. Iniciar stack
docker compose up -d bookstack-db
sleep 20

# 4. Restaurar desde backups
gunzip < bookstack-pre-update.sql.gz | docker exec -i bookstack-db mariadb -u bookstack -p${DB_PASSWORD} bookstack
docker run --rm -v bookstack_config:/restore -v $(pwd):/source alpine tar xzf /source/bookstack-config-pre-update.tar.gz -C /restore

# 5. Iniciar BookStack
docker start bookstack

Actualización Automática con Watchtower

Desplegar Watchtower

services:
  watchtower:
    image: containrrr/watchtower
    restart: unless-stopped
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_INCLUDE_STOPPED: "false"
      WATCHTOWER_SCHEDULE: "0 0 4 * * *"  # 4 AM diario
      WATCHTOWER_ROLLING_RESTART: "true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Excluir BookStack de Watchtower

Si quieres control manual, añade label a bookstack:

services:
  bookstack:
    labels:
      - "com.centurylinklabs.watchtower.enable=false"

Checklist Post-Actualización

Verificar Funcionalidad

  • BookStack accesible en https://bookstack.tudominio.com
  • Login funciona correctamente
  • Libros/capítulos/páginas visibles
  • Búsqueda funciona
  • Imágenes cargan correctamente
  • Editor funciona (crear/editar páginas)
  • API responde (si la usas)
  • LDAP/SAML funciona (si lo usas)

Verificar Logs

# Sin errores críticos
docker logs bookstack | grep -i error
docker logs bookstack | grep -i fatal

# BD conectada
docker logs bookstack | grep "Database"

Verificar Versión

Settings → About:

  • BookStack Version: Debe ser la nueva versión
  • PHP Version: Verificar compatibilidad

Mantenimiento

Limpiar Imágenes Antiguas

# Listar imágenes antiguas
docker images | grep bookstack
docker images | grep mariadb

# Eliminar imágenes sin usar
docker image prune -a

Optimizar Base de Datos

# Optimizar tablas
docker exec bookstack-db mariadb-optimize -u bookstack -p${DB_PASSWORD} bookstack

# Reparar tablas (si hay corrupción)
docker exec bookstack-db mariadb-check -u bookstack -p${DB_PASSWORD} --auto-repair bookstack

Próximos Pasos

  1. Backup - Automatiza backups regulares
  2. Monitoriza - Configura alertas de caídas
  3. Documenta - Mantén registro de versiones