生产环境加固¶
上线前校验¶
准备项目根目录 .env 与 backend_api_python/.env,替换所有默认凭据,然后执行:
python backend_api_python/scripts/check_production_config.py \
--env-file .env \
--env-file backend_api_python/.env
校验会拒绝默认数据库密码、管理员密码、Grafana 密码、JWT 密钥和凭据加密密钥。
锁定运行环境¶
生产覆盖层使用 UID/GID 10001 运行后端进程,移除 Linux capabilities,将根文件系统
设为只读,并限制 CPU、内存与进程数:
docker compose \
-f docker-compose.yml \
-f docker-compose.production.yml \
-f docker-compose.observability.yml \
up -d --build
首次锁定启动前必须准备好全部密钥,因为非 root 容器不能生成或回写这些值。数据库结构
更新只能由 migration 服务执行,不要让 API Worker 并发迁移。
网络边界¶
- 公网只暴露 TLS 反向代理的 80/443。
- PostgreSQL、两套 Redis、Prometheus、Grafana、Alertmanager 不直接暴露公网。
- 后端 API 若必须独立暴露,应置于认证、限流和 TLS 之后。
- MCP 网络监听必须设置独立的
QUANTDINGER_MCP_AUTH_TOKEN,不能复用 Agent Token。
数据与恢复¶
- 备份 PostgreSQL,并定期验证恢复流程。
- 队列任务必须跨主机故障保留时,备份
celery_redis_data。 - 缓存 Redis 可以淘汰,不应作为 Celery broker。
- 监控
redis-jobs内存;noeviction会在内存不足时拒绝新写入,而不是丢弃任务。 - 记录密钥轮换、数据库恢复和实盘停机开关的演练结果。
