运行 docker-setup.sh 后,通过浏览器访问 http://127.0.0.1:18789 无法打开页面。
常见错误信息:
Health check failed: gateway closed (1006 abnormal closure) Gateway target: ws://127.0.0.1:18789 Bind: loopback
# 查看所有容器状态 docker compose ps -a
预期输出:
NAME COMMAND STATUS openclaw-gateway-1 “node dist/index.js ga…” Up X minutes openclaw-cli-1 “node dist/index.js on…” Exit 0
检查要点:
- ✅
openclaw-gateway-1状态应该是Up - ❌ 如果显示
Exited或不存在,需要启动容器
docker compose logs openclaw-gateway | tail -50
正常情况应该看到:
[gateway] listening on ws://0.0.0.0:18789 (PID 7) [canvas] host mounted at http://0.0.0.0:18789/__openclaw__/canvas/ [browser/service] Browser control service ready
异常情况:
- ❌
Bind: loopback- 绑定模式错误 - ❌
Health check failed- 健康检查失败 - ❌
EADDRINUSE- 端口被占用
# 进入 gateway 容器 docker compose exec openclaw-gateway bash
检查主进程
ps aux | head -5
检查 node 进程
ps aux | grep node | grep -v grep
测试内部连接
curl http://127.0.0.1:18789
预期结果:
- PID 1 应该是
node dist/index.js gateway … - 有多个 node 进程在运行
curl应该返回 HTML 内容
症状:
# 在容器内执行 ps aux | head -5
显示:
node dist/index.js onboard –no-install-daemon
原因:进入的是 openclaw-cli 容器(onboarding),而不是 openclaw-gateway 容器。
解决方法:
# 退出当前容器
exit
确认 gateway 容器运行
docker compose ps
进入正确的容器
docker compose exec openclaw-gateway bash
症状:
[gateway] Bind: loopback Health check failed: gateway closed
原因:onboarding 期间选择了 loopback 而不是 lan。
Docker 环境下必须使用 lan 绑定,因为:
loopback(127.0.0.1) 只在容器内部可访问lan(0.0.0.0) 允许通过 Docker 端口映射从宿主机访问
解决方法:
方法 1 - 修改配置文件(推荐):
# 在宿主机上执行 sed -i.bak ‘s/“bind”: “loopback”/“bind”: “lan”/g’ ~/.openclaw/openclaw.json
重启容器
docker compose restart openclaw-gateway
方法 2 - 使用 openclaw configure:
docker compose exec openclaw-gateway node dist/index.js configure
症状:
docker compose ps
openclaw-gateway-1 状态是 Exit 123
解决方法:
# 启动 gateway 容器
docker compose up -d openclaw-gateway
查看启动日志
docker compose logs -f openclaw-gateway
症状:
Error: listen EADDRINUSE: address already in use :::18789
解决方法:
# 检查宿主机端口占用 lsof -i :18789
如果被其他进程占用,停止该进程或修改端口
export OPENCLAW_GATEWAY_PORT=18788 docker compose up -d openclaw-gateway
docker compose ps openclaw-gateway
状态应该是 “Up”
docker compose logs openclaw-gateway | tail -10
docker compose logs openclaw-gateway | tail -10
应该看到:
[gateway] listening on ws://0.0.0.0:18789
# 从宿主机测试
# 从宿主机测试
curl -v http://127.0.0.1:18789
应该返回 HTML 内容
在容器内测试
docker compose exec openclaw-gateway curl http://127.0.0.1:18789
应该返回 HTML 内容
打开浏览器访问:
- 不带 token:
http://127.0.0.1:18789 - 带 token:
http://127.0.0.1:18789/#token=YOUR_TOKEN
应该看到 OpenClaw 控制界面。
OpenClaw 在 Docker 中运行两个容器:
| 容器 | 用途 | 命令 |
|---|---|---|
| openclaw-cli | 执行命令、onboarding | node dist/index.js onboard |
| openclaw-gateway | 运行 gateway 服务 | node dist/index.js gateway |
两个容器通过 volume 挂载共享配置:
- 配置目录:
/.openclaw→/home/node/.openclaw - 工作目录:
/.openclaw/workspace→/home/node/.openclaw/workspace
| 文件 | 宿主机路径 | 容器内路径 |
|---|---|---|
| 配置文件 | ~/.openclaw/openclaw.json | /home/node/.openclaw/openclaw.json |
| Docker Compose | /path/to/openclaw/docker-compose.yml | - |
| 日志文件 | - | /tmp/openclaw/openclaw-*.log |
在 Docker 环境中,onboarding 时应该选择:
- ✅ LAN (0.0.0.0) - 允许从宿主机访问
- ❌ Loopback (127.0.0.1) - 仅容器内部可访问
在 docker-compose.yml 或 .env 文件中设置:
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_GATEWAY_TOKEN=your-token-here
修改 docker-compose.yml 的端口映射:
ports:
- “127.0.0.1:18789:18789” # 仅绑定到 localhost,不暴露到公网
# 查看所有容器状态 docker compose ps -a
查看 gateway 日志
docker compose logs -f openclaw-gateway
重启 gateway
docker compose restart openclaw-gateway
进入 gateway 容器
docker compose exec openclaw-gateway bash
查看 gateway 配置
docker compose exec openclaw-gateway cat /home/node/.openclaw/openclaw.json
健康检查
docker compose exec openclaw-gateway node dist/index.js health –token “YOUR_TOKEN”
- 官方文档:https://docs.openclaw.ai/gateway/health
- 故障排查:https://docs.openclaw.ai/gateway/troubleshooting
- Gateway 配置:https://docs.openclaw.ai/gateway/configuration
- Docker 远程访问:https://docs.openclaw.ai/gateway/remote
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/228883.html