解决 Ubuntu 下 OpenClaw 无法调用浏览器的踩坑记录
0x00 故障现象
在使用 OpenClaw 运行自动化任务时,发现系统一直无法正常启动并调用浏览器。但是我明明已经通过apt install chromium 安装了浏览器,OpenClaw也只是提示浏览器无法调用,需要重启 OpenClaw Gateway。
0x01 根本原因排查
经过深入排查,发现坑出在 Ubuntu 自带的包管理机制上:
Ubuntu 默认会将通过 apt 安装的 Chromium 强制转换为带有 AppArmor 严格沙盒(Strict Confinement) 的 Snap 版本。这个沙盒机制限制了进程的网络、文件系统访问以及 IPC(进程间通信),会直接拦截和截断 CDP(Chrome DevTools Protocol)端口。这导致 OpenClaw 根本无法通过 CDP 连接并接管浏览器。
结论: 必须彻底抛弃 Snap 体系,改用传统的 .deb 版 Google Chrome,才能解除底层权限限制。
0x02 解决方案
直接通过deb包安装浏览器
直接使用 Google 官方的 Chrome(它本身就是基于 Chromium,且 .deb 包不会有 Snap 的沙盒限制)
# 下载 Google Chrome 稳定版
root@openclaw:~# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# 安装 deb 包(此时可能会因为缺少字体库等依赖报错)
root@openclaw:~# sudo dpkg -i google-chrome-stable_current_amd64.deb
# 自动修复并安装缺失的依赖环境
root@openclaw:~# sudo apt-get install -f
# 确认版本号,验证是否安装成功
root@openclaw:~# google-chrome --version
Google Chrome 146.0.7680.153
# 查找二进制执行文件的绝对路径
root@openclaw:~# which google-chrome
/usr/bin/google-chrome
更改配置文件
然后将 OpenClaw 的 executablePath 指向 /usr/bin/google-chrome 即可。
如果你的 OpenClaw 是在 root 环境下运行的(如上文的 root@openclaw),由于 Chrome 自身的安全机制,默认会拒绝在没有沙盒的情况下以 root 身份运行浏览器,导致一启动就会闪退。此时,必须修改 OpenClaw 的配置文件(通常位于 ~/.openclaw/openclaw.json),在 browser 节点下将执行路径替换为原生 Chrome,并将 noSandbox 显式设置为 true。
配置修改参考如下:
root@openclaw:~# cat ~/.openclaw/openclaw.json | grep -A4 browser
"browser": {
"executablePath": "/usr/bin/google-chrome",
"noSandbox": true,
"attachOnly": true
},
ubuntu Chrome openclaw apt snap chromium