根本原因是服务仅监听127.0.0.1,拒绝宿主机请求;需将gateway.bind地址改为0.0.0.0并重启容器,使服务监听所有接口,方可通过http://127.0.0.1:18789正常访问。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw Docker部署后容器日志显示“listening on ws://127.0.0.1:18789”,浏览器却始终打不开http://127.0.0.1:18789,页面提示“无法访问此网站”或连接被拒绝,根本原因不是端口没映射,而是服务只监听本地回环地址,拒绝宿主机请求。
确认网关监听地址是否为127.0.0.1
进入 PowerShell 或终端,执行以下命令查看实时日志中关键监听信息:
docker logs openclaw --tail=20 | findstr "listening\|bind"
若输出含 【ws://127.0.0.1:18789】 或 【bind: "loopback"】,说明服务未对外暴露,这是页面打不开的直接原因。不要跳过这步——很多用户误以为“端口映射成功=服务可访问”,其实只是门开了,里面的人不接待外人。
强制网关绑定到所有网络接口
方法一:使用内置配置命令(推荐)
在 PowerShell 中执行:
docker exec openclaw openclaw config set gateway.bind lan
这条命令会将 bind 地址从 127.0.0.1 切换为 0.0.0.0,等效于允许任意 IP 访问。注意:不是所有镜像版本都支持该命令,若报错“command not found”,请改用方法二。
方法二:手动修改配置文件
① 进入容器内部编辑配置:
docker exec -it openclaw sh
OpenClaw专家 — 用于任何OpenClaw问题或需求,包括配置错误、网关崩溃、网关未启动、斜杠指令、频道路由等。
② 打开配置文件:
vi /home/node/.openclaw/openclaw.json
③ 找到 "bind": "loopback" 或 "bind": "127.0.0.1" 行,将其改为 "bind": "0.0.0.0";如果该字段不存在,就在 gateway 对象内新增一行:"bind": "0.0.0.0"
④ 保存退出(按 Esc → 输入 :wq → 回车)
⚠️ 提示:vi 编辑器不熟悉?可用 sed 替代:执行 sed -i 's/"bind": "loopback"/"bind": "0.0.0.0"/g' /home/node/.openclaw/openclaw.json,但务必先 cat /home/node/.openclaw/openclaw.json 确认原始字段名,避免替换错误。
重启容器并验证监听地址
执行:
docker restart openclaw
等待 15 秒,再次运行:
docker logs openclaw --tail=10 | findstr "listening"
确认输出变为 【ws://0.0.0.0:18789】 或 【http://0.0.0.0:18789】 —— 这才是正确状态。此时刷新浏览器 http://127.0.0.1:18789,页面应立即加载。

















