Servicio Cron
La aplicación incluye un servicio cron separado para gestionar tareas programadas:
Iniciar servicio cron en modo desarrollo
pnpm dev ya inicia el servicio cron junto con Next.js. Para ejecutar cron solo (por ejemplo en una segunda terminal):
pnpm cron:dev
Iniciar servicio cron en modo producción
pnpm cron:start
Iniciar servicio cron localmente (para pruebas)
pnpm cron:start-local
El servicio cron se ejecuta en un puerto separado (8667 en desarrollo, 9667 en producción) y gestiona tareas programadas como Notificaciones de Copia de Seguridad vencidas. El Puerto se puede configurar mediante la variable de entorno CRON_PORT.
El servicio cron incluye:
- Punto de comprobación de estado:
/health- Devuelve el estado del servicio y las tareas activas - Activación manual de tareas:
POST /trigger/:taskName- Ejecutar manualmente tareas programadas. La tareadaily-summary-dispatchse rechaza en esta ruta; utiliza Configuración → Resumen Diario Enviar resumen ahora en su lugar - Gestión de tareas:
POST /start/:taskNameyPOST /stop/:taskName- Controlar tareas individuales - Recarga de configuración:
POST /reload-config- Recarga la configuración desde la base de datos - Reinicio automático: El servicio se reinicia automáticamente si se bloquea (administrado por
docker-entrypoint.shen implementaciones de Docker) - Modo de vigilancia: El modo de desarrollo incluye vigilancia de archivos para reinicios automáticos en cambios de código
- Monitoreo de copias de seguridad vencidas: Verificación automatizada y notificación de copias de seguridad vencidas (se ejecuta cada 5 minutos de forma predeterminada)
- Envío de resumen diario: Envía una instantánea del estado actual una vez al día a la hora UTC de Resumen Diario almacenada (
minute hour * * *). El valor predeterminado para nuevas instalaciones es 01:00 UTC. Cambiar la hora de envío recarga esta programación. La tarea se envía si Resumen Diario está habilitado y no vuelve a comprobar el reloj. - Limpieza de registro de auditoría: Limpieza automatizada de entradas antiguas del registro de auditoría (se ejecuta diariamente a las 2 AM UTC)
- Compactación de base de datos: Domingo semanal 04:00 UTC. Elimina filas de copia de seguridad cuyo servidor ya no existe, filas de servidor sin copias de seguridad restantes, claves
backup_settingsyoverdue_notificationssobrantes, depura filas antiguas de entrega de Resumen Diario y ejecutaVACUUMde SQLite - Actualización de versión de Duplicati: Actualiza las versiones de canal de Duplicati más recientes en caché desde GitHub Releases. El valor predeterminado es diariamente a las 3 AM UTC; los administradores pueden cambiar el intervalo y la hora de inicio en Configuración → Versiones de Duplicati.
- Programación flexible: Expresiones cron configurables para diferentes tareas
- Integración de base de datos: Comparte la misma base de datos SQLite con la aplicación principal
- API RESTful: API completa para gestión y monitoreo del servicio
- Vinculación local: Escucha en
127.0.0.1de forma predeterminada (CRON_BIND_HOST). Los enlaces que no son de bucle invertido requierenCRON_SERVICE_SECRET