Files
beaver_project/deploy-control
steven_li 3b0af173cc refactor(beaver): 移除Hermes相关引用和迁移代码,完善Beaver后端主线实现
移除了所有Hermes相关的命名引用,包括:
- 从.gitignore中清理相关构建缓存文件
- 将README中的beaver-home路径配置更新
- 完善backend/README.md文档说明Beaver后端主线实现
- 移除Hermes风格的相关注释和兼容性代码
- 清理nanobot环境变量兼容性处理
- 删除技能迁移和服务迁移相关功能代码
- 更新测试用例中相关命名和函数名

BREAKING CHANGE: 移除了Hermes迁移相关API和CLI命令,不再支持nanobot环境变量兼容性
2026-05-14 17:20:32 +08:00
..

deploy-control

部署机接口:

  • auth-portal 提供实例创建和实例解析 API
  • 调用 app-instance/create-instance.sh
  • 在实例创建后刷新 router-proxy

接口

  • GET /healthz
  • POST /api/instances/register
  • POST /api/instances/resolve
  • DELETE /api/instances/{instance_id}

关键环境变量

  • DEPLOY_CONTROL_API_TOKEN
  • APP_INSTANCE_API_KEY
  • DEFAULT_AUTHZ_BASE_URL
  • DEFAULT_AUTHZ_OUTLOOK_MCP_URL
  • DEFAULT_OUTLOOK_MCP_SERVER_ID
  • DEPLOY_PUBLIC_BASE_DOMAIN
  • DEPLOY_PUBLIC_PORT
  • DEPLOY_PUBLIC_SCHEME
  • APP_INSTANCE_NETWORK_NAME

建议直接参考:

默认实例 URL 形如:

http://<instance-slug>.127.0.0.1.nip.io:8088

实例容器本身的 20000-29999 端口默认只绑定到部署机 127.0.0.1,外部入口应走 router-proxy

如果你希望所有新实例默认带 Outlook MCP HTTP 工具,可以设置:

DEFAULT_AUTHZ_OUTLOOK_MCP_URL=http://10.6.80.29:8000/mcp
DEFAULT_OUTLOOK_MCP_SERVER_ID=outlook_mcp

这样 deploy-control 创建的新实例会自动写入一条默认 MCP server 配置,并默认使用 oauth_backend_token + mcp:<server_id> 的 audience。

本机启动

cd /home/ivan/xuan/nano_project/deploy-control
uv run server.py

Docker 启动

如果要容器化运行,需要挂载:

  • Docker socket/var/run/docker.sock
  • /home/ivan/xuan/nano_project/app-instance
  • /home/ivan/xuan/nano_project/router-proxy

并传入对应环境变量,让容器内脚本路径仍能访问这两个目录。

关键点:

  • 宿主机路径要原样挂进容器,不要改挂载目标路径
  • 同时显式传 APP_INSTANCE_DIRROUTER_PROXY_DIR

示例:

docker run -d \
  --name nano-deploy-control \
  --restart unless-stopped \
  --network nano-instance-edge \
  -p 8090:8090 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/ivan/xuan/nano_project/app-instance:/home/ivan/xuan/nano_project/app-instance \
  -v /home/ivan/xuan/nano_project/router-proxy:/home/ivan/xuan/nano_project/router-proxy \
  -e APP_INSTANCE_DIR=/home/ivan/xuan/nano_project/app-instance \
  -e ROUTER_PROXY_DIR=/home/ivan/xuan/nano_project/router-proxy \
  -e DEPLOY_CONTROL_API_TOKEN=change-me \
  -e APP_INSTANCE_IMAGE=nano/app-instance:latest \
  -e APP_INSTANCE_NETWORK_NAME=nano-instance-edge \
  -e APP_INSTANCE_API_KEY=sk-xxxxxxxx \
  nano/deploy-control:latest

如果这里错把宿主机目录映射成容器内的另一个短路径,例如 /app-instance,那么 deploy-control 通过 Docker socket 创建实例时会把错误路径传给 Docker最终导致实例容器拿不到 config.json 并持续重启。