由于 SSRF 策略阻止私有网络,Docker 编写浏览器侧车会默默失败

作者: jiaton创建于 2026年4月19日更新于 2026年9月14日

环境

  • OpenClaw: 2026.4.14

  • 部署: Docker Compose (自主部署)

  • 浏览器 sidecar: coollabsio/openclaw-browser:latest

    问题

    通过 Docker Compose 使用官方浏览器 sidecar 时,浏览器工具总是失败,错误为:

    Remote CDP for profile "openclaw" is not reachable at http://browser:9223.

    这种情况是无声的 - 从来没有向浏览器容器发出 HTTP 请求。错误在 ~2ms 内返回,排除了任何网络超时的可能性。

    根本原因

    OpenClaw 的 SSRF 防护策略(用于云/多租户部署)默认阻止对私有网络 IP 的出站 HTTP 请求。在 Docker Compose 设置中,browser 主机名解析为私有 IP(例如 192.168.64.x),在尝试连接之前就被阻止了。

    cdp-reachability-policy.ts 中的检查将 SSRF 策略应用于所有远程 CDP 配置文件。在没有明确的 SSRF 配置的情况下,resolveBrowserSsrFPolicy 返回 {} (一个空对象,为真),导致 assertCdpEndpointAllowed 运行并拒绝私有 IP。

    修复

    Docker-compose.yml 中将以下内容添加到 openclaw 服务环境中:

  - OPENCLAW__browser__ssrfPolicy__dangerouslyAllowPrivateNetwork=true                

建议

  1. 在浏览器 sidecar 部分的 README 中记录此要求,或
  2. 自动检测浏览器 sidecar 主机名并将其添加到白名单中,当 BROWSER_CDP_URL 指向 Docker 服务名称(非循环私有主机)时。

内容来源: coollabsio/openclaw