Cron 服务
应用程序包含一个独立的 cron 服务来处理计划任务:
在开发模式下启动 cron 服务
pnpm dev 已经在 Next.js 旁边启动了 cron 服务。要单独运行 cron(例如在第二个终端中):
pnpm cron:dev
在生产模式下启动 cron 服务
pnpm cron:start
本地启动 cron 服务(用于测试)
pnpm cron:start-local
cron 服务在单独的端口上运行(开发环境中为 8667,生产环境中为 9667),并处理计划任务,如过期备份通知。端口可以使用 CRON_PORT 环境变量进行配置。
cron 服务包括:
- 健康检查端点:
/health- 返回服务状态和活动任务 - 手动触发任务:
POST /trigger/:taskName- 手动执行计划任务。此路由拒绝daily-summary-dispatch任务;请改用设置 → 每日摘要 立即发送摘要 - 任务管理:
POST /start/:taskName和POST /stop/:taskName- 控制单个任务 - 配置重载:
POST /reload-config- 从数据库重新加载配置 - 自动重启:如果服务崩溃,服务会自动重启(在 Docker 部署中由
docker-entrypoint.sh管理) - 监视模式:开发模式包含文件监视,以便在代码更改时自动重启
- 过期备份监控:自动检查和通知过期备份(默认每 5 分钟运行一次)
- 每日摘要发送:在存储的每日摘要 UTC 时间(
minute hour * * *)每天发送一次当前状态快照。新安装的默认时间为 01:00 UTC。更改发送时间会重新加载此计划。如果启用了每日摘要,任务会发送,但不会重新检查时钟。 - 审计日志清理:自动清理旧的审计日志条目(每天凌晨 2 点 UTC 运行)
- 数据库压缩:每周日 04:00 UTC。删除服务器不再存在的备份行、没有剩余备份的服务器行、剩余的
backup_settings和overdue_notifications键、修剪旧的每日摘要传递行,并运行 SQLiteVACUUM - Duplicati 版本刷新:从 GitHub Releases 更新缓存的最新 Duplicati 通道版本。默认为每天凌晨 3 点 UTC;管理员可以在设置 → Duplicati 版本中更改间隔和开始时间。
- 灵活调度:可配置不同任务的 cron 表达式
- 数据库集成:与主应用程序共享同一个 SQLite 数据库
- RESTful API:完整的服务管理和监控 API
- 本地绑定:默认监听
127.0.0.1(CRON_BIND_HOST)。非环回绑定需要CRON_SERVICE_SECRET