生产环境部署
本文档介绍将 PAI 部署到生产环境时需要关注的配置、安全性和运维事项。环境变量
生产环境需要配置以下关键环境变量:string
required
PostgreSQL 数据库连接字符串,例如
postgresql+asyncpg://user:pass@host:5432/paistring
required
Redis 连接地址,例如
redis://host:6379/0string
required
JWT Token 签名密钥。生产环境必须设置为强随机字符串,切勿使用默认值
string
required
管理后台访问令牌,用于访问管理 API 和仪表盘
HTTPS 与反向代理
生产环境必须使用 HTTPS。推荐使用 Nginx 作为反向代理:推荐使用 Let’s Encrypt 免费获取 SSL 证书,并配合 certbot 自动续期。
Webhook URL 配置
各平台的 Webhook 地址需要指向生产域名:Telegram 要求 Webhook 必须使用 HTTPS。其他平台同样建议使用 HTTPS 保证数据安全。
Memory Worker
memory_worker 是独立于主后端的异步进程,负责从 Redis 队列消费对话消息并提取用户记忆。
生产环境注意事项:
- 独立进程: memory_worker 必须作为单独的进程运行,不要合并到主后端中
- 重启策略: 设置
restart: unless-stopped确保异常退出后自动恢复 - 资源隔离: 建议为 memory_worker 分配独立的 CPU 和内存限制,避免影响主后端
Redis 持久化
生产环境建议开启 Redis 持久化,防止重启后数据丢失:- AOF 模式:
appendonly yes开启追加日志持久化 - 同步频率:
appendfsync everysec每秒同步一次,兼顾性能和可靠性
数据库备份
1
定时备份
使用 cron 定时执行
pg_dump 备份数据库:2
备份验证
定期验证备份文件可以正常恢复:
3
远程存储
将备份文件同步到远程存储(如 S3、OSS),防止服务器故障导致备份丢失
日志管理
日志输出
后端日志默认输出到./logs 目录和标准输出。生产环境建议:
- 日志级别: 设置为
INFO,避免DEBUG级别产生过多日志 - 日志轮转: 配置 logrotate 或 Docker 的日志驱动防止日志文件无限增长
Docker 日志限制
为所有服务配置日志大小限制,防止磁盘空间耗尽:监控
管理仪表盘
PAI 内置管理后台,通过ADMIN_TOKEN 访问,提供以下监控能力:
- 工具使用分析: 查看各工具的调用频次和成功率
- 平台消息统计: 各平台的消息量和活跃用户数
- 系统状态: 数据库连接、Redis 连接、Worker 运行状态
健康检查
安全清单
环境变量安全
环境变量安全
- 使用强随机值设置
JWT_SECRET和ADMIN_TOKEN - 不要将
.env文件提交到版本控制 - 生产数据库使用强密码
网络安全
网络安全
- 强制使用 HTTPS
- 数据库和 Redis 端口不要暴露到公网
- 配置防火墙规则,仅开放必要端口(80、443)
Webhook 安全
Webhook 安全
- 为 Telegram 配置
TELEGRAM_WEBHOOK_SECRET - 为飞书配置
FEISHU_ENCRYPT_KEY - 验证所有 Webhook 请求的来源
数据安全
数据安全
- 定期备份数据库并验证备份可用性
- 开启 Redis 持久化
- 备份文件加密存储