容器正在运行,端口已正确映射,但无法通过 http://localhost:18789 访问OpenClaw Web界面。
配置向导可能修改了Web UI的绑定地址或启用了身份验证机制,导致外部无法正常访问。
常见原因:
|
1 |
docker ps | Select-String "openclaw" |
查看错误日志:
|
1 |
docker logs openclaw --tail=50 |
|
1 |
docker port openclaw |
预期输出:18789/tcp -> 0.0.0.0:18789
|
1 |
docker logs openclaw 2>&1 | Select-String -Pattern "token|http|listening|bind" |
重点关注:
|
1 |
docker restart openclaw |
等待10-20秒后,再次访问 http://localhost:18789
症状:配置文件中的 "bind": "loopback" 导致Web UI只允许容器内部访问
解决方法:
|
1 |
"bind": "0.0.0.0" |
或者直接删除该行(使用默认值)
|
1 |
docker restart openclaw |
症状:日志中显示需要Token才能访问
解决方法:
|
1 |
Access with token: http://localhost:18789?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
症状:访问时弹出密码输入框
解决方法:
使用设置的环境变量密码:Perfect1@34
症状:所有访问都被拒绝
解决方法:
|
1 2 3 4 5 6 7 |
{ "gateway": { "auth": { "mode": "none" } } } |
注意:禁用认证会让任何能访问该端口的人直接控制OpenClaw,仅在个人电脑或内网环境使用。
以下是推荐的配置文件内容:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "bind": "0.0.0.0", "gateway": { "auth": { "mode": "password" } }, "models": { "providers": { "ollama": { "baseUrl": "http://host.docker.internal:11434", "apiKey": "ollama-local" } } }, "agents": { "defaults": { "model": { "primary": "ollama/deepseek-r1:latest" } } } } |
|
1 |
docker exec openclaw Select-String -Pattern "bind" /home/node/.openclaw/openclaw.json |
应该显示 "bind": "0.0.0.0"
在浏览器中访问:
|
1 |
http://localhost:18789 |
或尝试:
|
1 |
http://127.0.0.1:18789 |
|
1 |
docker logs openclaw 2>&1 | Select-String -Pattern "listening|ready" |
如果以上方法都不奏效,可以删除容器并重新创建(保留数据卷):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 停止并删除容器 docker stop openclaw docker rm openclaw
# 重新创建容器 docker run -d ` --name openclaw ` --restart always ` -p 18789:18789 ` --add-host=host.docker.internal:host-gateway ` -v "Z:\Tools\docker\openclaw\data:/home/node/.openclaw" ` -v "Z:\Tools\docker\openclaw\config:/app/config" ` -e OLLAMA_BASE_URL=http://host.docker.internal:11434 ` -e DEFAULT_MODEL=deepseek-r1:latest ` ghcr.io/openclaw/openclaw:latest |
配置向导中某个选项(如安全提示)可能导致自动生成了 loopback 配置。在容器环境下,loopback 只允许容器内部访问,对外不可见。
如果依然连接失败,检查Windows Defender防火墙,确保没有阻止Docker的网络访问。
如果18789端口被其他程序占用,可以: