# Puesta en marcha de Estudio Estudio es la aplicación nueva de administración, con artefacto `build-estudio` y servicio `senzapaura-estudio` en `127.0.0.1:3002`. Su instalación es independiente del panel anterior. Estos pasos son un procedimiento para el servidor; no se han ejecutado en producción. ## Preparación 1. Conservar una copia PostgreSQL completa y una copia de los medios antes de importar. La exportación JSON editorial no sustituye esas copias. 2. Preparar la release mediante `desplegar.sh`, que construye sitio, panel y Estudio. El instalador general instala sitio y panel; Estudio se instala expresamente con los pasos siguientes. 3. Crear `/var/www/senzapaura/.env.estudio`, propiedad del usuario de servicio y con permisos 600. Debe contener la misma `DATABASE_URL` de producción que usa el sitio, `ORIGIN` con el dominio HTTPS elegido para Estudio y la configuración de correo necesaria para el acceso normal. No copiar `.env.estudio.local` ni las credenciales demo. El código fijo de desarrollo no está habilitado en el build de producción. 4. Crear `/var/www/senzapaura/media/estudio/imagenes` con permisos para el usuario `senzapaura`. El servicio fija rutas absolutas para imágenes, audio y ondas. Se necesitan `ffmpeg` y `ffprobe`. Desde la release, ejecutar como el usuario de servicio: ```sh node --env-file=/var/www/senzapaura/.env.estudio scripts/estudio/preparar.mjs node --env-file=/var/www/senzapaura/.env.estudio scripts/estudio/administrar.mjs ver ``` La preparación crea las tablas editoriales, importa una instantánea, aplica la unificación de Personas y sitúa la inspiración en la ficha de Canción sin modificar el catálogo público. Si ya se importó, conserva los borradores y ejecuta esas migraciones de forma idempotente. Para un almacén importado por una versión anterior también pueden ejecutarse explícitamente `scripts/estudio/actualizar-personas.mjs` y `scripts/estudio/actualizar-inspiracion.mjs` con el mismo archivo de entorno. ## Servicio y revisión ```sh sudo install -m 644 despliegue/senzapaura-estudio.service /etc/systemd/system/senzapaura-estudio.service sudo systemctl daemon-reload sudo systemctl enable --now senzapaura-estudio curl -fsS -o /dev/null http://127.0.0.1:3002/entrar ``` Configurar el proxy para el dominio elegido hacia `127.0.0.1:3002`, conservando cabecera Host y protocolo HTTPS. El límite de carga es 260 MiB. Los archivos privados deben pasar por los endpoints de la aplicación; no publicar el directorio de medios mediante un alias genérico. Revisar los recorridos con una cuenta administradora real y códigos enviados por correo. Preparar no equivale a activar: mientras esté en preparación, publicar una ficha editorial no cambia el sitio público. ## Cambio de escritor Detener la edición durante el cambio. Si el catálogo legado cambió desde la importación, conciliarlo antes de continuar; la activación rechaza una fuente distinta. Revisar también los intérpretes reales que falten en el catálogo, sin inventarlos. Guardar la exportación fuera del directorio de release, con nombre nuevo y permisos restringidos: ```sh node --env-file=/var/www/senzapaura/.env.estudio scripts/estudio/administrar.mjs exportar /ruta/privada/estudio-previo.json node --env-file=/var/www/senzapaura/.env.estudio scripts/estudio/administrar.mjs activar /ruta/privada/estudio-previo.json ``` La activación comprueba el esquema del respaldo, la revisión editorial y la huella del catálogo. Instala guardas para que Estudio sea el escritor editorial del catálogo. No publica todos los borradores automáticamente. Cambiar entonces el acceso administrativo al dominio de Estudio y retirar el acceso editorial al panel antiguo. Las actualizaciones de código reinician Estudio y comprueban su endpoint de acceso cuando el servicio está habilitado. No activan el almacén editorial automáticamente. ## Suspensión y recuperación `administrar.mjs desactivar` suspende las publicaciones desde Estudio y elimina el bloqueo efectivo del escritor legado al cambiar el modo. No revierte contenido publicado ni restaura una copia. La vuelta a una versión de código anterior tampoco revierte la base: si se necesita recuperar datos, debe seguirse el procedimiento de restauración de PostgreSQL y medios, comprobando compras y referencias.