Khắc phục lỗi Browser (Linux)

Vấn đề: “Failed to start Chrome CDP on port 18800”

Server điều khiển browser của OpenClaw không thể khởi động Chrome/Brave/Edge/Chromium và báo lỗi:

{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}

Nguyên nhân

Trên Ubuntu (và nhiều distro Linux khác), Chromium mặc định được cài đặt dưới dạng snap package. Cơ chế AppArmor confinement của snap can thiệp vào cách OpenClaw khởi động và giám sát tiến trình browser.

Lệnh apt install chromium chỉ cài một stub package chuyển hướng đến snap:

Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).

Đây KHÔNG phải browser thật — chỉ là một wrapper.

Giải pháp 1: Cài Google Chrome (Khuyên dùng)

Cài package .deb chính thức của Google Chrome, không bị sandbox bởi snap:

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  # nếu có lỗi dependency

Sau đó cập nhật config OpenClaw (~/.openclaw/openclaw.json):

{
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true
  }
}

Giải pháp 2: Dùng Snap Chromium với Attach-Only Mode

Nếu các bạn bắt buộc phải dùng snap Chromium, hãy cấu hình OpenClaw để attach vào browser đã khởi động thủ công:

  1. Cập nhật config:
{
  "browser": {
    "enabled": true,
    "attachOnly": true,
    "headless": true,
    "noSandbox": true
  }
}
  1. Khởi động Chromium thủ công:
chromium-browser --headless --no-sandbox --disable-gpu \
  --remote-debugging-port=18800 \
  --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
  about:blank &
  1. Tùy chọn: tạo systemd user service để tự động khởi động Chrome:
# ~/.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

Kích hoạt bằng lệnh: systemctl --user enable --now openclaw-browser.service

Kiểm tra Browser hoạt động

Kiểm tra trạng thái:

curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'

Test browsing:

curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs

Tham khảo Config

Tùy chọnMô tảMặc định
browser.enabledBật điều khiển browsertrue
browser.executablePathĐường dẫn đến file binary browser dựa trên Chromium (Chrome/Brave/Edge/Chromium)tự động phát hiện (ưu tiên browser mặc định nếu là Chromium-based)
browser.headlessChạy không có GUIfalse
browser.noSandboxThêm flag --no-sandbox (cần thiết cho một số cấu hình Linux)false
browser.attachOnlyKhông khởi động browser, chỉ attach vào browser đang chạyfalse
browser.cdpPortPort của Chrome DevTools Protocol18800

Vấn đề: “Chrome extension relay is running, but no tab is connected”

Các bạn đang dùng profile chrome (extension relay). Nó yêu cầu browser extension OpenClaw phải được attach vào một tab đang hoạt động.

Cách khắc phục:

  1. Dùng managed browser: openclaw browser start --browser-profile openclaw (hoặc set browser.defaultProfile: "openclaw").
  2. Dùng extension relay: cài extension, mở một tab, và click vào icon extension OpenClaw để attach.

Lưu ý:

  • Profile chrome sử dụng Chromium browser mặc định của hệ thống khi có thể.
  • Profile openclaw local tự động gán cdpPort/cdpUrl; chỉ set những giá trị này cho remote CDP.