Docker 环境下 OpenClaw Gateway 无法访问的故障排查指南

Docker 环境下 OpenClaw Gateway 无法访问的故障排查指南

运行 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 # 应该看到: # [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 # 健康检查openclaw docker compose exec openclaw-gateway node dist/index.js health --token "YOUR_TOKEN"

  • 官方文档:docs.openclaw.ai/gatewa
  • 故障排查:docs.openclaw.ai/gatewa
  • Gateway 配置:docs.openclaw.ai/gatewa
  • Docker 远程访问:docs.openclaw.ai/gatewa
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/256208.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月13日 上午11:18
下一篇 2026年3月13日 上午11:18


相关推荐

关注全栈程序员社区公众号