Rockylinux9 Docker搭建自己的Openclaw
文章中的安装均在联网条件下进行安装。
1 安装docker环境
1.1 卸载(可选)
已安装docker,或版本过时,需要重新安装新版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce1.2 安装docker
(1)联网安装相关工具
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken(2)配置阿里安装镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(3)执行安装
yum install -y docker-ce(4)启动docker,并设置开机自启动
systemctl start docker #启动docker命令 systemctl enable docker #设置开机自启命令 docker version #查看docker版本命令配置docker拉取镜像源
mkdir -p /etc/docker vim /etc/docker/daemon.json{ "registry-mirrors" : ["https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.cc", "https://do.nark.eu.org", "https://dc.j8.work", "https://dockerproxy.com", "https://gst6rzl9.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "http://mirrors.ustc.edu.cn/", "https://mirrors.tuna.tsinghua.edu.cn/", "http://mirrors.sohu.com/" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug": true, "experimental": false }2 docker 部署Openclaw
2.1 拉取Openclaw镜像
拉取官方镜像
docker pull ghcr.io/openclaw/openclaw:latest或使用国内加速拉取镜像(文章后续部署使用此拉取的镜像,如使用官网镜像请注意修改)
docker pull ghcr.nju.edu.cn/openclaw/openclaw:latest2.2 部署Openclaw
创建持久化目录
mkdir -p ~/.openclaw mkdir -p ~/openclaw-workspacedocker 运行openclaw命令,建议固化到.sh脚本进行执行
docker run -d \ --name openclaw \ --restart unless-stopped \ --net=host \ -p 18789:18789 \ -v ~/.openclaw:/home/node/.openclaw \ -v ~/openclaw-workspace:/home/node/workspace \ -e TZ=Asia/Shanghai \ ghcr.nju.edu.cn/openclaw/openclaw:latest \ openclaw gateway run --allow-unconfigured查看容器是否启动成功
docker ps容器状态为 healthy 为启动成功
浏览器访问 http://自己的IP:18789
不能访问:检查防火墙18789端口是否放行,放行端口命令
firewall-cmd --permanent --add-port=18789/tcp firewall-cmd --reload2.3 问题及处理方法
(1)报错1:
origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)
这个错误是OpenClaw 安全校验导致的:默认只允许从服务器本机打开控制台,远程浏览器访问会被拦截,只需要修改配置文件放开跨域即可
解决措施:执行修改允许所有IP均可访问配置命令,或将 * 修改为可访问IP
docker exec -it openclaw openclaw config set gateway.controlUi.allowedOrigins '["*"]'出现标红内容为配置成功。
(2)报错2:
control ui requires device identity (use HTTPS or localhost secure context)
这个报错是浏览器安全限制:OpenClaw 控制台必须运行在HTTPS或localhost安全环境下,普通 http://IP 访问会被拦截。
通过部署nginx代理方式进行解决
拉取nginx镜像
docker pull nginx创建证书存放目录
# 创建统一存放证书的目录 mkdir -p /opt/nginx/ssl chmod -R 755 /opt/nginx生成自签名 SSL 证书
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /opt/nginx/ssl/openclaw.key \ -out /opt/nginx/openclaw.crt \ -subj "/CN=localhost"创建 Nginx 配置文件
创建配置文件目录
mkdir -p /opt/nginx/conf创建 Nginx 代理 OpenClaw 的配置
vim opt/nginx/conf/nginx.confopt/nginx/conf/nginx.conf 内容(需修改54行为自己的IP):
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; # HTTP 自动跳转到 HTTPS server { listen 80; server_name 你的域名; # 改成你的域名,如 www.xxx.com return 301 https://$host$request_uri; } # HTTPS 配置 server { listen 443 ssl; server_name 你的域名; # 改成你的域名 # SSL 证书路径(容器内路径,不要改!) ssl_certificate /opt/nginx/ssl/openclaw.crt; # 改成你的证书文件名 ssl_certificate_key /opt/nginx/ssl/openclaw.key; # 改成你的密钥文件名 # SSL 安全配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; # 网站根目录 location /root { root /usr/share/nginx/html; index index.html index.htm; } # 网站根目录 location / { proxy_pass http://自己的IP:18789; # 不要用127.0.0.1,127.0.0.1指向的是nginx容器内,非宿主机 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; } } }创建nginx服务
docker run -d \ --name nginx-ssl \ --restart=always \ -p 443:443 \ -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /opt/nginx/ssl:/opt/nginx/ssl \ -v /opt/nginx/html:/usr/share/nginx/html \ nginx问题4:
pairing required
OpenClaw 对新设备(浏览器 / 客户端)实施一次性配对授权
执行命令查看待审批设备
docker exec -it openclaw openclaw devices list对设备进行审批
docker exec -it openclaw openclaw devices approve 自己的设备(上一步查出的 Request 值)3 最后
查看登录网关令牌
docker exec -it openclaw openclaw dashboard在“网关令牌”填入“token”值进行登录
部署成功,开始自己的养龙虾之旅吧!
访问 https://自己的IP
