# 生产部署环境与上线流程 > 状态:✅ 当前有效。2026-08-27 首次整理,来源于登录服务器实地核查(非猜测)。 ## 服务器 - 地址:`root@60.205.214.169`(hostname `hexyun`)。本机已配好免密 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/lemonboss` bind-mount 到容器内 `/app` - `/opt/data` bind-mount 到容器内 `/data` - entrypoint:`docker-entrypoint.sh` → `node server/index.js` - **端口**:容器内 3010 → 宿主机 `127.0.0.1:3011`(对外走反向代理到 `lemonboss.wudaima.com`,代理具体配置未查)。 ## 更新上线流程 1. 本地正常提交,`git push origin main`。 2. 登录服务器:`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 体量大且没必要)。 3. `docker restart lemonboss` 让新代码生效——bind mount 是实时的,但 Node 进程不会自动热重载,必须重启容器内进程。 4. 验证: - `curl http://127.0.0.1:3011/api/health` 应返回 200 - `docker 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/`)。