由于 SSRF 策略阻止私有网络,Docker 编写浏览器侧车会默默失败
环境
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
建议
- 在浏览器 sidecar 部分的 README 中记录此要求,或
- 自动检测浏览器 sidecar 主机名并将其添加到白名单中,当 BROWSER_CDP_URL 指向 Docker 服务名称(非循环私有主机)时。
内容来源: coollabsio/openclaw