当你想玩玩OpenClaw但受限于服务器有正在运行的服务没法直接使用OpenClaw镜像重装时, Docker会是个不错的选择.
部署Nginx并申请证书
申请SSL证书
准备域名
准备一个准备绑定的域名, 例如我准备的是openclaw.9kr.cc.
如果没有域名可以花8元买一个6位纯数字xyz域名, 续费也是8元/年.
或者等我弄个共享域名+一键SSL证书申请+部署工具(咕咕咕).
申请证书
选择Let's Encrypt, 在证书配置中输入你的域名, 并选择创建新RSA私钥(证书私钥+ACME账户私钥).
ACME联系邮箱填写你自己的邮箱, 然后点击确认:

进入验证域名所有权步骤, 选择DNS验证, 记录下子域名和TXT记录.
例如我这里是
子域名: _acme-challenge.openclaw.9kr.cc
TXT记录: Qx3G98bhtZMSkVpihdbD4nbA2yEDm1LAq9GeA8C-_LU
打开你的域名解析服务商, 例如我用的是https://console.dnspod.cn/, 新建一条解析记录.
主机记录: 填子域名前缀, 即_acme-challenge.openclaw.9kr.cc则填写_acme-challenge.openclaw.
TXT记录: 无需修改, 直接按acme.9kr.cc给出的填写.
同时再添加一条A记录, 将服务器IP解析到域名
填写完成直接点开始验证

验证通过后, 把PEM文件和KEY文件保存下来.
前者是证书, 后者是私钥, 后面要用.

安装Docker
安装Docker
curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun配置境内镜像源(若为境外服务器可忽略这一步)
编辑/etc/docker/daemon.json文件, 输入如下内容并保存
{"registry-mirrors": ["https://docker.1ms.run"]}重启Docker服务使镜像源生效
systemctl restart docker部署Nginx
创建nginx容器持久化文件夹
cd ~
mkdir -p nginx-docker/data/conf.d
mkdir -p nginx-docker/data/ssl创建临时容器并复制出默认配置
cd nginx-docker
docker cp nginx-temp:/etc/nginx/nginx.conf ./data/
docker cp nginx-temp:/etc/nginx/conf.d ./data/conf.d/
docker stop nginx-temp && docker rm nginx-temp创建docker-compose.yml
编辑docker-compose.yml文件, 输入如下内容并保存
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./data/html:/usr/share/nginx/html
- ./data/nginx.conf:/etc/nginx/nginx.conf
- ./data/conf.d:/etc/nginx/conf.d
- ./data/logs:/var/log/nginx
- ./data/ssl:/etc/nginx/ssl
extra_hosts:
- "host.docker.internal:host-gateway"保存SSL证书
在申请SSL证书步骤我们得到了证书文件(PEM)和私钥文件(KEY)
打开data/ssl/[你的域名].crt(例如我的data/ssl/openclaw.9kr.cc.crt), 把证书文件内容粘贴进去保存.
打开data/ssl/[你的域名].key(例如我的data/ssl/openclaw.9kr.cc.key), 把私钥文件内容粘贴进去保存.
创建openclaw反代配置
编辑docker-compose.yml文件, 输入如下内容, 根据自己实际情况修改后保存.
待修改内容有:
- 你的域名, 有两处需要修改, 直接把openclaw.9kr.cc修改为你的域名.
- 证书路径, 直接把openclaw.9kr.cc修改为你的域名, 路径不要动.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
# 修改此处域名
server_name openclaw.9kr.cc;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
# 修改此处域名
server_name openclaw.9kr.cc;
# 修改此处证书路径
ssl_certificate /etc/nginx/ssl/openclaw.9kr.cc.crt;
ssl_certificate_key /etc/nginx/ssl/openclaw.9kr.cc.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://openclaw-gateway:18789;
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;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_connect_timeout 75s;
proxy_buffering off;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_cache off;
proxy_no_cache 1;
proxy_cache_bypass 1;
}
}启动容器
cd ~/nginx-docker
docker compose up -d设置解析记录
在轻量控制台获取你的IP地址

回到https://console.dnspod.cn/, 添加一条A记录.
查看部署效果
打开浏览器, 输入https://[你的域名 ], 不出意外可以看到如下内容:

主要是看能否打开以及SSL是否设置正确.
显示502是正常的, 因为后端的openclaw还没部署.
如果左上角的小锁头不是红色而且页面显示502, 则可以进行下一步.
构建并部署openclaw容器
构建Docker镜像
拉取openclaw代码
cd ~
git clone https://github.com/openclaw/openclaw构建镜像
cd openclaw/
# 使用最新的tag构建
LATEST_TAG=$(git tag --sort=-creatordate | head -1) && git checkout $LATEST_TAG && docker build -t openclaw:$LATEST_TAG .查看已有镜像
记下这个openclaw:v2026.1.30, 后面的v2026.1.30即是版本号
root@VM-12-10-debian:~/openclaw# docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
nginx:alpine 4870c12cd2ca 93.1MB 26.8MB
nginx:latest c881927c4077 240MB 65.7MB U
openclaw:v2026.1.30 99c84ced9f6a 3.93GB 1.06GB U部署openclaw容器
创建openclaw容器持久化文件夹
cd ~
mkdir -p openclaw-docker/{config,data}
# 设置文件夹权限, 不设置会报错(node 用户 UID 1000)
chown -R 1000:1000 openclaw-docker/{config,data}
cd openclaw-docker创建docker-compose.yml
编辑docker-compose.yml文件, 输入如下内容, 根据所需修改后保存.
关键参数说明
| 参数项 | 说明 |
|---|---|
| image: openclaw:v2026.1.30 | 使用的镜像标签, 格式为[镜像名]:[版本号], 根据前面构建镜像时的配置进行设置 |
| - HTTP_PROXY=http://192.168.1.206:2081 | HTTP代理, 不使用openai等境外chat软件和模型可以不设置 |
| - HTTPS_PROXY=http://192.168.1.206:2081 | HTTP代理, 不使用openai等境外chat软件和模型可以不设置 |
| - NO_PROXY="localhost,127.0.0.1,::1" | 设置不使用代理的IP, 和HTTP/HTTPS代理同步设置, 如果不设置代理则这个也需要注释掉 |
version: '3.8'
services:
openclaw-gateway:
image: openclaw:v2026.1.30
container_name: openclaw-gateway
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- ./data/config:/home/node/.openclaw
- ./data/data:/home/node/clawd
extra_hosts:
- "host.docker.internal:host-gateway"
#environment:
# - HTTP_PROXY=http://192.168.1.206:2081
# - HTTPS_PROXY=http://192.168.1.206:2081
# - NO_PROXY="localhost,127.0.0.1,::1"
shm_size: 2g
command: node /app/dist/index.js gateway --port 18789
openclaw-cli:
image: openclaw:v2026.1.30
container_name: openclaw-cli
network_mode: "service:openclaw-gateway"
volumes:
- ./data/config:/home/node/.openclaw
- ./data/data:/home/node/clawd
entrypoint: ["node", "dist/index.js"]初始化openclaw生成配置文件
输入如下命令, 即可开始初始化openclaw配置
docker compose run --rm -it openclaw-cli onboard配置选项可以参考如下例子, 不满意可以后期进行更改, 所以不用担心.
┌ OpenClaw onboarding
│
│
◇ I understand this is powerful and inherently risky. Continue?
│ Yes
│
◇ Onboarding mode
│ Manual
│
◇ What do you want to set up?
│ Local gateway (this machine)
│
◇ Workspace directory
│ /home/node/.openclaw/workspace
│
◇ Model/auth provider
│ Skip for now
│
◇ Filter models by provider
│ All providers
│
◇ Default model
│ Keep current (default: anthropic/claude-opus-4-5)
│
│
◇ Gateway port
│ 18789
│
◇ Gateway bind
│ LAN (0.0.0.0)
│
◇ Gateway auth
│ Password
│
◇ Tailscale exposure
│ Off
│
◇ Gateway password
│ [输入密码并回车, 后续登录openclaw要用]
│
│
◇ Configure chat channels now?
│ No
Updated ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace
Sessions OK: ~/.openclaw/agents/main/sessions
│
│
◇ Configure skills now? (recommended)
│ No
│
│
◇ Enable hooks?[注意, 这里要先用"空格"选择`Skip for now`, 然后再输入"回车"确认]
│ Skip for now
│
│
◇
Health check failed: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/node/.openclaw/openclaw.json
Bind: lan
│
│
└ Onboarding complete. Use the tokenized dashboard link above to control OpenClaw.
│
◇ Install shell completion script?
│ Yes
Completion installed. Restart your shell or run: source /home/node/.zshrc启动 gateway 服务
docker compose up -d openclaw-gateway浏览器打开https://[你的域名], 例如我的是https://openclaw.9kr.cc, 看到如下内容证明启动成功

配对后端openclaw
登录OpenClaw Control后台
点击侧边栏的Overview, 在Password输入初始化时设置的密码, 点击Connect

列出设备
回到服务器终端, 输入如下命令列出终端
docker compose run --rm openclaw-cli devices list如下图为待配对的设备, 记下这个Request

配对设备
配对命令格式如下
docker compose run --rm openclaw-cli devices approve [Request]例如我的为
docker compose run --rm openclaw-cli devices approve d1d693fe-35ca-4ded-9b35-e21329f4943c回到浏览器, 可以看到已链接成功
