为什么要分阶段部署
VPS 部署最容易犯的错误是直接启动后台服务,然后同时排查模型、权限、网络和进程问题。正确顺序应是:先前台验证,再固定运行目录,再配置进程管理,最后接入外部通道。本文是可复用的方法论,不把未在你的服务器上执行过的结果伪装成实测数据。
一、环境和目录检查
pwd
python3 --version
command -v hermes
hermes profile list
printf 'HOME=%s\n' "$HOME"
确认运行用户、安装位置和数据目录。生产环境尽量使用专用非 root 用户,并保证该用户能读写自己的 Hermes 目录;不要因为权限报错就无条件使用 sudo。
二、先完成前台最小验证
先在 SSH 会话中启动,确认模型请求和基本工具可用。最小测试只做三件事:发送短文本、读取一个无敏感信息的文件、退出并重新进入。每次只引入一个新组件。
若失败,先判断是 API、DNS、代理、模型 ID 还是权限问题。不要在模型请求失败时同时修改服务管理器,否则日志会混在一起。
三、固定 Profile 和环境
后台服务必须明确指定运行用户、工作目录、Profile 和环境文件。环境变量只在交互式 Shell 中存在,是“前台正常、后台失败”的常见原因。可以在服务启动前用脱敏方式检查变量状态,但禁止把完整环境写入日志。
四、后台进程的验收
无论使用 systemd、supervisord 还是其他进程管理器,都应验证:
- 进程由预期用户启动;
- 重启后仍使用同一 Profile;
- 日志写入固定位置;
- 异常退出会自动拉起但不会无限重启;
- 停止服务不会删除记忆和会话数据。
建议给服务设置合理的启动间隔和日志轮转。不要把 API Key 放在 unit 文件、仓库或公开日志中。
五、网络与安全边界
只开放确实需要的端口,管理端口优先使用 SSH 密钥和防火墙限制。对外通道(例如 Telegram Webhook 或反向代理)应单独验证签名、来源和超时。若只是本地轮询任务,不要为了“方便”暴露管理端口。
六、升级与回滚
升级前记录当前版本、配置文件路径和服务状态;先在前台完成最小启动,再替换后台版本。回滚至少包括程序版本和兼容配置,记忆数据库应先备份后迁移。
后台任务异常时,可继续阅读Cron 未执行排查和后台进程排障。
VPS 部署验收表
[ ] 专用用户与固定 HERMES_HOME
[ ] 前台短请求成功
[ ] 后台环境变量来源明确
[ ] 日志可读且已脱敏
[ ] 重启/停止/恢复流程验证
[ ] 端口与 SSH 权限最小化
[ ] 升级前有版本和数据备份