基于 OpenClaw 与 Open WebUI 搭建企业多部门 AI 平台
在 Ubuntu 服务器上利用 Docker 部署 OpenClaw 与 Open WebUI 构建企业级多部门 AI 平台的方案。通过 Open WebUI 统一前端管理权限,后端挂载多个隔离的 OpenClaw 容器实现部门数据隔离。详细说明了解决 Docker 构建网络超时、目录权限配置、多节点端口冲突及网关 API 开启等关键步骤,并演示了如何在 Open WebUI 中接入不同部门的专属模型以实现精准管控。

在 Ubuntu 服务器上利用 Docker 部署 OpenClaw 与 Open WebUI 构建企业级多部门 AI 平台的方案。通过 Open WebUI 统一前端管理权限,后端挂载多个隔离的 OpenClaw 容器实现部门数据隔离。详细说明了解决 Docker 构建网络超时、目录权限配置、多节点端口冲突及网关 API 开启等关键步骤,并演示了如何在 Open WebUI 中接入不同部门的专属模型以实现精准管控。

引言:
最近在尝试使用 OpenClaw,发现这个 AI 个人助理框架非常有意思。于是团队里就有人提出:能不能为公司的多个部门,分别搭建专属的 OpenClaw 服务器?
诚然,现在有钉钉、飞书等成熟的办公软件可以接入 AI,但对于一些尚未全面普及此类协作软件的企业(或者需要绝对私有化部署的团队)来说,独立搭建一套内部 AI 门户依然是刚需。
起初,我们考虑直接让大家通过 OpenClaw 自带的 Web 界面进行跨电脑访问。但实操后发现这存在致命缺陷:
为了解决这些痛点,我们最终确定了这套架构方案:前端使用 Open WebUI 统一接管用户登录与权限分发,后端通过 API 挂载多个互不干扰的 OpenClaw 容器。
部署环境: Ubuntu 系统
核心工具: Docker, Docker Compose
在这一步,我们需要先拉起 Open WebUI 容器。它将作为整个企业 AI 平台的'门面',负责员工账号注册、鉴权以及对话界面的展示。
(由于该工具的搭建非常成熟,此处不过多赘述。具体安装步骤与 Docker 运行指令,请参考官方文档:https://docs.openwebui.com/)
搭建完成后,你将获得一个支持多用户管理的 ChatGPT 风格界面。接下来,我们为它注入'灵魂'。
我们需要从官方 GitHub 拉取源码,并使用其提供的 docker-setup.sh 脚本来进行初始化。
但在直接执行脚本前,有几个极易踩坑的细节需要提前优化(特别是国内网络环境和多节点共存问题):
由于 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 \ 参数,让容器构建时借用宿主机网络。
为了实现部门隔离,我们需要把不同部门的配置挂载到不同的文件夹中。但在挂载前,必须将宿主机文件夹的权限移交给容器内的 node 用户(UID 1000):
# 假设我们先为研发部 (rd-dept) 创建专属目录
mkdir -p ~/openclaw-cluster/rd-dept
sudo chown -R 1000:1000 ~/openclaw-cluster/rd-dept
官方默认脚本容易导致网关 (Gateway) 和桥接 (Bridge) 端口冲突,且二次运行会覆盖旧容器。我们需要通过环境变量赋予它独立的'身份证'。
在 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
避坑指南:
Gateway bind 选项时,务必选择 LAN,否则后续 Open WebUI 无法跨容器连接。PROJECT_NAME 改掉,再运行一次即可,完美实现物理隔离!部署完节点后,默认情况下 OpenClaw 的网关服务可能并没有显式开启标准的 HTTP API 通道。为了让 Open WebUI 能够顺畅地与它对话,我们需要让 OpenClaw 充当一个'OpenAI 兼容服务器'。
我们需要手动修改各个部门节点下的配置文件(例如我们刚才为研发部创建的 ~/openclaw-cluster/rd-dept/config.json)。
使用文本编辑器(如 nano 或 vim)打开该配置文件,向下滚动找到 "gateway" 属性块。避坑细节: 在很多默认生成的配置中,gateway 下方是没有 http 这个属性的。我们需要手动把这块代码补进去,开启对话补全端点:
{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}
(保存并退出后,切记使用 sudo docker compose -p openclaw-rd restart 重启一下该节点的容器,让新配置生效。)
配置改完后,我们要把该节点的 API Token 提取出来,这相当于 Open WebUI 敲开该部门大门的'通行证'。
当我们把各个部门的 OpenClaw 节点都跑起来,并拿到对应的 API Token 后,就到了'万剑归宗'的最后一步:将它们统一接入前端面板。
1. 进入外部连接设置 使用管理员账户登录 Open WebUI,点击右上角头像进入 管理员面板 (Admin Panel),在左侧菜单选择 设置 (Settings),然后点击 外部连接 (Connections)。
2. 添加并配置 OpenAI 接口 在'OpenAI 接口'模块,点击'添加连接'(或编辑现有连接),严格按照以下格式进行填写:
http://host.docker.internal:你的端口号/v1
18776)。切记,URL 结尾只需要到 /v1,绝对不要画蛇添足加上 /chat/completions!gateway.json 里提取出的超长 Token 粘贴到这里。{"x-openclaw-agent-id": "main"}。这行代码的作用是精准唤醒 OpenClaw 中名为 "main" 的主智能体。3. 测试并保存 填写完毕后,点击右下角的保存。如果配置无误,URL 右侧的刷新按钮旁会亮起一个绿色的开关标志,代表打通成功!
4. 部门级隔离与权限分发 (RBAC) 重复上述步骤,你可以把【研发部】、【运营部】等多个节点的 API 全部添加进来。接着,进入 WebUI 的 工作区 (Workspace) -> 模型 (Models),利用刚接入的不同 API 接口,创建对应的专署大模型。最后,通过系统自带的用户组(Groups)权限管理,设定'研发部模型仅研发员工账号可见'。
至此,一个数据物理隔离、权限精准管控、对话可查可溯源的企业级多部门 AI 平台,就在你的服务器上彻底落成了!

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online