Langsung ke konten
Panduan

Failed to start Chrome CDP on port 18800

Mengapa Chromium snap merusak kontrol browser OpenClaw di Linux

7 menit baca

Anda meminta agen membuka sebuah halaman, dan panggilan alat kembali dengan satu baris JSON: Failed to start Chrome CDP on port 18800 for profile openclaw. Tidak ada bagian dari pesan itu yang menyebutkan bagian mana yang gagal, dan di mesin Linux headless browsernya sama sekali tidak pernah muncul. Penyebab umumnya bukan OpenClaw, melainkan browser yang dipasang apt untuk Anda.

Empat pesan error, empat penyebab berbeda

  • Failed to start Chrome CDP on port 18800 for profile openclaw berarti profil terkelola gagal aktif di port debugging-nya. Di Ubuntu, alasan umumnya adalah Chromium di mesin tersebut berupa wrapper snap, bukan binary browser yang sebenarnya.
  • The profile appears to be in use by another Chromium process menunjuk ke file lock Singleton yang tertinggal di direktori profil terkelola. OpenClaw menghapus lock tersebut dan mencoba lagi satu kali jika lock itu menyebut proses yang sudah mati di host saat ini, tetapi lock yang menyebut hostname lain dipertahankan sampai Anda memastikan profil itu tidak lagi digunakan, termasuk setelah mesin diganti namanya.
  • Missing X server or $DISPLAY berarti browser yang terlihat diminta secara eksplisit di host tanpa sesi desktop. Profil terkelola lokal sudah beralih ke mode headless di Linux saat DISPLAY dan WAYLAND_DISPLAY sama-sama tidak disetel, jadi munculnya error ini berarti ada sesuatu yang memaksa browser dengan tampilan: OPENCLAW_BROWSER_HEADLESS=0, browser.headless disetel ke false, atau kunci yang sama pada satu profil.
  • Error Port N is in use for profile NAME but not by openclaw muncul saat layanan CDP eksternal di loopback sudah dikonfigurasi dan attachOnly masih false. Perbaikannya adalah berhenti meminta OpenClaw meluncurkan browsernya sendiri, yaitu jalur attach-only yang dijelaskan di bawah.
Confinement AppArmor milik snap mengganggu cara OpenClaw memunculkan dan memantau proses browser.

Mengapa apt install chromium adalah akar masalahnya

Di Ubuntu dan sebagian besar distribusi Linux, apt install chromium tidak memberi Anda browser. Paket itu di-resolve menjadi chromium-browser, apt mencetak catatan bahwa ia memilih chromium-browser alih-alih chromium, dan yang mendarat di disk adalah wrapper snap. Ini penting, karena saat OpenClaw meluncurkan browser secara lokal, ia mengambil yang pertama ditemukan dengan urutan Chrome, Brave, Edge, Chromium, Chrome Canary, dan jalur pencarian Linux-nya mencakup /usr/bin, /snap/bin, /opt/google, /opt/brave.com, /usr/lib/chromium dan /usr/lib/chromium-browser, ditambah Chromium yang dikelola Playwright di bawah PLAYWRIGHT_BROWSERS_PATH atau ~/.cache/ms-playwright. Di server baru yang satu-satunya binary kelas Chromium-nya adalah snap tersebut, deteksi menemukannya dan setiap peluncuran terkelola gagal karenanya. Tidak ada kombinasi flag yang bisa memperbaikinya, itulah sebabnya jawaban yang terdokumentasi adalah binary yang berbeda, bukan pengaturan yang berbeda.

Tiga langkah untuk memperbaikinya

  • Instal Google Chrome yang asli, yaitu perbaikan yang direkomendasikan. Unduh google-chrome-stable_current_amd64.deb dari dl.google.com, instal dengan dpkg -i, dan jalankan sudo apt --fix-broken install -y jika ada keluhan soal dependensi. Lalu setel browser.executablePath ke /usr/bin/google-chrome-stable di ~/.openclaw/openclaw.json, dengan enabled, headless, dan noSandbox semuanya true.
  • Jika Chromium snap harus tetap dipakai, gunakan mode attach-only. Setel browser.attachOnly ke true agar OpenClaw tidak pernah meluncurkan apa pun, dan jalankan browser sendiri dengan chromium-browser --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data about:blank.
  • Buat browser manual itu tetap hidup setelah shell Anda ditutup dengan layanan systemd tingkat pengguna. Sebuah unit di ~/.config/systemd/user/openclaw-browser.service yang menjalankan /snap/bin/chromium dengan flag yang sama, ditambah Restart=on-failure dan RestartSec=5, yang diaktifkan melalui systemctl --user enable --now openclaw-browser.service, membuat port CDP sudah mendengarkan sebelum OpenClaw memintanya.

Permukaan konfigurasinya terdiri dari enam pengaturan, dan nilai default-nya cocok untuk laptop, bukan server. browser.enabled menyalakan kontrol browser dan sudah bernilai true. browser.executablePath adalah jalur ke binary berbasis Chromium, yaitu Chrome, Brave, Edge, atau Chromium, yang dideteksi otomatis jika Anda tidak mengisinya, dengan mengutamakan browser default OS jika browser itu berbasis Chromium. browser.headless menjalankan browser tanpa GUI dan default-nya false, jadi server harus menyetelnya secara eksplisit, dengan OPENCLAW_BROWSER_HEADLESS tersedia sebagai override per proses yang default-nya tidak disetel. browser.noSandbox menambahkan flag --no-sandbox yang dibutuhkan sebagian penyiapan Linux, default false, dan browser.attachOnly membuat OpenClaw sama sekali tidak meluncurkan browser, default false. Attach-only juga merupakan jawaban yang terdokumentasi untuk Raspberry Pi, host VPS lama, atau penyimpanan yang lambat, ketika Chrome butuh waktu lebih lama untuk mengekspos endpoint HTTP CDP-nya daripada tenggat yang diberikan untuk browser terkelola. OpenClaw di Linux membahas instalasi Linux secara umum, dan OpenClaw di VPS adalah daftar periksa untuk server yang tidak ditunggui siapa pun.

Kegagalan startup CDP atau pemblokiran navigasi

Setelah browser dikonfigurasi, verifikasi dulu sebelum mencari di tempat lain. Pemeriksaan ini ditujukan ke layanan kontrol browser OpenClaw, bukan ke port CDP Chrome yang digunakan saat peluncuran, dan port-nya diturunkan dari gateway.port: 18791 secara default, yaitu port gateway ditambah dua, jadi sesuaikan jika Anda memindahkan Gateway. Minta jalur root dengan curl dan Anda mendapatkan running, pid, dan chosenBrowser; kirim POST ke /start; lalu GET /tabs. Sekarang jalankan urutan pemeriksaan yang memisahkan dua kelas kegagalan: openclaw browser --browser-profile openclaw start, lalu tabs, lalu open https://example.com. Jika start gagal dengan not reachable after start, control plane tidak sehat dan kesiapan CDP-lah yang perlu dikejar. Jika start berhasil dan tabs gagal, itu tetap masalah keterjangkauan, bukan masalah halaman. Jika start dan tabs sama-sama lolos dan hanya open atau navigate yang gagal, browsernya sehat dan yang Anda hadapi adalah kebijakan navigasi atau halaman itu sendiri, yang merupakan jalur kode terpisah: konfigurasi browser secara default memakai objek kebijakan SSRF yang fail-closed bahkan jika Anda tidak pernah menulis browser.ssrfPolicy, dan start atau tabs yang berhasil tidak memberikan izin apa pun untuk alamat berikutnya. Jika pengecualian memang diperlukan, entri hostname persis yang sempit di allowedHostnames lebih baik daripada membuka jaringan privat, dan dangerouslyAllowPrivateNetwork hanya pantas dipakai di lingkungan yang sudah Anda tinjau dengan sengaja. Alat browser OpenClaw adalah alat yang benar-benar dipanggil agen, dan API kontrol browser adalah referensi lengkap untuk API kontrol dan baris perintahnya.

Di Diali

Diali meng-hosting OpenClaw, jadi malam seperti ini tidak akan Anda alami. Setiap pelanggan menjalankan asistennya sendiri, bukan bagian dari asisten bersama, dan konfigurasi runtime dibuat dari apa yang Anda setel di dasbor, lalu ditulis ulang di setiap rilis, jadi tidak ada openclaw.json di server yang perlu diperbaiki setelah pembaruan dan tidak ada keputusan snap versus deb yang harus dibuat. Semua yang disimpan asisten berada di volume persisten, dengan snapshot harian dan pemulihan sekali klik yang tersedia melalui add-on Cadangan (termasuk di Max). OpenClaw yang di-hosting di Diali menjelaskan penyiapan yang di-hosting dan harga Diali mencantumkan biayanya.

  • apt install chromium memberi Anda wrapper snap, bukan browser.
  • Chrome asli dulu, attach-only ditambah unit systemd sebagai pilihan kedua.
  • start dan tabs lolos tetapi open gagal: itu masalah kebijakan, bukan CDP.
Mulai sekarang

Berhenti membaca, buat agen Anda sendiri

Siapkan agen, pilih saluran, dan biarkan ia bekerja di dalam aplikasi yang sudah selalu Anda buka.