当你想玩玩OpenClaw但受限于服务器有正在运行的服务没法直接使用OpenClaw镜像重装时, Docker会是个不错的选择.

部署Nginx并申请证书

申请SSL证书

准备域名

准备一个准备绑定的域名, 例如我准备的是openclaw.9kr.cc.

如果没有域名可以花8元买一个6位纯数字xyz域名, 续费也是8元/年.

或者等我弄个共享域名+一键SSL证书申请+部署工具(咕咕咕).

申请证书

打开https://acme.9kr.cc

选择Let's Encrypt, 在证书配置中输入你的域名, 并选择创建新RSA私钥(证书私钥+ACME账户私钥).

ACME联系邮箱填写你自己的邮箱, 然后点击确认:

image.png

进入验证域名所有权步骤, 选择DNS验证, 记录下子域名和TXT记录.

例如我这里是

子域名: _acme-challenge.openclaw.9kr.cc
TXT记录: Qx3G98bhtZMSkVpihdbD4nbA2yEDm1LAq9GeA8C-_LU

1769996375019.jpg

打开你的域名解析服务商, 例如我用的是https://console.dnspod.cn/, 新建一条解析记录.

主机记录: 填子域名前缀, 即_acme-challenge.openclaw.9kr.cc则填写_acme-challenge.openclaw.

TXT记录: 无需修改, 直接按acme.9kr.cc给出的填写.

同时再添加一条A记录, 将服务器IP解析到域名

填写完成直接点开始验证

1769996387284.jpg

验证通过后, 把PEM文件和KEY文件保存下来.

前者是证书, 后者是私钥, 后面要用.

1769996400878.jpg

安装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文件, 输入如下内容, 根据自己实际情况修改后保存.

待修改内容有:

  1. 你的域名, 有两处需要修改, 直接把openclaw.9kr.cc修改为你的域名.
  2. 证书路径, 直接把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地址

1769996428403.jpg

回到https://console.dnspod.cn/, 添加一条A记录.

查看部署效果

打开浏览器, 输入https://[你的域名 ], 不出意外可以看到如下内容:

1769996437926.jpg

主要是看能否打开以及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:2081HTTP代理, 不使用openai等境外chat软件和模型可以不设置
- HTTPS_PROXY=http://192.168.1.206:2081HTTP代理, 不使用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, 看到如下内容证明启动成功

1769996454317.jpg

配对后端openclaw

登录OpenClaw Control后台

点击侧边栏的Overview, 在Password输入初始化时设置的密码, 点击Connect

1769996470274.jpg

列出设备

回到服务器终端, 输入如下命令列出终端

docker compose run --rm openclaw-cli devices list

如下图为待配对的设备, 记下这个Request

1769996493346.jpg

配对设备

配对命令格式如下

docker compose run --rm openclaw-cli devices approve [Request]

例如我的为

docker compose run --rm openclaw-cli devices approve d1d693fe-35ca-4ded-9b35-e21329f4943c

回到浏览器, 可以看到已链接成功

1769996508665.jpg

最后修改:2026 年 02 月 02 日
如果觉得我的文章对你有用,请随意赞赏