production-deploy.md
2.88 KB
生产部署环境与上线流程
状态:✅ 当前有效。2026-08-27 首次整理,来源于登录服务器实地核查(非猜测)。
服务器
- 地址:
root@60.205.214.169(hostnamehexyun)。本机已配好免密 SSH,直接ssh root@60.205.214.169即可,不需要额外问用户要密码/密钥。 - 对外域名
lemonboss.wudaima.com由这台机器提供服务。 - 同一台机器上还跑着大量不相关的容器(wordpress、milvus、rasa、chroma 等),
docker相关命令务必认准容器名lemonboss,不要用docker restart之类命令波及别的服务。
部署拓扑
- 代码目录(host 侧):
/opt/lemonboss,属主hexyun:hexyun。是一个独立 git 仓库,origin与本地仓库一致,指向git@gitlab-wuwei.hexpm.com:yibo/lemonboss.git,跟踪分支main。 - 运行方式:Docker 容器
lemonboss(镜像lemonboss-base:latest),重启策略unless-stopped。/opt/lemonbossbind-mount 到容器内/app/opt/databind-mount 到容器内/data- entrypoint:
docker-entrypoint.sh→node server/index.js
- 端口:容器内 3010 → 宿主机
127.0.0.1:3011(对外走反向代理到lemonboss.wudaima.com,代理具体配置未查)。
更新上线流程
- 本地正常提交,
git push origin main。 - 登录服务器:
ssh root@60.205.214.169,cd /opt/lemonboss && git pull origin main。- 必须用
root拉代码:目录属主虽是hexyun,但只有root配了到gitlab-wuwei.hexpm.com的部署 SSH key;hexyun没配任何 key,sudo -u hexyun git pull会直接因 host key / 鉴权失败报错。 git pull完成后,把本次改动涉及的文件chown hexyun:hexyun改回属主(git pull用 root 跑,新拉下来的文件会变成root:root),避免以后应用进程(跑在hexyun身份下)对这些文件失去写权限。整个目录不建议全量chown -R(node_modules 体量大且没必要)。
- 必须用
docker restart lemonboss让新代码生效——bind mount 是实时的,但 Node 进程不会自动热重载,必须重启容器内进程。- 验证:
curl http://127.0.0.1:3011/api/health应返回 200docker logs --tail 40 lemonboss确认启动日志无异常(正常应看到✅ 服务启动: http://0.0.0.0:3010等心跳/看门狗初始化行)
其他线索
/opt/lemonboss/.env里的OPEN_API_KEYS是/api/open/*外部调用的鉴权 key,本文档不记录明文值。/opt/lemonboss/.data/jobs-openapi.json是 open-api invoke 端点(server/routes/open-api.js)的 job 记录,容器重启时会从这个文件恢复历史 job(日志里[JobManager] Restored N jobs就是这个)——这是 job 记录,不是会话历史,二者存储位置不同(会话历史见system/agents/{agentId}/{companyId|_global}/conversations/)。