OpenClaw 浏览器自动化测试的那些坑(一):Linux Snap 版本的 Chromium 无法使用托管模式
本文记录了在 Linux 服务器上配置 OpenClaw 浏览器自动化功能时,遇到的 Snap 版本 Chromium 无法使用托管模式的坑及解决方案
前言
在部署 OpenClaw AI 助手时,浏览器自动化功能是一个非常强大的特性。它能让 AI 拥有"眼睛"和"双手",实现网页自动化操控。然而,在 Ubuntu 24.04 服务器上配置这个功能时,却遇到一个意想不到的坑------Snap 版本的 Chromium 无法使用托管模式。
问题现象
在腾讯云 Ubuntu 24.04 LTS 服务器上部署 OpenClaw 后,尝试通过 AI 打开网页时遇到错误:
我无法访问浏览器控制服务。请先启动 OpenClaw 网关...
检查浏览器服务状态:
bash
openclaw browser status
输出显示:
yaml
profile: openclaw
enabled: true
running: false
cdpReady: false
detectedBrowser: Chromium
detectedPath: /usr/bin/chromium-browser
尝试手动启动浏览器:
bash
openclaw browser start
依然报错:
Error: Browser attachOnly is enabled and profile "openclaw" is not running.
根因分析
Ubuntu 24.04 的 Chromium 其实是 Snap 版本
执行以下命令验证:
bash
file /usr/bin/chromium-browser
输出:
/usr/bin/chromium-browser: POSIX shell script, ASCII text executable
原来 chromium-browser 只是一个 shell 脚本,用于启动 Snap 容器中的 Chromium!
为什么 Snap 版本无法工作?
Snap 是一种沙盒化的包管理系统,Snap 版本的 Chromium 运行在独立的沙盒环境中,有以下限制:
- CDP 端口无法暴露:OpenClaw 需要通过 Chrome DevTools Protocol (CDP) 控制浏览器,但 Snap 版本的 Chromium 由于安全隔离,无法将 CDP 端口映射到主机
- 沙盒限制:Snap 应用的沙盒机制会阻止外部进程对浏览器进行控制
- 存根程序 :
/usr/bin/chromium-browser只是一个启动器,真正的浏览器在 Snap 容器的另一端
这导致 OpenClaw 的托管模式(managed mode)完全无法使用,因为 OpenClaw 需要直接启动和控制浏览器进程。
解决方案
方案一:安装官方 Google Chrome(推荐)
这是最直接有效的解决方案。
1. 下载安装包
bash
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
2. 安装 Chrome
bash
sudo dpkg -i google-chrome-stable_current_amd64.deb
如果遇到依赖问题,执行:
bash
sudo apt --fix-broken install -y
3. 验证安装
bash
which google-chrome-stable
# 输出:/usr/bin/google-chrome-stable
google-chrome-stable --version
# 输出:Google Chrome 144.0.7559.132
方案二:安装系统级的 Chromium(通过仓库)
如果不希望安装 Google Chrome,可以添加 Debian/Untrusted 仓库:
bash
sudo apt update
sudo apt install chromium
注意:Ubuntu 24.04 默认仓库中的 chromium 依然是 Snap 版本,需要使用 Debian 的仓库。
配置 OpenClaw
编辑 OpenClaw 配置文件,指定 Chrome 可执行文件路径:
bash
nano ~/.openclaw/openclaw.json
添加或修改 browser 配置段:
json
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true,
"attachOnly": false,
"defaultProfile": "openclaw"
}
}
配置项说明
| 配置项 | 值 | 说明 |
|---|---|---|
| enabled | true | 启用浏览器功能 |
| executablePath | /usr/bin/google-chrome-stable | 指定 Chrome 路径,避免使用 Snap 版 |
| headless | true | 无头模式,服务器环境必须开启 |
| noSandbox | true | 禁用沙盒,服务器环境需要 |
| attachOnly | false | 允许 OpenClaw 自动启动浏览器 |
| defaultProfile | openclaw | 使用托管模式 |
重启服务
bash
openclaw gateway restart
验证测试
检查浏览器状态
bash
openclaw browser status
正确输出:
yaml
profile: openclaw
enabled: true
running: true
cdpReady: true
detectedBrowser: custom
detectedPath: /usr/bin/google-chrome-stable
测试打开网页
bash
openclaw browser open https://www.baidu.com
测试截图
bash
openclaw browser screenshot
输出:
MEDIA:~/.openclaw/media/browser/xxx.png
常见问题排查
问题 1:attachOnly 模式
如果遇到错误:
Error: Browser attachOnly is enabled and profile "openclaw" is not running.
说明配置文件中 attachOnly 设置为 true。需要将其改为 false 或删除该字段,让 OpenClaw 能够自动启动浏览器。
问题 2:中文显示为方块
如果截图中的中文显示为 □□□,需要安装中文字体:
bash
sudo apt install -y fonts-noto-cjk fonts-wqy-zenhei
问题 3:配置文件字段错误
如果重启时报错:
Invalid config: browser: Unrecognized key: "mode"
说明使用了不存在的字段。查阅官方文档,使用正确的配置字段。
总结
Ubuntu 24.04 默认的 Chromium 是 Snap 版本,由于沙盒隔离和 CDP 端口无法暴露的原因,无法在 OpenClaw 的托管模式下工作。解决方案是安装官方的 Google Chrome 或系统级的 Chromium,并在配置文件中指定正确的可执行文件路径。
这个问题的根本原因在于 Snap 应用的沙盒化设计与传统浏览器控制需求的冲突。在服务器环境下,选择非 Snap 版本的浏览器是确保功能正常的关键。
系列文章预告:
- OpenClaw 浏览器自动化测试的那些坑(二):计划中
- OpenClaw 浏览器自动化测试的那些坑(三):计划中
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏!
本文记录于 2026 年 2 月,基于 OpenClaw v2026.2.13 版本