docker部署openclaw+接入vllm模型(qwen-80b):少踩坑
前言
本文档用于规范“龙虾”系统在各环境(开发、测试、生产)中的部署流程与操作步骤,确保系统能够按照统一标准进行安装、配置与运行。
“龙虾”系统涉及多组件协同运行,部署过程中包含基础运行环境准备、依赖服务安装、配置文件调整、容器/进程启动以及运行状态检查等关键环节。为降低人为操作差异带来的风险,提高部署效率与可重复性,特编写本手册作为标准化执行依据。
本文档主要面向运维人员、开发人员及系统交付人员,适用于新环境初始化部署、版本升级部署及故障恢复场景。所有操作步骤均以可执行、可验证为原则编写,确保部署过程具备一致性与可追溯性。
在实际部署过程中,应结合具体环境资源配置(如 CPU、内存、存储及网络策略)进行适当调整,并严格遵循变更流程执行,避免对现网业务造成影响。
一、基础环境配置
1、自用配置
目前我是用一台服务器安装openclaw,vllm部署的离线qwen80b模型在另外一台A100服务器上
| 服务器版本 | ubuntu25.10 |
| docker版本 | 28.5.1 |
| docker compose版本 | 2.4.1 |

2、推荐硬件配置
为保证“龙虾”系统稳定运行,建议按照以下最低及推荐配置准备服务器资源:
1). 生产环境(推荐配置)
-
CPU:16 核及以上(建议 x86_64 架构)
-
内存:32 GB 及以上
-
存储:SSD 500 GB 及以上(根据数据量可扩展)
-
网络:千兆网卡及以上,稳定内网环境
-
操作系统:CentOS 7.9 / Ubuntu 20.04 LTS 及以上(推荐 LTS 版本)
2). 测试环境(最低可用)
-
CPU:8 核
-
内存:16 GB
-
存储:SSD 200 GB
-
网络:百兆或千兆均可
注:若涉及模型服务 / 大数据处理 / 多实例部署,建议按生产环境规格上浮 30%~50%。
3、推荐软件配置
1. Docker 版本要求
-
Docker Engine:20.10.0 及以上(推荐 24.x LTS 或更新稳定版)
2. Docker Compose 版本要求
版本要求:v2.0.0 及以上
(具体安装方法可以查看我之前docker以及compose安装的博客)
二、docker镜像准备
##下面是源镜像
docker pull ghcr.io/openclaw/openclaw:latest
##下面是国内镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openclaw/openclaw:latest
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openclaw/openclaw latest 3b898c03f210 2 weeks ago 3.02GB
三、准备 OpenClaw 配置目录
mkdir -pv /data/openclaw-docker
# 创建配置目录
mkdir -pv /data/openclaw-docker/.openclaw
# 创建工作空间目录
mkdir -pv /data/openclaw-docker/openclaw-workspace
# 确保目录权限正确
chown -R 1000:1000 /data/openclaw-docker/.openclaw
chown -R 1000:1000 /data/openclaw-docker/openclaw-workspace
chmod -R 755 /data/openclaw-docker/.openclaw
chmod -R 755 /data/openclaw-docker/openclaw-workspace

四、编写docker-compose 文件
生产环境建议用 docker-compose.yml 管理,比裸 docker run 更容易维护:
vim openclaw.yml
version: "3.8"
services:
openclaw-gateway:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openclaw/openclaw
container_name: openclaw-gateway
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- /data/openclaw-docker/.openclaw:/home/node/.openclaw
- /data/openclaw-docker/openclaw-workspace:/home/node/workspace
environment:
-NODE_ENV: production
user: "1000:1000"
healthcheck:
test: ["CMD","curl","-f","http://localhost:18789/healthz"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
deploy:
resources:
limits:
memory: 2G
cpus: "2.0"
reservations:
memory: 512M
cpus: "0.5"
logging:
driver: json-file
options:
max-size: "50m"
max-file: "5"
五、启动compose文件
docker compose -f openclaw.yml up -d

但是注意:现在你用远程机器去访问ip+18789端口是访问不到的
这边是有坑的 可以看到是容器内部的回环地址

哪怕容器是映射了port出来
解决办法:
打开openclaw.json文件
vim .openclaw/openclaw.json
#root@jxsj:/data/openclaw-docker# vim .openclaw/openclaw.json
#得看好目录位置

可以看到初始化json文件是这样的 我们加个bind
{
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"bind": "lan", #通过局域网通信
"auth": {
"mode": "token",
"token": "1f69e7df8ab925f6ad563fa90c341ed6b7ee6374fe902771"
}
},
"meta": {
"lastTouchedVersion": "2026.3.2",
"lastTouchedAt": "2026-03-20T08:36:03.058Z"
}
}
~
然后保存退出
#重启openclaw服务
docker restart openclaw-gateway
#查看openclaw日志
docker logs -fn500 openclaw-gateway

这里能看到了0.0.0.0
现在可以通过远程机器 ip:18789端口访问openclaw web界面了

六、web 页面登录 继续解决坑点
目前页面提示
origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)

vim .openclaw/openclaw.json
{
"meta": {
"lastTouchedVersion": "2026.3.2",
"lastTouchedAt": "2026-03-20T08:51:26.996Z"
},
"agents": {
"defaults": {
"compaction": {
"mode": "safeguard"
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"http://192.168.18.240:18789" #添加这个服务器ip 就是服务器本机ip
]
},
"auth": {
"mode": "token",
"token": "1f69e7df8ab925f6ad563fa90c341ed6b7ee6374fe902771" #复制这个token 接下来有用
}
}
}
然后保存退出
意思就是白名单策略
docker restart openclaw-gateway
现在刷新下页面就可以
刚刚复制的token 就在web页面打开概览 输入进去 然后连接刷新即可

2、https 坑点解决
继续看着报错解决 他也提示了https加密连接
mkdir -pv /data/openclaw-docker/.openclaw/certs/
# 生成私钥和证书,IP地址修改为服务器IP
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=192.168.18.240"
# 将证书移动到 openclaw 目录
mv key.pem cert.pem /data/openclaw-docekr/.openclaw/certs/
# 启用 HTTPS
docker exec -it openclaw-gateway bash
openclaw config set gateway.tls.enabled true
##openclaw config set gateway.tls.keyPath /data/openclaw-docker/.openclaw/certs/key.pem
##openclaw config set gateway.tls.certPath /data/openclaw-docker/.openclaw/certs/cert.pem
这里还有坑 这两个加密认证可以先不执行
# 重启网关openclaw gateway restart
秘钥对认证的坑我在看一下 后续更新

目前https可以访问
3、又出现白名单问题
这个时候继续
vim /data/openclaw-docker/.openclaw/openclaw.json
{
"meta": {
"lastTouchedVersion": "2026.3.2",
"lastTouchedAt": "2026-03-20T12:02:31.018Z"
},
"agents": {
"defaults": {
"compaction": {
"mode": "safeguard"
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"http://192.168.18.240:18789",
"https://192.168.18.240:18789" ##这里加入https加密的白名单
]
},
"auth": {
"mode": "token",
"token": "1f69e7df8ab925f6ad563fa90c341ed6b7ee6374fe902771"
},
"tls": {
"enabled": true
}
}
}
4、pairing required问题解决

现在页面上出现一个配对批准的英文单词
我们可以打开概览 查看右侧 教程

docker exec -it openclaw-gateway bash
#进入容器


openclaw devices list
openclaw devices approve 31115c66-7b92-4f84-bb8b-4c5560c02661
#openclaw devices approve id 即可
现在再访问页面 就不会出现配对批准情况 状态也变成了正常

七、接入vLLM本地大模型

模型我是已经启动着的,大家有条件是可以接入在线模型,离线模型感觉还是不容易升级 有点笨
vllm 启动需要加 --enable-auto-tool-choice \
--tool-call-parser hermes
这两个参数 不然会有报错问题
1、接着我们继续配置api
还是在容器内运行命令
openclaw onboard

这个就是在提示
当前系统默认是“个人使用模式”
如果你要在多人 / 公网 / 内网共享环境使用,必须做好安全加固
是否继续?
我们这里选择yes即可

选择初始化方式:
-
QuickStart:快速启动(先跑起来,后面再改配置)后续可以用
openclaw configure修改 -
Manual:手动模式(一步一步自己配置所有参数)
我们这里选择快速启动即可

配置处理方式:
-
Use existing values:继续使用现有配置
-
Update values:更新配置(保留旧的,改一部分)
-
Reset:全部重置,重新生成
直接回车,用我们现有配置即可

这里就是选择api配置了
我们这里vLLM启动的 直接选择vllm即可

url 输入你模型调用的url

可以curl测试一下
接着vLLM api key 这边随便输就可以 可以选择abc123
vLLM model 就输入模型名字即可 curl可以看到id 根据自己实际请求来
然后继续回车

我这边暂不配置 就选择Skip for now

这样结束了

web界面在代理这边是可以看到的

先实行对话 后续接入飞书可以在频道里面配置
后续我会持续更新的
更多推荐


所有评论(0)