部署指南
ACE = AI Computing Explorer
本指南涵盖 Open ACE 在各种场景下的部署方法。
目录
快速开始
本地部署
# 安装依赖
pip install -r requirements.txt
# 初始化配置
python3 cli.py config init
# 运行数据库迁移
alembic upgrade head
# 启动 Web 服务器
python3 server.py
# 访问 http://localhost:19888
Docker 部署
前提条件
- 已安装 Docker 和 Docker Compose
- Open ACE Docker 镜像(
open-ace:latest) - PostgreSQL 镜像(
postgres:15-alpine)
非 root 运行(默认)
Open ACE 镜像默认以非 root 用户 open-ace(uid 1000)运行。生产阶段中的
USER 1000 指令意味着 docker run、docker-compose 与 Kubernetes 都会以
uid 1000 执行入口脚本,而不再仅依赖清单中的 securityContext。uid/gid 1000
是稳定的,并与镜像中内置的文件属主、K8s 的 runAsUser/runAsGroup: 1000
保持一致。
多用户工作区模式(WORKSPACE_MULTI_USER_MODE=true 或配置中的
workspace.multi_user_mode: true)确实需要 root——它会创建系统用户
(useradd)、修复属主(chown)并在 /home 下切换身份
(sudo -u <user>)。多用户部署必须显式回退到 root:
docker run --user 0 -e WORKSPACE_MULTI_USER_MODE=true \
-e OPENACE_ALLOW_ROOT_MULTI_USER=1 ...
必须同时设置 --user 0(或清单中的 runAsUser: 0)与
OPENACE_ALLOW_ROOT_MULTI_USER=1,否则入口脚本会以清晰的错误信息退出,
而不是默默吞掉非 root 多用户部署会遇到的 useradd/chown 权限失败。
初始部署
# 1. 导出 Docker 镜像(在开发机上)
./scripts/export-image.sh --compress
# 2. 复制到服务器
scp dist/open-ace-images.tar.gz user@server:~
scp scripts/deploy.sh user@server:~
# 3. 运行部署脚本
chmod +x deploy.sh
sudo ./deploy.sh
# 4. 按照交互提示操作
部署配置
部署脚本将提示以下配置:
| 设置 | 说明 | 默认值 |
|---|---|---|
| 运行用户 | 运行应用的用户 | open-ace |
| 部署目录 | 安装目录 | /home/open-ace/open-ace |
| Web 端口 | Web 服务器端口 | 19888 |
| 主机名 | 服务器主机名 | 自动检测 |
| 数据库用户 | PostgreSQL 用户名 | open-ace |
| 数据库名称 | PostgreSQL 数据库名 | ace |
| OpenClaw | 启用 OpenClaw 工具 | yes |
| Claude | 启用 Claude 工具 | yes |
| Qwen | 启用 Qwen 工具 | yes |
| 工作区 | 启用工作区 | no |
注意:工作区在单独的容器中运行。启用后,Open ACE 将连接到指定 URL 的工作区服务。请确保工作区容器正在运行且端口可访问。
URL 配置:如果在工作区或 OpenClaw URL 中输入 localhost,部署脚本会自动将其转换为服务器 IP 地址。这是因为:
- URL 由前端(浏览器)使用,而非容器
- 浏览器无法将
localhost解析为服务器地址 - 示例:
http://localhost:3000→http://192.168.1.100:3000
默认凭证
部署完成后,使用以下凭证登录:
用户名: admin
密码: admin123
重要:首次登录后请立即修改默认密码!
在启动生产环境前,请先在 .env 或密钥管理系统中提供以下密钥:
SECRET_KEY— Flask 会话密钥,必须是强随机唯一值OPENACE_ENCRYPTION_KEY— 专用于 API Key / SMTP 密码存储加密的独立密钥UPLOAD_AUTH_KEY— 上传接口使用的共享认证密钥
目录结构
/home/open-ace/open-ace/
├── config/ # 配置文件
│ └── config.json # 主配置文件
├── docker-compose.yml # Docker Compose 配置
└── .env # 环境变量(敏感信息!)
注意:数据存储在 PostgreSQL 容器的卷(postgres-data)中,而非主机文件系统。
管理命令
cd /home/open-ace/open-ace
# 查看状态
docker compose ps
# 查看日志
docker compose logs -f
# 仅查看 open-ace 日志
docker compose logs -f open-ace
# 重启服务
docker compose restart
# 仅重启 open-ace
docker compose restart open-ace
# 停止服务
docker compose down
# 启动服务
docker compose up -d
更新 Open ACE 镜像
发布新版本时,只需更新 Docker 镜像:
方法一:简单重启(推荐)
cd /home/open-ace/open-ace
# 1. 加载新镜像
gunzip -c open-ace-images.tar.gz | docker load
# 2. 重启 open-ace 容器
docker compose up -d open-ace
# 3. 验证启动
docker compose logs -f open-ace
方法二:完整重建
cd /home/open-ace/open-ace
# 1. 加载新镜像
gunzip -c open-ace-images.tar.gz | docker load
# 2. 停止并删除旧容器
docker compose stop open-ace
docker compose rm -f open-ace
# 3. 启动新容器
docker compose up -d open-ace
# 4. 验证启动
docker compose logs -f open-ace
方法三:使用版本标签
# 1. 加载特定版本
docker load -i open-ace-v1.2.0.tar
# 2. 更新 docker-compose.yml
sed -i 's|image: open-ace:latest|image: open-ace:v1.2.0|' docker-compose.yml
# 3. 重建容器
docker compose up -d open-ace
注意:
- 数据存储在
./data目录和 PostgreSQL 卷中,不会丢失 ./config中的配 置会被保留- PostgreSQL 容器继续运行,只更新 open-ace 容器
数据库迁移
如果新版本包含数据库模式变更:
cd /home/open-ace/open-ace
# 运行迁移
docker compose run --rm open-ace alembic upgrade head
# 重启应用
docker compose restart open-ace
卸载
Docker 方式卸载
如果使 用纯 Docker 部署(无 deploy.sh 脚本),可手动卸载:
# 停止并删除容器
docker compose down
# 删除镜像
docker rmi openace/open-ace:latest postgres:15-alpine
# 删除数据卷(彻底清理)
docker volume rm open-ace_postgres-data open-ace_config-data open-ace_workspace-data
# 删除本地配置(可选)
rm -rf ~/.open-ace ./logs