监控与续期
证书管理的真正成本不在签发,而在「别忘了续」。CertHub 用三层机制兜住:定时续期 + 站点巡检 + 到期提醒。
定时续期

流水线详情页右上角 定时任务,按日历选(每天 / 每周 / 每月 1 日 / 自定义 cron),按钮上直接显示人话时间,例如「每天 03:00」。
保存后写回 content.triggers,下次运行时间由后端立即重算,不用等调度器下一轮 tick。停用会清空下次执行时间,重新启用会按当前 cron 再算一遍。
为什么可以「每天跑一次」
证书任务里有 renewDays(默认 20 天):没到续期时间就自动跳过签发,直接复用证书库里的证书。所以定时任务设成每天跑是安全的,不会反复申请触发 CA 限流。
几个相关的开关:
| 开关 | 作用 |
|---|---|
| 提前续期天数 | 距离到期小于这个天数才重新签 |
| 强制续期 | 忽略剩余天数,立刻重签(换 CA、换密钥类型时用) |
| 证书已存在且未过期就跳过 | 默认开启 |
| 刚申请过就跳过(分钟) | 防止短时间重复触发 |
站点监控

站点监控 用来盯住那些不由本平台签发的证书(别人家的站点、云厂商托管的证书、还没接管的存量站点)。
- 录入 URL 即可,系统定时探测 443 端口,读取证书状态、签发者、到期时间、剩余天数与最近巡检时间。
- 列表中用「正常 / 即将到期 / 异常」标色,异常站点可以和流水线联动修复。
- 可以手动点「巡检」立即刷新。
到期提醒
系统设置 → 通知 → 到期提醒天数(默认 15 天)。证书进入提醒窗口后,通过默认通知渠道推送;站点监控发现异常也会推。
生产环境建议至少配一个即时通讯类渠道(钉钉 / 企微 / 飞书机器人),确保续期失败能第一时间触达。
失败兜底
- 失败后跳转:任务配置底部可以选「失败后跳转到」后面某个任务,画布上会多一条橙色虚线。常见用法是「申请失败 → 跳到通知任务」,避免失败静默。
- 单入边:一个任务最多只有一条「失败后」入边,被占用时下拉项会置灰并注明占用者。
- 协作式停止:执行中可以点「停止」,在任务之间与 ACME 轮询的每一轮检查标志位。
- 进程被强杀:启动时会把遗留的
running记录标成failed并补一句「服务重启,本次执行已中断」,前端不会一直转圈。
健康检查
GET /api/health:
- 正常返回
code=200; - 数据库不可用 / 磁盘 < 200MB / 调度器没起来时返回 503,并在
data里给出原因。
用 Uptime Kuma、云监控或宝塔告警盯这个地址即可。它同时也是容器 HEALTHCHECK 用的探针。
bash
curl -s http://127.0.0.1:8000/api/health
# {"code":200,"data":{"db":"ok","scheduler":"running","diskFreeMb":...}}容量
| 项目 | 默认 | 怎么改 |
|---|---|---|
| 每条流水线的执行历史 | 保留 20 条 | 流水线「定时任务」抽屉里的「保留条数」 |
| 备份份数 | 14 份 | tools/backup.py --keep N |
| 证书文件 | 每次签发一份,不自动删 | 证书库删除后文件仍在 data/certs,可按需清理旧目录 |
数据目录持续变大时,先看执行历史保留条数与 data/certs 的旧目录。
