1. OpenClaw 大龙虾本地化部署:Windows + WSL2 + Docker 到底能跑出什么效果
OpenClaw 是一个可以本地私有化运行的智能体网关,能对接大模型、飞书、企业微信等渠道,把「聊天机器人」变成「能干活的助手」。它最大的特点是数据不出本机,所有会话、配置、密钥都落在你自己的磁盘卷里。适合谁?适合想把 AI 助手接进团队 IM、又不想把聊天记录交给第三方云服务的开发者,也适合想折腾本地 Agent 的技术爱好者。
我这次在 Windows 11 上完整跑了一遍,路线是 WSL2 装 Ubuntu,Docker Desktop 做容器运行时,最后用 docker-compose 把 OpenClaw 拉起来。整个过程踩了几个坑:WSL 重启后没自动装完、Docker 的 WSL Integration 没开导致容器起不来、gateway.bind 没设成 lan 导致宿主机浏览器打不开 18789 端口。这篇把每一步的可复制命令、配置片段、验证动作都写清楚,你照着做基本能一次跑通。
先明确最终形态:Windows 宿主机浏览器访问http://localhost:18789/overview,输入访问令牌进入 Web 控制台;容器名openclaw,数据卷openclaw-data,端口映射18789:18789;模型和飞书渠道在容器内用openclaw config交互式配置。下面从环境准备开始。
2. WSL2 与 Ubuntu 环境准备:wsl --install 报错与 Node.js 22 安装
2.1 更新 WSL 并安装 Ubuntu
开始菜单右键,选择「终端(管理员)」或 PowerShell(管理员),执行:
wsl --update wsl --install如果你机器上还没装过 WSL,wsl --install会默认拉取 Ubuntu。执行完必须重启电脑。我第一次重启后并没有自动进入安装流程,而是再次执行了wsl --install才弹出设置 Linux 用户名和密码的提示。这一步别慌,重跑一次即可。
验证安装结果:
wsl --list --verbose确保VERSION列显示为2。如果显示 1,执行wsl --set-version Ubuntu 2转换。单独安装 Ubuntu 发行版可以用:
wsl --install -d Ubuntu2.2 更新软件包并装基础工具
以下命令在 Ubuntu 终端里执行。从开始菜单搜索 Ubuntu 点开,或在 Windows Terminal 标签页下拉里选 Ubuntu。
sudo apt update && sudo apt upgrade -y sudo apt install -y curl git wget build-essential2.3 安装 Node.js 22.x
OpenClaw 的部分工具链依赖 Node,装 22.x 版本:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs node -v npm -vnode -v输出v22.x.x就对了。这里有个常见坑:如果curl报证书错误,先sudo apt install -y ca-certificates再重试。
2.4 Docker Desktop 安装与 WSL Integration
从 Docker 官网下载 Docker Desktop for Windows,安装时勾选「Use WSL 2 instead of Hyper-V」。安装完启动 Docker Desktop,进入 Settings → Resources → WSL Integration,启用 Ubuntu 的集成开关。这一步不开,Ubuntu 里执行docker会提示 command not found。
验证:
docker --version打印版本号即成功。如果提示需要启用 Server 服务,在 Windows 服务管理器里找到「Server」服务,设为自动并启动。
3. docker-compose 配置 OpenClaw:镜像拉取、数据卷与 gateway.bind 参数
3.1 拉取镜像
docker pull ghcr.io/1186258278/openclaw-zh:latestghcr.io是 GitHub Container Registry,openclaw-zh是中文版仓库,latest是最新构建标签。
3.2 创建数据卷并初始化
docker volume create openclaw-data docker run --rm -v openclaw-data:/root/.openclaw \ ghcr.io/1186258278/openclaw-zh:latest openclaw setup3.3 设置远程访问参数
这一步不设置,宿主机浏览器访问不了容器内的服务:
docker run --rm -v openclaw-data:/root/.openclaw \ ghcr.io/1186258278/openclaw-zh:latest openclaw config set gateway.mode local docker run --rm -v openclaw-data:/root/.openclaw \ ghcr.io/1186258278/openclaw-zh:latest openclaw config set gateway.bind lan3.4 设置访问令牌
docker run --rm -v openclaw-data:/root/.openclaw \ ghcr.io/1186258278/openclaw-zh:latest openclaw \ config set gateway.auth.token your_token把your_token换成你自己的值,后面 Web 端 overview 界面要录入。
3.5 可复制的 docker-compose.yml
比起一长串docker run,我更推荐用 compose 管理。在任意目录新建docker-compose.yml:
services: openclaw: image: ghcr.io/1186258278/openclaw-zh:latest container_name: openclaw command: openclaw gateway run ports: - "18789:18789" volumes: - openclaw-data:/root/.openclaw restart: unless-stopped environment: - TZ=Asia/Shanghai volumes: openclaw-data: external: true注意openclaw-data用了external: true,因为前面已经手动创建过。启动:
docker compose up -d如果你后续要接大模型,模型 ID、Base URL、API Key 三件套在容器内配置时都要填全。我习惯把模型服务统一走一个兼容 OpenAI 协议的入口,比如 TaoToken 的 API 地址https://taotoken.net/api,模型 ID 按你实际用的填,Key 在控制台生成。这样 OpenClaw 里配置一次,换模型只改 Model ID 就行。
4. 启动验证与健康检查:18789 端口、日志与 devices approve
4.1 确认容器状态
docker ps看到openclaw容器状态Up且端口0.0.0.0:18789->18789/tcp就对了。
4.2 查看启动日志
docker logs -f openclaw日志里出现 gateway 监听 18789 的提示,说明服务起来了。如果日志停在初始化阶段不动,多半是数据卷权限或配置没写进去,回看第 3 步。
4.3 浏览器访问
打开http://localhost:18789/overview,输入第 3.4 步设置的令牌。如果页面提示pairing required,执行:
docker exec openclaw openclaw devices list docker exec openclaw openclaw devices approve <requestId>把<requestId>换成 list 里看到的实际值。
4.4 配置 LLM 与飞书
进入容器:
docker exec -it openclaw /bin/bash openclaw config选 Model 完成模型配置,选 Channels → Configure/link → Feishu/Lark 配置飞书。聊天策略选Open - respond in all groups (requires mention)。飞书那边需要去开放平台建应用拿 AppID 和 App Secret,填进去后回 Web 聊天窗口发测试消息,飞书客户端能收到就通了。
5. 常见报错排查:401、local proxy failed、reading choices 与 OAuth
401 Unauthorized:令牌没填对或没在 overview 录入。检查gateway.auth.token和 Web 端输入是否一致,注意别带多余空格。
local proxy failed:通常是gateway.bind没设成lan,或者 Docker 端口没映射。确认 compose 里18789:18789存在,且gateway.mode为local。
reading choices 报错:模型返回结构不符合预期,多半是 Base URL 或 Model ID 填错。检查三件套:Base URL 用https://taotoken.net/api,Key 用控制台生成的,Model ID 和你实际调用的模型一致。
OAuth 相关报错:飞书渠道授权失败,回开放平台检查 AppID、App Secret 和权限范围,确认机器人已发布。
容器起不来:docker logs openclaw看具体错误。常见是数据卷没创建,执行docker volume create openclaw-data后重试。
WSL 里 docker 命令找不到:Docker Desktop 的 WSL Integration 没开,去 Settings → Resources 打开。
6. 后续接入与长期运行建议
跑通之后,如果你打算长期挂着做编码助手或 Agent,建议把模型调用统一走一个稳定入口。我目前用 TaoToken 的 Coding Plan 做长期编码场景,API Key 在控制台生成,接入文档里有各语言的示例。模型对话可以直接在网页里验证效果,不用每次改代码。
排障和接入细节看接入文档,验证模型效果用模型对话,长期编码或 Agent 场景上 Coding Plan。容器记得设restart: unless-stopped,Windows 重启后 Docker Desktop 起来容器会自动拉起。数据卷openclaw-data别乱删,里面是你的全部配置和会话记录。