浏览器故障排除
问题:无法在端口 18800 上启动 Chrome CDP¶
根本原因¶
在 Ubuntu 和大多数 Linux 发行版上,apt install chromium 安装的是 snap 包装器,而不是真正的浏览器:
Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).
Snap 的 AppArmor 限制会干扰 OpenClaw 生成和监控浏览器进程的方式。
其他常见的 Linux 启动失败:
The profile appears to be in use by another Chromium process:受管配置文件目录中存在过期的Singleton*锁文件。当锁指向当前主机上的已死进程时,OpenClaw 会删除这些锁并重试一次。如果锁文件引用了其他主机名,则会保留,直到你确认该配置文件不再被使用(包括在机器重命名之后)。Missing X server or $DISPLAY:在没有桌面会话的主机上明确请求了可见浏览器。当DISPLAY和WAYLAND_DISPLAY都未设置时,本地受管配置文件在 Linux 上会回退到无头模式。如果你设置了OPENCLAW_BROWSER_HEADLESS=0、browser.headless: false或browser.profiles.<name>.headless: false,请移除该有头覆盖,设置OPENCLAW_BROWSER_HEADLESS=1,启动Xvfb,运行openclaw browser start --headless进行一次性受管启动,或在真实的桌面会话中运行 OpenClaw。
解决方案 1:安装 Google Chrome(推荐)¶
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y # if there are dependency errors
更新 ~/.openclaw/openclaw.json:
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}
解决方案 2:以仅附加模式使用 snap Chromium¶
如果你必须保留 snap Chromium,可以将 OpenClaw 配置为附加到手动启动的浏览器,而不是自行启动它:
手动启动 Chromium:
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
--user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
about:blank &
也可以使用 systemd 用户服务自动启动它:
# ~/.config/systemd/user/openclaw-browser.service
[Unit]
Description=OpenClaw Browser (Chrome CDP)
After=network.target
[Service]
ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.openclaw/browser/openclaw/user-data about:blank
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
验证浏览器是否正常工作¶
这些调用指向 OpenClaw 浏览器控制服务,而不是上面使用的 Chrome CDP 端口。该服务的端口由 gateway.port 派生而来(默认 18791 = 网关端口 + 2),因此如果你更改了 Gateway 端口,请调整该数字。jq 仅用于美化输出响应;如果你没有安装它,可以去掉管道。
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
配置参考¶
| 选项 | 描述 | 默认值 |
|---|---|---|
browser.enabled |
启用浏览器控制 | true |
browser.executablePath |
Chromium 系浏览器二进制文件的路径(Chrome/Brave/Edge/Chromium) | 自动检测(当 OS 默认浏览器基于 Chromium 时优先使用) |
browser.headless |
无 GUI 运行 | false |
OPENCLAW_BROWSER_HEADLESS |
本地受管浏览器无头模式的进程级覆盖 | 未设置 |
browser.noSandbox |
添加 --no-sandbox 标志(某些 Linux 环境需要) |
false |
browser.attachOnly |
不启动浏览器;仅附加到现有浏览器 | false |
在 Raspberry Pi、较老的 VPS 主机或慢速存储上,当 Chrome 暴露其 CDP HTTP 端点或准备就绪所需的时间超过受管浏览器的截止时间时,请使用 attachOnly 手动启动浏览器。
问题:未找到配置文件 “user” 的 Chrome 标签页¶
你正在使用 user(existing-session / Chrome MCP)配置文件,但没有打开的标签页可供附加。
修复选项:
- 改用受管浏览器:
openclaw browser --browser-profile openclaw start(或设置browser.defaultProfile: "openclaw")。 - 保持本地 Chrome 运行并至少打开一个标签页,然后使用
--browser-profile user重试。
注意:
user仅限当前主机。在 Linux 服务器、容器或远程主机上,请优先使用 CDP 配置文件。user和其他existing-session配置文件共享当前 Chrome MCP 的限制:仅支持引用驱动的操作,每次上传一个文件,不支持对话框timeoutMs覆盖,不支持wait --load networkidle,也不支持responsebody、PDF 导出、下载拦截或批量操作。- 本地
openclaw驱动配置文件在 OpenClaw 创建时会自动分配cdpPort;你手动声明的配置文件必须自行设置cdpPort,远程 CDP 则需设置cdpUrl。 - 远程 CDP 配置文件支持
http://、https://、ws://和wss://。使用 HTTP(S) 进行/json/version发现;当浏览器服务提供直接的 DevTools socket URL 时,使用 WS(S)。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw