本帖最后由 da11 于 2026-3-31 00:54 编辑
使用docker部署OpenClaw 2026.3.13版本踩过的坑
前言:
龙虾热啊龙虾热,单纯想试试500一次的咸鱼服务是有多难hhh
环境:
一台虚拟机:x86架构;麒麟ky10操作系统;4核cpu;4G内存;100G系统盘;Docker version 20.10.1
这篇帖子只讲解docker容器内部署,其余部署方式教程挖个坑~
1.docker部署略,请查看【转载】docker简易安装(麒麟、CentOS适用) - Linux技术交流 - DA 论坛 - Powered by Discuz!这篇帖子
2.下载镜像,最好挂个梯子下载,或者寻找国内源(最难的一步hhh)
docker pull ghcr.io/openclaw/openclaw:latest
3.下载好后,使用docker images查看是否下载成功。
4.创建宿主机路径并修改所有者和所属组为容器内的node用户,因为宿主机和容器内的用户不对等关系,所以更改所有者和所属组为1000:1000
mkdir -p /data/openclaw/.openclaw/
chown -R 1000:1000 /data/openclaw/
chown -R 1000:1000 /data/openclaw/*
5.检查虚拟机时间,如果虚拟机时间和你要浏览器访问的主机时间不一致,OpenClaw网关会报错:device signature expired
虚拟机内修改时间
date -s "20xx-xx-xx xx:xx:xx"
6.启动容器
docker run -d --name openclaw --privileged -p 18789:18789 -v /data/openclaw/.openclaw:/home/node/.openclaw -e NODE_OPTIONS="--max-old-space-size=4096" -e TZ=Asia/Shanghai ghcr.io/openclaw/openclaw:latest
7.查看日志关注是否启动成功
docker logs -f openclaw
出现Browser control listening on http://127.0.0.1:18791/ (auth=token)和没有明显报错证明openclaw网关已经启动成功,我知道你很急,但是你先别急。注意到,"listening on http://127.0.0.1:18791/" ,也就是说,目前启动是启动成功了,但是只能给127.0.0.1访问,所以还需要下一步的设置。
8.查看宿主机的/data/openclaw/.openclaw/目录下吃否已经同步了openclaw.json配置文件,长下面这样
现在已经生成了Token,需要记住。然后修改配置文件用于监听全体网段,allowedOrigins参数是网关的允许访问白名单,根据实际修改!!:
{
"meta": {
"lastTouchedVersion": "2026.3.13",
"lastTouchedAt": "2026-03-19T09:49:41.560Z"
},
"agents": {
"defaults": {
"compaction": {
"mode": "safeguard"
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"https://192.168.128.134:8443"
]
},
"auth": {
"mode": "token",
"token": "你上面记住的token"
},
"tls": {}
}
}
修改配置文件后,估计你是使用root用户修改的,所以还得更改所有者和所属组为1000:1000,否则会报没有权限读取配置文件!
chown -R 1000:1000 /data/openclaw/
chown -R 1000:1000 /data/openclaw/*
好,聪明的同学发现了,配置文件中,allowedOrigins有个参数是不是写错了,变成了https协议,是没错的,因为http协议访问openclaw网关时,会报不安全不给认证,如下图。
9.接下来先重启openclaw容器,查看日志是否有配置报错
docker restart openclaw
出现0.0.0.0就证明监听全网段成功。
10.新建宿主机用户
useradd appuser
11.搭建https协议,这里使用nginx反代理配置,nginx部署略。进入Nginx目录/data/nginx-1.29.1-Main/下,生成证书,CN=参数是你虚拟机的网卡IP,请根据实际修改,如果不对也没啥大问题,就是后续需要点多一步。
openssl req -x509 -newkey rsa:4096 -keyout nginx.key -out nginx.crt -days 365 -nodes -subj "/CN=192.168.128.134"
确认已经生成了这两个文件
12.新建Nginx配置文件
vim /data/nginx-1.29.1-Main/conf/openclaw-proxy.conf
user appuser;
events {
worker_connections 1024;
}
http {
include /data/nginx-1.29.1-Main/conf/mime.types;
default_type application/octet-stream;
server {
listen 8443 ssl; # Nginx端口根据实际修改,建议使用ss -pantul 查询是否有占用
server_name 192.168.128.134; # 实际的虚拟机网卡IP,根据实际修改
ssl_certificate /data/nginx-1.29.1-Main/nginx.crt;
ssl_certificate_key /data/nginx-1.29.1-Main/nginx.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://192.168.128.134:18789; # openclaw的网关地址,请根据实际修改
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name 192.168.128.134;
return 301 https://$server_name$request_uri;
}
}
13.修改完成后,变更Nginx目录权限。
chown -R appuser:appuser /data/nginx-1.29.1-Main/
chown -R appuser:appuser /data/nginx-1.29.1-Main/*
chmod -R 764 /data/nginx-1.29.1-Main/*
14.验证配置文件是否正确
sbin/nginx -t -c /data/nginx-1.29.1-Main/conf/openclaw-proxy.conf
如果没有问题会出现success
15.启动Nginx
sbin/nginx -c /data/nginx-1.29.1-Main/conf/openclaw-proxy.conf
16.这时,可以访问openclaw了
浏览器使用https://192.168.128.134:8443/ 访问
网关令牌输入Token后,点击连接,这时会出现pairing required,不要慌,这是网关的最后一道设备验证,这时需要进入容器允许设备访问。
17.进入openclaw容器
docker exec -it openclaw /bin/bash
19.查看设备列表及授权设备
openclaw devices list
这里Pending出现了一个设备信息,是待允许状态
输入以下命令以授权
openclaw devices approve 【RequestID】
再次使用openclaw devices list查看当前设备即可看到已经添加成功了。
20.重新刷新浏览器页面,这时可以进入仪表盘了,此帖子结束!!
|