上线检查清单
从单机试跑走向生产前,按本清单逐项过一遍。每项给出「为什么」与「在哪配」,可勾选。
启动与探针
- [ ]
/health返回 200 即存活。 - [ ] 外部负载均衡器健康检查指向
/ready(数据库不可达或网关排空时返回 503,用于灰度下线/零停机重启)。 - [ ]
HOST设为0.0.0.0才能在容器里被端口映射访问(127.0.0.1只本机)。
凭证与加密密钥
- [ ] 内置管理员账号
protoflux的初始密码已改(控制台 → 控制台用户)。 - [ ]
ENCRYPTION_KEY从环境变量注入,未硬编码到镜像或 compose 明文。 - [ ] 已备份
ENCRYPTION_KEY:丢失 = 已加密数据(访问密钥、上游 API key)永久不可读。 - [ ] 多实例时所有实例用同一把
ENCRYPTION_KEY。
ENCRYPTION_KEY 丢失不可逆
没有这把密钥,数据库里的访问密钥、上游 API key 都无法解密。务必单独备份,不要只存在部署环境里。
控制台暴露面
- [ ]
CONSOLE_ALLOW_REMOTE默认true(镜像默认允许远程访问控制台)。需要收紧时设false并配合反向代理 + 访问控制(防火墙 / IP 白名单 / VPN),不要裸暴露。 - [ ] 登录防爆破已生效(默认 5 次失败封 300 秒)。
- [ ] SSO 企业登录(如需)已配,见 配置 SSO 企业登录。
存储与多实例
- [ ] 单机用 SQLite,文件路径用绝对路径(如
/var/lib/protoflux/stats.sqlite),挂载到持久卷。 - [ ] 多实例用 PostgreSQL(共享统计与配置,30s 跨实例同步)+ Redis(共享会话/限流/IP 封禁/日志广播)。字段见 环境变量配置参考。
- [ ] PostgreSQL 版本 17+:日志表(
request_logs/openai_message_store)按天 RANGE 分区、主键为IDENTITY列,分区表上的 IDENTITY 列仅 PG17 起支持(更早版本建表即失败)。 - [ ] 多实例务必配 Redis,否则会话/限流/IP 封禁退化为每实例独立,封禁阈值形同虚设。见 做到高可用。
日志与磁盘
- [ ]
LOG_RETENTION_DAYS按合规需求设(如 30/90 天)。 - [ ]
LOG_MAX_BODY_SIZE_MB按需设(默认 25 MB,设 0 不捕获 body 但失去内容留痕)。 - [ ]
LOG_STREAM_BODY_MAX_DISK_MB控制流式 body 磁盘占用。 - [ ] 多实例时 Live 日志 SSE 流汇聚所有实例日志,见 日志查看器。
限流与封禁
- [ ]
RATE_LIMIT_*按密钥/IP/上游配 RPM、并发、TPM 上限。字段见 审计与安全配置。 - [ ] 多实例时限流走 Redis 共享,否则每实例独立、阈值被分散。
备份与恢复
- [ ] 数据库(SQLite 文件 / PostgreSQL)定期备份。
- [ ]
ENCRYPTION_KEY单独备份(见上)。 - [ ] 容器的环境变量清单(compose / task definition)纳入版本控制。
- [ ] 验证过一次恢复流程(光备份不验证等于没备份)。
逐项清单
把上面勾选项复制到自己的部署文档里逐项确认。
常见问题
Q:单机能直接上生产吗? 小规模可以,但失去高可用与水平扩展。规模上去或要求高可用就上多实例 + PostgreSQL + Redis。
Q:忘记管理员密码怎么办? 设 RESET_ADMIN=<新密码> 后重启即重置(仅生效一次)。需再次重置:重新设 RESET_ADMIN 为新值再重启。重置成功后去掉该环境变量再重启,可避免每次重启告警。见 Docker 单机跑通 的常见问题。
