Skip to main content

Actualización manual de BookStack

Instalación por release / tarball — Procedimiento normativo


⚠️ REGLAS DE INTERPRETACIÓN (LECTURA OBLIGATORIA)

Este documento NO es una guía genérica.
NO describe “cómo se suele actualizar BookStack”.

Describe ÚNICAMENTE este escenario concreto:

  • Instalación por release / tarball
  • Sin uso de Git
  • Con swap controlado de directorios
  • Con backups ya existentes

Si alguna instrucción no encaja exactamente con el sistema real:

NO se adapta
NO se improvisa
NO se proponen alternativas
SE DETIENE EL PROCESO

No existen “variantes equivalentes” de este procedimiento.
Si algo no está escrito aquí, NO forma parte del proceso.


0. ESTADO INICIAL — CONDICIÓN DE EJECUCIÓN

SI ALGUNO DE LOS SIGUIENTES PUNTOS NO SE CUMPLE,
ESTE PROCEDIMIENTO NO ES APLICABLE.

Debe verificarse antes de hacer nada:

  • Método de instalación: release / tarball (NO git)
  • Ruta activa de BookStack: /var/www/bookstack
  • Usuario propietario: www-data:www-data
  • PHP-FPM operativo
  • Base de datos accesible
  • public/uploads existe (directorio o symlink válido)
  • Versión actual verificable con:
cd /var/www/bookstack
cat version

Ejemplo:

v25.12.2

Si la versión no puede verificarse, NO continuar.


1. PROHIBICIONES ABSOLUTAS

Durante todo el proceso, está prohibido:

  • ❌ Usar git clone, git pull, git checkout
  • ❌ Actualizar directamente sobre /var/www/bookstack
  • ❌ Copiar vendor/ desde la instalación anterior
  • ❌ Ejecutar comandos fuera del directorio indicado
  • ❌ Inventar rutas “equivalentes” o “más limpias”
  • ❌ Ejecutar pasos fuera de orden
  • ❌ Continuar tras un error sin entenderlo

Este procedimiento es lineal, cerrado y deliberado.


2. BACKUP (FUERA DE ALCANCE)

Antes de continuar:

  • Backup completo del sistema realizado
  • Backup verificado como restaurable

Sin backup, NO se actualiza.


3. PREPARACIÓN — ENTORNO FUERA DE PRODUCCIÓN

mkdir -p /root/tmp-bookstack-update
cd /root/tmp-bookstack-update

CHECKPOINT

  • pwd devuelve /root/tmp-bookstack-update
  • Producción NO ha sido tocada

4. DESCARGA DE LA NUEVA RELEASE

Ejemplo (v25.12.3):

wget https://github.com/BookStackApp/BookStack/archive/refs/tags/v25.12.3.tar.gz
tar xzf v25.12.3.tar.gz
mv BookStack-25.12.3 bookstack_NEW

CHECKPOINT

  • Existe bookstack_NEW/
  • Contiene artisan, public/, storage/

Si no, DETENER.


5. COPIA DE CONFIGURACIÓN Y DATOS

Desde la instalación activa:

cp /var/www/bookstack/.env bookstack_NEW/
cp -a /var/www/bookstack/storage bookstack_NEW/
cp -a /var/www/bookstack/public/uploads bookstack_NEW/public/
cp /var/www/bookstack/public/custom.css bookstack_NEW/public/ 2>/dev/null || true

CHECKPOINT

  • .env existe en bookstack_NEW
  • storage/ existe y contiene datos

6. INSTALACIÓN DE DEPENDENCIAS PHP

cd bookstack_NEW
composer install --no-dev --optimize-autoloader

CHECKPOINT

  • Comando finaliza sin errores fatales
  • Existe el directorio vendor/
  • vendor/ NO ha sido copiado manualmente

Si falla, NO continuar.


7. MIGRACIONES DE BASE DE DATOS

php artisan migrate --force

Resultado habitual:

Nothing to migrate.

CHECKPOINT

  • No hay errores
  • Si aparecen migraciones, leerlas antes de continuar

8. RECORDATORIO CRÍTICO ANTES DEL SWAP

Hasta este punto:

  • Producción NO ha sido modificada
  • Todo el trabajo ocurrió fuera de /var/www/bookstack
  • Cualquier error aquí es reversible

A partir del siguiente paso, se toca producción.


9. SWAP CONTROLADO (PASO CRÍTICO)

mv /var/www/bookstack /var/www/bookstack_OLD_$(date +%Y%m%d)
mv /root/tmp-bookstack-update/bookstack_NEW /var/www/bookstack
chown -R www-data:www-data /var/www/bookstack

CHECKPOINT

  • /var/www/bookstack existe
  • Propietario correcto: www-data
  • Carpeta OLD permanece intacta

10. LIMPIEZA DE CACHE Y RECARGA

cd /var/www/bookstack
sudo -u www-data php artisan config:clear
sudo -u www-data php artisan cache:clear
sudo systemctl reload php8.4-fpm

11. VERIFICACIÓN FINAL

  • Acceso web correcto
  • Login funcional
  • Subida de imágenes correcta
  • Versión confirmada:
cat /var/www/bookstack/version

Debe mostrar la nueva versión.


12. ROLLBACK INMEDIATO (SI ALGO FALLA)

rm -rf /var/www/bookstack
mv /var/www/bookstack_OLD_YYYYMMDD /var/www/bookstack
sudo systemctl reload php8.4-fpm

No investigar con producción rota.
Primero volver atrás, luego analizar.


NOTA FINAL PARA OPERADOR / IA

Este documento es normativo.

  • No asumir configuraciones distintas
  • No “optimizar” el proceso
  • No añadir pasos
  • No cambiar el orden

Si el sistema real no coincide con este documento,
se documenta primero y se adapta después.


Fin del procedimiento.