Skip to main content

生产环境部署

本文档介绍将 PAI 部署到生产环境时需要关注的配置、安全性和运维事项。

环境变量

生产环境需要配置以下关键环境变量:
string
required
PostgreSQL 数据库连接字符串,例如 postgresql+asyncpg://user:pass@host:5432/pai
string
required
Redis 连接地址,例如 redis://host:6379/0
string
required
JWT Token 签名密钥。生产环境必须设置为强随机字符串,切勿使用默认值
string
required
管理后台访问令牌,用于访问管理 API 和仪表盘
请为 JWT_SECRET 生成至少 32 位的随机字符串。可使用 openssl rand -hex 32 生成。

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_SECRETADMIN_TOKEN
  • 不要将 .env 文件提交到版本控制
  • 生产数据库使用强密码
  • 强制使用 HTTPS
  • 数据库和 Redis 端口不要暴露到公网
  • 配置防火墙规则,仅开放必要端口(80、443)
  • 为 Telegram 配置 TELEGRAM_WEBHOOK_SECRET
  • 为飞书配置 FEISHU_ENCRYPT_KEY
  • 验证所有 Webhook 请求的来源
  • 定期备份数据库并验证备份可用性
  • 开启 Redis 持久化
  • 备份文件加密存储