Langsung ke konten utama

Pemecahan Masalah Browser (Linux)

Masalah: “Failed to start Chrome CDP on port 18800”

Server kontrol browser OpenClaw gagal meluncurkan Chrome/Brave/Edge/Chromium dengan error:
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}

Akar Masalah

Di Ubuntu (dan banyak distro Linux), instalasi Chromium default adalah paket snap. Confinement AppArmor milik snap mengganggu cara OpenClaw memunculkan dan memantau proses browser. Perintah apt install chromium menginstal paket stub yang mengarahkan ke snap:
Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).
Ini BUKAN browser sungguhan - ini hanya wrapper.

Solusi 1: Instal Google Chrome (Direkomendasikan)

Instal paket .deb Google Chrome resmi, yang tidak disandbox oleh 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  # jika ada error dependensi
Lalu perbarui config OpenClaw Anda (~/.openclaw/openclaw.json):
{
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true
  }
}

Solusi 2: Gunakan Snap Chromium dengan Mode Attach-Only

Jika Anda harus menggunakan snap Chromium, konfigurasi OpenClaw agar terhubung ke browser yang dijalankan secara manual:
  1. Perbarui config:
{
  "browser": {
    "enabled": true,
    "attachOnly": true,
    "headless": true,
    "noSandbox": true
  }
}
  1. Jalankan Chromium secara manual:
chromium-browser --headless --no-sandbox --disable-gpu \
  --remote-debugging-port=18800 \
  --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
  about:blank &
  1. Secara opsional buat service pengguna systemd untuk memulai Chrome secara otomatis:
# ~/.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
Aktifkan dengan: systemctl --user enable --now openclaw-browser.service

Memverifikasi Browser Berfungsi

Periksa status:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
Uji penelusuran:
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs

Referensi Config

OptionDeskripsiDefault
browser.enabledAktifkan kontrol browsertrue
browser.executablePathPath ke biner browser berbasis Chromium (Chrome/Brave/Edge/Chromium)terdeteksi otomatis (mengutamakan browser default jika berbasis Chromium)
browser.headlessJalankan tanpa GUIfalse
browser.noSandboxTambahkan flag --no-sandbox (diperlukan untuk beberapa setup Linux)false
browser.attachOnlyJangan luncurkan browser, hanya hubungkan ke yang sudah adafalse
browser.cdpPortPort Chrome DevTools Protocol18800

Masalah: “No Chrome tabs found for profile=“user""

Anda sedang menggunakan profil existing-session / Chrome MCP. OpenClaw dapat melihat Chrome lokal, tetapi tidak ada tab terbuka yang tersedia untuk dihubungkan. Opsi perbaikan:
  1. Gunakan browser terkelola: openclaw browser start --browser-profile openclaw (atau setel browser.defaultProfile: "openclaw").
  2. Gunakan Chrome MCP: pastikan Chrome lokal berjalan dengan setidaknya satu tab terbuka, lalu coba lagi dengan --browser-profile user.
Catatan:
  • user hanya untuk host. Untuk server Linux, container, atau host jarak jauh, utamakan profil CDP.
  • user / profil existing-session lainnya mempertahankan batasan Chrome MCP saat ini: aksi berbasis ref, hook upload satu file, tidak ada override timeout dialog, tidak ada wait --load networkidle, serta tidak ada responsebody, ekspor PDF, intersepsi unduhan, atau aksi batch.
  • Profil openclaw lokal secara otomatis menetapkan cdpPort/cdpUrl; setel itu hanya untuk CDP jarak jauh.
  • Profil CDP jarak jauh menerima http://, https://, ws://, dan wss://. Gunakan HTTP(S) untuk discovery /json/version, atau WS(S) saat layanan browser Anda memberi URL socket DevTools langsung.