背景与目标
近期尝试使用 OpenClaw 作为 AI 个人助理框架,团队提出为公司的多个部门分别搭建专属的 OpenClaw 服务器。虽然钉钉、飞书等办公软件可接入 AI,但对于需要绝对私有化部署或尚未全面普及此类协作软件的企业,独立搭建内部 AI 门户依然是刚需。
原生 OpenClaw Web 界面存在权限越界、无法溯源及缺乏隔离等问题。为此,确定架构方案:前端使用 Open WebUI 统一接管用户登录与权限分发,后端通过 API 挂载多个互不干扰的 OpenClaw 容器。
部署环境: Ubuntu 系统 核心工具: Docker, Docker Compose
第一步:搭建 Open WebUI 统一前端 (用户控制台)
拉起 Open WebUI 容器,作为企业 AI 平台的'门面',负责员工账号注册、鉴权以及对话界面的展示。
具体安装步骤与 Docker 运行指令,请参考官方文档:https://docs.openwebui.com/
搭建完成后,将获得一个支持多用户管理的 ChatGPT 风格界面。
第二步:初始化并部署 OpenClaw 多节点网关 (核心后端)
从官方 GitHub 拉取源码,并使用 docker-setup.sh 脚本进行初始化。直接执行脚本前,需优化以下细节(特别是国内网络环境和多节点共存问题):
细节 1:解决 Docker 构建时的网络超时
Docker 构建时处于隔离网络,常卡死在 pnpm install 阶段。拉取源码后,打开文件夹内的 Dockerfile,在 USER node 下方注入淘宝镜像源:
USER node # 注入国内镜像源加速依赖下载
ENV COREPACK_NPM_REGISTRY=https://registry.npmmirror.com
ENV npm_config_registry=https://registry.npmmirror.com
RUN pnpm install --frozen-lockfile
同时,打开 docker-setup.sh 脚本,在底部的 docker build \ 后面,加上 --network host \ 参数,让容器构建时借用宿主机网络。
细节 2:物理机目录权限交接
为实现部门隔离,将不同部门的配置挂载到不同的文件夹中。挂载前,必须将宿主机文件夹的权限移交给容器内的 node 用户(UID 1000):
# 假设我们先为研发部 (rd-dept) 创建专属目录
mkdir -p ~/openclaw-cluster/rd-dept
sudo chown -R 1000:1000 ~/openclaw-cluster/rd-dept
细节 3:执行终极多节点部署指令
官方默认脚本容易导致网关和桥接端口冲突,且二次运行会覆盖旧容器。通过环境变量赋予它独立的'身份证'。
在 OpenClaw 源码目录下,执行以下长命令启动【研发部专属节点】:
sudo OPENCLAW_GATEWAY_PORT=18776 \
OPENCLAW_BRIDGE_PORT=18777 \
OPENCLAW_CONFIG_DIR=$HOME/openclaw-cluster/rd-dept \
OPENCLAW_WORKSPACE_DIR=$HOME/openclaw-cluster/rd-dept/workspace \
COMPOSE_PROJECT_NAME=openclaw-rd \
./docker-setup.sh
避坑指南:


