OpenClaw Docker部署踩坑全记录(OpenClaw v2026.3.23)

0 阅读3分钟

OpenClaw Docker部署踩坑全记录(OpenClaw v2026.3.23)

很多人第一次部署 OpenClaw,都会踩一个坑: 官方文档默认让你 clone + build + 配环境变量 但实际体验下来只有两个字:折腾 这篇文章,我直接给你一套更干净、更稳定的方案:纯Docker Compose部署(无需本地build)

找到我: C某DN, 掘某金, 头某条, 博某客园搜索改一下配置文件, 不出意外每篇文章我都会在这些平台更新.

一、选择docker部署

  • 不污染宿主机 → Node、依赖、配置全部隔离在容器里

  • 不会和本地环境冲突 → 不用担心你机器上已有 Node/npm/版本问题

  • 可复制性极强 → 同一份 docker-compose.yml,在哪都能跑@改一下配置文件

二、准备工作

2.1 选择镜像

之前的文档里面有下面这段话,现在不知道为啥没有了。链接:https://docs.openclaw.ai/install/docker

Use a remote image (skip local build)Official pre-built images are published at:
GitHub Container Registry packageUse image name ghcr.io/openclaw/openclaw (not similarly named Docker Hub images).Common tags:
main — latest build from main
<version>release tag builds (for example 2026.2.26)
latest — latest stable release tag@改一下配置文件

大意就是

正确镜像名是:ghcr.io/openclaw/openclaw,而不是Docker Hub上的同名镜像,链接:https://github.com/openclaw/openclaw/pkgs/container/openclaw
常用tag:
main — 最新开发版(不稳定)
latest — 稳定版本
2026.x.x — 指定版本

所以直接执行下面的命令就行, 这一步可能需要魔法。不行的话去渡渡鸟 docker.aityp.com/image/ghcr.… 去下载镜像,注意电脑架构。@改一下配置文件

docker pull ghcr.io/openclaw/openclaw:2026.3.23

2.2 我的目录结构

openclaw/
├── docker-compose.yml
└── data/
    ├── config/
    └── workspace/

说明:

  • config:存配置(必须)
  • workspace:工作目录(可选)

2.3 docker-compose文件

这是我实际跑通的版本

services:
  openclaw-gateway:
    image: ghcr.io/openclaw/openclaw:2026.3.23
    container_name: openclaw-gateway
    environment:
      HOME: /home/node
      TERM: xterm-256color
      TZ: Asia/Shanghai

      # 必填 改成你自己的token 下面还有一个地方的token也得改
      OPENCLAW_GATEWAY_TOKEN: YOUR_TOKEN
      # 是否允许ws(一般不用改)
      OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "false"

      # Claude 相关(按需填写)
      CLAUDE_AI_SESSION_KEY: ""
      CLAUDE_WEB_SESSION_KEY: ""
      CLAUDE_WEB_COOKIE: ""

    volumes:
      - ./data/config:/home/node/.openclaw
      # - ./data/workspace:/home/node/.openclaw/workspace
      
    ports:
      - "18889:18789"   # Web / API
      - "18890:18790"   # 内部 bridge

    # restart: unless-stopped # @改一下配置文件
    init: true
    command:
      [ "node", "dist/index.js", "gateway", "--bind", "lan", "--port", "18789",]
    healthcheck:
      test:
        [
          "CMD",
          "node",
          "-e",
          "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
        ]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 20s


  openclaw-cli:
    image: ghcr.io/openclaw/openclaw:2026.3.23
    container_name: openclaw-cli
    network_mode: "service:openclaw-gateway"
    cap_drop:
      - NET_RAW
      - NET_ADMIN
    security_opt:
      - no-new-privileges:true
    environment:
      HOME: /home/node
      TERM: xterm-256color
      TZ: Asia/Shanghai
      
      OPENCLAW_GATEWAY_TOKEN: YOUR_TOKEN
      OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "false"

      BROWSER: echo
      
      CLAUDE_AI_SESSION_KEY: ""
      CLAUDE_WEB_SESSION_KEY: ""
      CLAUDE_WEB_COOKIE: ""

    volumes:
      - ./data/config:/home/node/.openclaw
      # - ./data/workspace:/home/node/.openclaw/workspace

    stdin_open: true
    tty: true
    init: true
    entrypoint: ["node", "dist/index.js"]
    depends_on:
      - openclaw-gateway

三、docker部署流程

看你安装的是docker compose还是docker-compose,执行:

docker-compose run --rm openclaw-cli onboard
docker-compose -f docker-compose.yml run --rm openclaw-cli config set gateway.controlUi.allowedOrigins '["*"]' --strict-json
docker-compose -f docker-compose.yml run --rm openclaw-cli config set gateway.controlUi.dangerouslyDisableDeviceAuth true
docker-compose up -d openclaw-gateway

3.1 过程如下

o1.png

docker-compose run --rm openclaw-cli onboard
方向键控制,回车确认,按空格多选
I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
│  Yes

◇  Setup mode
│  QuickStart

◇  Model/auth provider
│  vLLM

◇  vLLM base URL
│  http://xx.xx.xx.xx:xxxxx/v1
│
◇  vLLM API key
│  token-xxxxxx
│
◇  vLLM model
│  Qwen3

◇  Default model
│  Keep current (vllm/Qwen3)
│
◇  Select channel (QuickStart)
│  Skip for now
│
◇  Search provider
│  Skip for now
│
◇  Configure skills now? (recommended)
│  No
│
◇  Set GOOGLE_PLACES_API_KEY for goplaces?
│  No
│
◇  Set NOTION_API_KEY for notion?
│  No
│
◇  Set OPENAI_API_KEY for openai-whisper-api?
│  No
│
◇  Set ELEVENLABS_API_KEY for sag?
│  No
│
◇  Enable hooks? 按空格多选@改一下配置文件
│  📝 command-logger, 💾 session-memory

o2.png

四、访问地址

因为我做了端口映射:

http://127.0.0.1:18889

打开看到页面,复制token,密码不用填就能登录进去@改一下配置文件

五、官方的问题

  • 官网是需要git拉下来之后手动build,每次太麻烦了,不如把docker-compose.yml文件复制下来改改了。
  • 如果你用官网的build方式,会生成一个.env文件,可以看openclaw/scripts/docker/setup.sh这个文件里面。
  • 我之前一直纳闷官方docker compose的文件的环境变量是哪里来的,结果找啊找啊在这里找到了@改一下配置文件

六、参考文档&致谢