Actualizaciones y copias de seguridad
Actualizar
Descarga las imágenes nuevas y recrea los contenedores. Las migraciones se ejecutan al arrancar.
docker compose pull && docker compose up -d
Si usas el perfil de IA local, reconstruye la imagen de Laya tras una actualización:
docker compose --profile ai build laya
Tareas en segundo plano y el worker
El trabajo en segundo plano (mantenimiento hoy, y la sincronización del correo y el pase de IA según vayan llegando) se ejecuta dentro del mismo contenedor. La imagen ejecuta campbooks-server all, que es la API más el worker de tareas. Las tareas viven en Postgres, así que no se pierde nada al reiniciar.
Para ejecutar el worker por separado, añade un segundo servicio con la misma imagen y el mismo entorno, y estos dos ajustes:
command: ["worker"]healthcheck: { disable: true }, porque la comprobación de salud sondea la API, que un worker no sirve.
Después dale al primer servicio command: ["api"]. Los ajustes del worker son el bloque CAMPBOOKS_JOBS__* en Configuración.
Qué respaldar
Respalda estos elementos juntos, aproximadamente a la misma hora:
| Qué | Dónde | Contiene |
|---|---|---|
| Postgres | volumen postgres-data (usa pg_dump) | Todo excepto los archivos y la clave secreta de la instancia: cuentas, claves de inicio de sesión, autorizaciones |
| Archivos | volumen blobs-data, o tu bucket | Mensajes en bruto, adjuntos, documentos |
| Clave secreta de la instancia | volumen server-secrets | La clave que abre las claves de inicio de sesión y las credenciales guardadas en Postgres |
Guarda también una copia de tu .env y de los archivos de secreto de cliente de deploy/secrets/. No están en ningún volumen.
:::warning Guarda una copia de la clave secreta de la instancia
server-init genera la clave una sola vez, en el primer arranque. Protege las claves de inicio de sesión y las credenciales de las cuentas conectadas. La clave no se puede recuperar si la pierdes, así que guarda una copia en un lugar seguro, aparte de tus copias de seguridad.
Sin la clave correcta, el servidor se niega a arrancar. Si la clave está realmente perdida, puedes empezar de nuevo con una nueva:
- Elimina las filas de
identity.signing_keysen Postgres. - Quita la clave:
docker compose run --rm server-init rm /secrets/secret-key. - Ejecuta
docker compose up -d && docker compose restart server.
Todo el mundo vuelve a iniciar sesión, y los buzones conectados muestran «necesita reautorización» hasta que su propietario los conecte de nuevo. El correo y los documentos ya guardados no se pierden. :::
Restaura Postgres y los archivos al mismo punto en el tiempo. Un archivo que falta en el almacén mientras Postgres aún lo lista no se puede leer. Por eso haz primero el volcado de la base de datos y después copia los archivos: los archivos subidos entretanto son solo extras inofensivos. Para un bucket, activa el versionado (y conserva las versiones antiguas unos días) en lugar de copiar.
Respalda los volúmenes locales con un contenedor desechable. Para los archivos:
docker run --rm -v campbooks_blobs-data:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/blobs-data.tgz -C /data .
Y para la clave secreta de la instancia:
docker run --rm -v campbooks_server-secrets:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/server-secrets.tgz -C /data .
El archivo contiene la propia clave, así que guárdalo donde solo tú puedas leerlo.
Actualizar desde el inicio de sesión con Rauthy
Las versiones anteriores incluían Rauthy como proveedor de identidad: los servicios idp, idp-init e idp-provision y el volumen idp-data. Campbooks ahora inicia la sesión de las personas por sí mismo, y el nuevo compose.yaml no tiene ninguno de ellos.
-
Copia el nuevo
compose.yamlsobre el tuyo y elimina los tres contenedores antiguos:docker compose up -d --remove-orphansNo se rompe nada si dejas los servicios antiguos en marcha. Simplemente ya no se usan.
-
Las cuentas que existían en Rauthy no se trasladan. Esas personas vuelven a iniciar sesión con Google, Microsoft, Zoho o una llave de acceso, y obtienen una cuenta nueva de Campbooks.
-
Pasa los antiguos ajustes de proveedor
CAMPBOOKS_IDP_*aCAMPBOOKS_GOOGLE__*,CAMPBOOKS_MICROSOFT__*yCAMPBOOKS_ZOHO__*. Mantén cada secreto de cliente endeploy/secrets/<provider>-client-secret. Consulta Inicio de sesión. -
Añade
${CAMPBOOKS_PUBLIC_URL}/auth/callback/<provider>como URI de redirección en la aplicación OAuth de cada proveedor. -
El volumen
idp-datase queda donde está. Cuando estés seguro de que no lo necesitas, elimínalo:docker volume rm <project>_idp-data
Monitorización (opcional)
Campbooks escribe registros JSON en stdout y por defecto no exporta nada.
docker compose logs server
Los ajustes CAMPBOOKS_TELEMETRY__* activan una página de Prometheus o la exportación OTLP. Consulta .env.example.