Logo
活死人の行知路

OpenClaw 容器化部署


📅 | 📝 857 字
#AI #openclaw #docker

1 容器化部署

下面分别提供 Mac/Linux 和 Windows 不同环境下的 OpenClaw 容器化部署方式。

1.1 工具准备

1.2 Mac/Linux 部署

命令

make up

执行命令一键部署。

访问

新版(2026.3.13)开始首次访问的时候只需在浏览器输入 URL(IP+端口,或者域名),回车后页面会跳转到如下页面。

通过可视化页面输入token即可,非常方便,我是容器化部署,输入token后点击【连接】按钮页面会出现 pairing required 提示。

日志

✗ docker logs app-openclaw-gateway
2026-03-17T11:01:16.739+08:00 [canvas] host mounted at http://0.0.0.0:18789/__openclaw__/canvas/ (root /home/node/.openclaw/canvas)
2026-03-17T11:01:16.743+08:00 [gateway] ⚠️  Gateway is binding to a non-loopback address. Ensure authentication is configured before exposing to public networks.
2026-03-17T11:01:16.796+08:00 [heartbeat] started
2026-03-17T11:01:16.798+08:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-03-17T11:01:16.804+08:00 [gateway] agent model: anthropic/claude-opus-4-6
2026-03-17T11:01:16.806+08:00 [gateway] listening on ws://0.0.0.0:18789 (PID 1)
2026-03-17T11:01:16.808+08:00 [gateway] log file: /tmp/openclaw/openclaw-2026-03-17.log
2026-03-17T11:01:16.828+08:00 [browser/server] Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-03-17T11:01:17.129+08:00 [ws] unauthorized conn=f3d2b355-aede-4253-8f81-ce89a4185d5a remote=172.20.0.2 client=openclaw-control-ui webchat v2026.3.13-1 reason=device_token_mismatch
2026-03-17T11:01:17.134+08:00 [ws] closed before connect conn=f3d2b355-aede-4253-8f81-ce89a4185d5a remote=172.20.0.2 fwd=184.73.6.120 origin=https://openclaw.einscat.local host=openclaw.einscat.local ua=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 code=1008
reason=unauthorized: too many failed authentication attempts (retry later)
2026-03-17T11:05:18.265+08:00 [ws] closed before connect conn=0216885b-4dbe-47e8-8895-234884566102 remote=172.20.0.2 fwd=192.168.65.1 origin=https://openclaw.einscat.local host=openclaw.einscat.local ua=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 code=1008 reason=pairing required

...

原因分析

  1. 首次连接时浏览器被视为“新/未批准设备”(最主要原因)
  • OpenClaw 的 Gateway 采用严格的设备级认证 + pairing 机制(device identity + approval),目的是防止未授权的客户端接入(尤其是暴露到公网或通过代理/自定义域名时)。
  1. Docker 容器网络特性加剧了这个问题(常见于 Docker 部署)
  • 在 Docker 中,即使你从宿主机浏览器访问 gateway(端口映射到 18789),连接到达容器时 IP 往往变成 172.x.x.x(Docker bridge 网络的内部 IP),而不是真正的 127.0.0.1。
  1. 为什么批准后就好了?
  • 你运行 openclaw devices approve <requestId> 后,Gateway 把浏览器对应的 device hash(23fcc725…)标记为 approved(role=operator)。

授权

这一步会执行检查并批准 pending pairing 请求操作。

  1. 进容器执行 CLI 命令:
docker exec -it app-openclaw-gateway openclaw devices list
  • 如果显示有 PendingRequest(通常是 Control UI 的 pending 条目)
  • 记下那个 RequestId(一串 uuid)
  1. 批准它:
docker exec -it app-openclaw-gateway openclaw devices approve <requestId>

  1. 回到浏览器,重新刷新页面或直接点击【连接】按钮应该就能连上了。

销毁

make down

一条命令自动销毁服务。

1.3 Windows 部署

1.3.1 安装 Ubuntu 子系统

方式一:最推荐的方式(1分钟安装法) — 适用于大多数人

Windows 11 安装 Ubuntu 子系统(也就是 WSL + Ubuntu)。

  1. 以管理员身份打开 PowerShell 或 Windows Terminal

    • 按 Win 键 → 输入「powershell」或「终端」
    • 右键 → 以管理员身份运行
  2. 直接执行这条命令(最简单,一条命令搞定 WSL + 默认 Ubuntu)

    wsl --install
    
    • 这条命令会:
      • 自动开启 WSL 和 虚拟机平台
      • 下载并安装最新的 Ubuntu(目前通常是 Ubuntu 24.04 LTS)
      • 需要几分钟~十几分钟(看网速)
  3. 电脑会自动或提示你重启 → 请重启

方式二:安装特定版本的 Ubuntu(推荐做法)

先查看当前可以安装的版本:

wsl --list --online

会看到类似这样的列表:

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-16.0              openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0      SUSE Linux Enterprise 16.0
kali-linux                      Kali Linux Rolling
Debian                          Debian GNU/Linux
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
archlinux                       Arch Linux
FedoraLinux-43                  Fedora Linux 43
FedoraLinux-42                  Fedora Linux 42
eLxr                            eLxr 12.12.0.0 GNU/Linux
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6

想要最新长期支持版就用:

wsl --install -d Ubuntu-24.04

想要 22.04 就改成 Ubuntu-22.04

此过程中会要求你设置用户名和密码

  • 输入你想要的用户名(建议用英文小写)
  • 输入密码(输入时看不到字符,正常现象)
  • 再确认一次密码

看到如图片提示就代表安装完成,图中创建了一个名为 ubuntu 的用户,然后输入两次密码,密码不可见,属于正常现象。

1.3.2 安装Docker Desktop

  1. 下载

访问Install Docker Desktop on Windows,下载与自己机器对应的版本。

  1. 安装
  • 选中安装包,右键 → 以管理员身份运行

1.3.3 安装 Git

  1. 下载

访问Git for Windows,下载与自己机器对应的版本。

  1. 安装
  • 选中安装包,右键 → 以管理员身份运行

1.3.4 部署

  1. 下载 OpenClaw 部署脚本

在Windows,比如D盘中某个目录,当然也可以是D盘根目录,右击选择“在终端中打开”,执行下面命令下载脚本:

git clone https://github.com/einscat/openclawer.git
  1. 进入Ubuntu子系统

以管理员身份运行 Windows 终端,在终端中执行 wsl 进入 Ubuntu 子系统。

3、进入openclawer目录

Windows的盘符通常挂载在 /mnt目录下。如果当前所在的目录为 openclawer,在当前目录中打开的终端中输入 wsl,就直接进入到Ubuntu系统中所在的 openclawer 目录:

  1. 生成token
make token

执行上面命令后,它会生成一个 数字+字母 组合的串,并将其作为 OPENCLAW_GATEWAY_TOKEN 值写入到 .env 文件中,可以打开 .env 文件查看。

  1. 部署
make up

该命令会一键自动部署,然后就是等待部署完成,看到上面画面就代表脚本执行成功。

  1. 访问

在浏览器访问 127.0.0.1:18789?token=xxx,token后面“=”等号携带的值就是执行 make token 生成的值,回车后看到如下面就代表部署成功:

之后就是去配置并尽情享受OpenClaw了。

  1. 关闭
make down

仍在 openclawer 目录下,执行上面命令后,脚本即一件注销OpenClaw服务。

1.3.5 问题

wsl –install 已禁止(403)

如果看到这个问题,检查本地是否存在VPN之类的,暂停掉这些软件,然后重新安装。

当前计算机配置不支持 WSL2。

页面提示:

当前计算机配置不支持 WSL2。
请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。
通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribution
有关信息,请访问 https://aka.ms/enablevirtualization
错误代码: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED

这个错误 Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED 表示 WSL2 无法创建虚拟机,因为 Hyper-V 超管理器(hypervisor)没有被正确安装或启用。WSL2 需要硬件虚拟化支持 + Windows 的“虚拟机平台”功能,即使在 Windows 11 Home 版(Home 版不支持完整 Hyper-V,但支持 WSL2 所需的子集)。

核心原因通常是以下之一或组合:

  • BIOS/UEFI 中 虚拟化 未启用(最常见)。
  • “虚拟机平台”功能没真正启用(或被 Windows 更新/冲突搞乱)。
  • 内存完整性(Core Isolation)或其他安全设置冲突。
  • 第三方虚拟化软件(如 VirtualBox、VMware)冲突。
  • 系统在虚拟机里运行(比如你在 VirtualBox/VMware/Proxmox 里的 Win11 VM),嵌套虚拟化没开或不支持。

按以下顺序一步步修复(从最常见开始),每步后重启电脑再试 wsl --install 或安装 Ubuntu。

步骤 1: 检查并启用 BIOS 中的虚拟化(必须先做这个)

  1. 重启电脑,在开机时疯狂按键进入 BIOS/UEFI 设置(常见键:DelF2F10F12Esc,看主板品牌:Dell/HP 是 F2,ASUS 是 Del,Lenovo 是 F1/F2 等)。
  2. 进入后找类似这些选项(英文菜单常见):
    • Intel CPU:Advanced → CPU Configuration → Intel Virtualization Technology (VT-x) / VT-d → 设为 Enabled
    • AMD CPU:Advanced → CPU Features → SVM Mode / AMD-VEnabled
    • 有些主板在 Security 或 Chipset 里。
  3. 保存退出(通常 F10 → Yes)。
  4. 重启后验证是否启用:
    • 按 Ctrl + Shift + Esc 打开任务管理器 → 性能 标签 → CPU → 看右下角 “虚拟化:已启用”(Virtualization: Enabled)。
    • 或在管理员 PowerShell / CMD 运行:
      systeminfo
      
      拉到最下面,看 “Hyper-V 要求” 部分:
      • 虚拟化已在固件中启用:是
      • 虚拟机监控程序可用:是(或类似)

如果这里显示 ,BIOS 没开成功,重进 BIOS 再确认。

步骤 2: 启用“虚拟机平台”功能(图形界面方式,更稳)

  1. 按 Win 键搜索 “启用或关闭 Windows 功能” (或 Control Panel → Programs → Turn Windows features on or off)。
  2. 在列表里找到并勾选
    • 适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
    • 虚拟机平台 (Virtual Machine Platform)
    • 如果有 Windows 超管理程序平台 (Windows Hypervisor Platform) 也勾上(Home 版可能没有或灰色)。
  3. 点击 确定 → 系统会下载/安装 → 重启电脑。
  4. 重启后,以管理员身份打开 PowerShell,运行:
    wsl --install --no-distribution
    
    (这只启用平台,不装发行版,避免卡住)
  5. 再运行:
    wsl --install -d Ubuntu-24.04
    
    或去 Microsoft Store 搜 Ubuntu 安装。

步骤 3: 常见冲突修复(如果上面还报错)

  • 关闭内存完整性(Core Isolation)(很多用户这样解决):

    1. Win 搜索 “核心隔离” 或 “Windows Security → Device security → Core isolation”。
    2. 内存完整性 关掉 → 重启。 (关掉后 WSL2 常能跑,安全上稍降,但对大多数人无影响。)
  • 重置 Hyper-V 启动类型: 管理员 PowerShell:

    bcdedit /set hypervisorlaunchtype Auto
    

    重启。

  • 如果有第三方虚拟软件(VMware、VirtualBox 等):

    • 临时卸载它们,或更新到最新版(它们可能抢占 hypervisor)。
    • VMware 需要 15.5+ 支持 Hyper-V 共存。
  • 完全重置 WSL 功能(如果反复失败): 管理员 PowerShell:

    dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
    dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
    

    重启。 然后反过来 enable:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

    重启,再试 wsl –install。

  • 如果你的 Win11 是装在虚拟机里(如你在用 VirtualBox/VMware/Proxmox 跑 Win11): WSL2 默认不支持嵌套虚拟化,除非主机开启嵌套 + VM 设置里启用 VT-x/AMD-V passthrough。推荐用 WSL1(wsl --set-default-version 1),或直接在物理机上装。

快速检查命令汇总(复制粘贴跑)

管理员 PowerShell:

Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
# 如果 Disabled,就 enable:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All

修复后,任务管理器 CPU 应显示 Virtualization Enabled,然后 wsl –install 就能过了。

如果还是卡住,把下面这些贴给我,我帮你进一步诊断:

  • systeminfo 的 Hyper-V 要求部分截图/文字
  • 你的电脑是物理机还是虚拟机?
  • CPU 型号(Win + R → msinfo32 → Processor)
  • 是否有其他虚拟软件安装?

大多数人按步骤 1 + 2 + 重启就能解决,尤其是 BIOS 虚拟化没开的情况。加油!

1.4 小结

使用Docker容器化部署,省去了手动安装Node环境的过程,另外也无需担心由于没有部署成功而在系统安装了一些乱七八糟的东西,它与你真实的系统完全隔离,能让你的系统时刻保持干净整洁。