跳到主要内容

团队部署

选择部署方式​

从源码启动Docker(单台服务器)自行生产部署
命令python start.pypython ops/self-host/deploy.py up自己运行 Hub
数据库SQLiteCompose 里的 PostgreSQL 16你自己的 PostgreSQL
谁能访问本机这台服务器;团队通过你的 HTTPS 代理访问你的团队
密钥生成在数据目录里生成在 deployment.json 里你的密钥管理或环境配置
指南从源码启动用 Docker 自部署本页

大部分单台服务器的团队用 Docker 启动器就够了。如果你要用自己的进程管理、反向代理和数据库运行 Hub,请看本页。

生产环境要求​

设置 SODUWORK_ENV=production 后,以下条件只要有一条不满足,Hub 就会拒绝启动:

配置项要求
DATABASE_URLPostgreSQL,例如 postgresql+asyncpg://soduwork:<PASSWORD>@db.example.com:5432/soduwork。不允许使用 SQLite
ADMIN_PASS已设置,且不是公开的默认值
AUTH_SECRET强随机的签名密钥,不是公开的默认值
CORS_ORIGINS明确列出来源,不允许 *
DEVICE_AUTH_COMPATfalse
HUB_PUBLIC_URL用户访问的 HTTPS 地址,例如 https://work.example.com

开发环境以外,Hub 不会替你生成缺失的密钥。

另外还要设置:

  • CONNECTOR_OAUTH_KEY,用于加密连接器的授权信息。
  • 单实例部署时设置 DB_MIGRATION_MODE=auto,启动时自动执行版本化迁移。不要对同一个数据库同时运行两个迁移。

这些值请放在密钥管理工具或环境配置里,不要写进会提交的文件。请使用专用的数据库,以及权限最小的数据库账号。

运行 Hub​

cd hub-backend
python -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 9080

在 hub-frontend/ 运行 npm ci && npm run build 构建管理端。hub-frontend/dist 存在时,Hub 会在同一个地址提供它。存活检查用 GET /healthz,就绪检查用 GET /readyz。

反向代理​

在 Hub 前面放一个 HTTPS 反向代理:

  • 把 HTTPS 转发到 Hub 的本机端口。
  • 支持 WebSocket 升级,客户端和 Runner 都使用 WebSocket。
  • 允许长时间的流式响应和文件上传。
  • 公开地址里不要加 /api 或凭据。

上线后,通过代理检查登录、文件上传、WebSocket 连接和流式对话。

工作在哪里执行​

Hub 不需要运行 Agent。本机工作在各自的客户端里执行,云端工作在登记的执行机上执行(见 Runner 与云端环境)。Docker 部署里设置了 HUB_LOCAL_EXECUTION_ENABLED=false,让 Agent 不在 Hub 容器内运行。

多个 Hub 节点​

启动器只部署单节点。多个 Hub 节点需要你自己设计共享的文件存储和协调机制。

下一步​

编辑此页