本文首发于 https://blog.okwujun.pw
最近,我需要在 Windows 10 上搭建一个 AI 助手平台——OpenClaw。核心要求很明确:用 Docker 部署,并且不装本地大模型,只通过配置 URL 来调用公司内网已有的模型服务。本以为半小时能搞定的事,结果折腾了整整一个下午。从 WSL 装不上 Ubuntu,到 Docker 拉取镜像超时,再到 OpenClaw 怎么都连不上…… 好在最后都解决了。
这篇文章不仅是一份操作指南,更是一份避坑实录。希望能让后来者少走些弯路,半小时内跑起来。
一、写在前面:为什么这么折腾?
OpenClaw 是一个强大的 AI 网关,可以统一管理各种模型 API。官方推荐用 Docker 部署,而 Docker 在 Windows 上最舒服的方式就是搭配 WSL 2。
我原本计划用 Ubuntu 22.04,结果 wsl --install -d Ubuntu-22.04 死活装不上(公司网络限制)。无奈之下,我装了个 Oracle Linux 7.9——一个企业级 Linux,虽然小众,但作为 Docker 后端完全没问题。这也为后续埋下了一些“惊喜”。
二、环境准备:打好地基
1. 启用 WSL 2 并安装 Linux 发行版
以管理员身份打开 PowerShell,执行:
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 设置 WSL 2 为默认版本
wsl --set-default-version 2
# 重启电脑后,安装你喜欢的发行版(我用了 Oracle Linux 7.9)
wsl --install -d OracleLinux_7_9
小贴士:如果你能顺利装 Ubuntu,那是最好的。如果不行,任何主流发行版(包括 Oracle Linux)都可以。
2. 安装 Docker Desktop
去 Docker 官网 下载安装包。安装时务必勾选 “Use WSL 2 instead of Hyper-V”。
安装后,打开 Docker Desktop,进入 Settings → Resources → WSL Integration,把你装的 Linux 发行版(比如 OracleLinux_7_9)的开关打开,点击 Apply & Restart。
验证一下:打开你的 WSL 终端(比如直接输入 wsl 进入),执行 docker version,如果能看到客户端和服务端信息,说明集成成功。
三、第一道坎:Docker 拉取镜像超时
高高兴兴准备拉取 OpenClaw 镜像,结果:
docker pull openclaw/openclaw:latest
Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
网络问题!公司网络屏蔽了 Docker Hub。解决方案有两条路:
方案 A:配置 Docker 镜像加速器(推荐)
我用的阿里云加速器,免费且稳定。注册阿里云后,访问 容器镜像服务控制台,找到“镜像加速器”,会得到一个专属地址,例如 https://xxxxx.mirror.aliyuncs.com。
然后在 Docker Desktop 的 Settings → Docker Engine 中,编辑 registry-mirrors:
{
“registry-mirrors”: [
“https://xxxxx.mirror.aliyuncs.com”
]
}
点击 Apply & Restart 后,再拉取镜像,速度飞起。
方案 B:使用代理(适合有代理的环境)
如果你有 HTTP 代理,可以在 Docker Desktop 的 Settings → Resources → Proxies 中配置。注意 WSL 内的代理地址要写 Windows 主机的 IP(通常是 172.x.x.1),而不是 127.0.0.1。
四、部署 OpenClaw:用 Docker Compose 一键启动
创建项目目录和 docker-compose.yml:
mkdir ~/openclaw && cd ~/openclaw
nano docker-compose.yml
写入以下内容:
version: ‘3.8’
services:
openclaw:
image: 1panel/openclaw:2026.3.12-beta # 我用的是这个镜像,你也可以用官方 openclaw/openclaw
container_name: openclaw-container
ports:
- “0.0.0.0:18789:18789” # 映射到所有接口,方便宿主机访问
volumes:
- ~/.openclaw:/home/node/.openclaw # 挂载配置目录,数据持久化
environment:
- TZ=Asia/Shanghai
restart: always
启动:
docker compose up -d
查看日志:
docker logs -f openclaw-container
如果看到类似这样的输出,说明容器启动成功,但可能还没法访问:
[gateway] listening on ws://127.0.0.1:18789
五、第二道坎:浏览器访问不了(空响应)
我在 Windows 浏览器打开 http://127.0.0.1:18789,却显示“该网页无法正常运作”。在 WSL 内 curl 也返回空。
问题根源:OpenClaw 默认只监听容器内的 127.0.0.1,虽然做了端口映射,但外部连接被拒绝。
解决方法:修改 OpenClaw 的配置文件,让它监听 0.0.0.0。
1. 找到配置文件
配置文件挂载在 ~/.openclaw/openclaw.json。如果没有这个文件,容器第一次启动时会自动生成。
2. 修改监听地址
编辑 ~/.openclaw/openclaw.json:
nano ~/.openclaw/openclaw.json
找到 gateway 部分,添加或修改为:
“gateway”: {
“auth”: {
“mode”: “token”,
“token”: “你的实际token” # 这里会自动生成,不要改
},
“bind”: “lan”, # 监听所有网络接口
“controlUi”: {
“allowedOrigins”: [ # 允许访问的来源
“http://localhost:18789”,
“http://127.0.0.1:18789”,
“http://你的WSL-IP:18789” # 可以通过 hostname -I 查看
]
}
}
注意:新版 OpenClaw 已经废弃了
“bind”: “0.0.0.0”这种写法,改用模式化的“lan”(局域网)、“loopback”(本机)等。
保存后重启容器:
docker compose restart
再看日志,应该会出现:
[gateway] listening on ws://0.0.0.0:18789
这时在 Windows 浏览器访问 http://127.0.0.1:18789,就能看到登录页面了!
六、配置外部大模型:实现“URL 接口”
在登录页面输入你的 token(可以在 ~/.openclaw/openclaw.json 中找到 gateway.auth.token 的值),进入主界面后,你会发现默认模型是 anthropic/claude-opus-4-6,这不是我们想要的。
我们需要在配置文件中添加自己的模型提供商。
再次编辑 ~/.openclaw/openclaw.json,在 models 部分添加:
“models”: {
“providers”: {
“my-qwen”: { // 自定义名称
“baseUrl”: “http://192.168.10.142:5601/qwen3.5-397B.v4-idc1/v1”,
“apiKey”: “noneed”, // 无需密钥的服务
“api”: “openai-chat”, // API 类型
“models”: [
{
“id”: “qwen3.5-397B”, // 模型 ID,必须与服务端一致
“name”: “Qwen 3.5 397B”
}
]
}
},
“mode”: “merge”
},
“agents”: {
“defaults”: {
“model”: {
“primary”: “my-qwen/qwen3.5-397B” // 设置为默认模型
}
},
“list”: [
{
“id”: “main”,
“default”: true,
“model”: “my-qwen/qwen3.5-397B”
}
]
}
保存后重启容器。现在日志里会显示:
[gateway] agent model: my-qwen/qwen3.5-397B
大功告成!现在你可以愉快地和你的大模型对话了。
七、避坑指南(小白必看)
- WSL 发行版选择:尽量用 Ubuntu,遇到问题更容易搜到答案。如果非要用 Oracle Linux,记得启用
ol7_addons仓库来装 Docker 引擎(但我们是 Docker Desktop,所以这条忽略)。 - 端口映射:如果容器内服务只监听
127.0.0.1,端口映射会失效。务必确保服务监听0.0.0.0或通过bind: “lan”开启。 - 配置文件修改:OpenClaw 的配置项是版本敏感的。如果你看到类似
“gateway.bind: ... are legacy”的提示,说明你用了旧版配置格式,按提示改用新版(比如“lan”)。 - 网络问题:Docker 拉取镜像超时,优先配置国内镜像加速器,比折腾代理简单得多。
- 权限问题:如果容器日志报
EACCES: permission denied,说明挂载目录的权限不对。确保宿主机目录(如~/.openclaw)对容器内用户(通常是node,UID 1000)可写。 - 容器以root权限运行,方便小龙虾安装环境,例如各种包。
version: '3.8'
services:
openclaw:
image: docker.1ms.run/1panel/openclaw:2026.3.12-beta # 我用的是这个镜像,你也可以用官方 openclaw/openclaw
container_name: openclaw-container
user: root # 容器内使用root安全相对可控
ports: # 映射到所有接口,方便宿主机访问
- 18789:18789
- 18790:18790
- 18791:18791
- 8443:8443
volumes:
- ~/.openclaw:/root/.openclaw # 挂载配置目录,数据持久化
environment:
- TZ=Asia/Shanghai
- OPENAI_BASE_URL=http://x.x.x.x:x/v1
- OPENAI_API_KEY=noneed
- DEFAULT_MODEL=qwen3.5-397B
restart: always
八、结语
从最初 WSL 安装失败,到最后 OpenClaw 成功调用外部模型,这一路踩坑不少,但也学到了很多。OpenClaw 作为一个 AI 网关,确实非常灵活,尤其适合那些不想本地部署大模型、只想通过 API 统一管理多个服务的场景。
希望这篇手记能帮你在 Windows 10 上顺利跑起 OpenClaw。如果你在部署过程中遇到其他问题,欢迎在评论区留言交流。
(完)
附:一些有用的命令速查
# 查看容器日志
docker logs -f openclaw-container
# 进入容器内部
docker exec -it openclaw-container /bin/sh
# 重启容器
docker compose restart
# 查看 WSL IP
hostname -I
# 查看 Docker 端口映射
docker port openclaw-container
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。