#docker browser error

24 messages ยท Page 1 of 1 (latest)

burnt shard
#

tolong bantu saya

tranquil valeBOT
tender hazelBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> โœ… Mark Solution

flint stratusBOT
#

Bisa, tapi saya perlu detail dulu biar nggak nebak-nebak.

Tolong kirim:

  1. output openclaw --version
  2. error lengkapnya (copy-paste atau screenshot)
  3. apa yang kamu jalankan / klik
  4. kalau pakai Docker, kirim:
    • docker compose logs --tail=200
    • bagian relevan dari compose.yaml / config browser

Kalau thread ini soal browser di Docker, kemungkinan besar log container + config browser yang paling penting. Paste di sini, nanti saya cek.

burnt shard
#

coba cek

openclaw browser --browser-profile openclaw status
profile: openclaw
enabled: true
running: false
transport: cdp
cdpPort: 18800
cdpUrl: http://127.0.0.1:18800
browser: unknown
detectedBrowser: custom
detectedPath: ~/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome
profileColor: #FF4500

openclaw browser --browser-profile openclaw start
GatewayClientRequestError: Error: Failed to start Chrome CDP on port 18800 for profile "openclaw".
Chrome stderr:
/home/node/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome: error while loading shared libraries: libnspr4.so: cannot open shared object file: No such file or directory
flint stratusBOT
#

Iya, ini keliatan jelas.

Masalahnya bukan di profile browser OpenClaw, tapi di container Linux kamu. Chromium dari Playwright sudah ada, tapi dependency OS-nya belum ada:

libnspr4.so: cannot open shared object file

Jadi openclaw browser start gagal sebelum browser sempat jalan.

Fix yang paling aman, sesuai docs Docker OpenClaw:

  1. rebuild image dengan browser deps ikut di-install
export OPENCLAW_INSTALL_BROWSER=1
export OPENCLAW_HOME_VOLUME="openclaw_home"   # biar cache browser kepersist
./scripts/docker/setup.sh
#

Itu pakai flow yang install Chromium plus deps (install --with-deps chromium) di build image.

Docs:

Kalau kamu pakai compose/custom image sendiri, inti fix-nya tetap sama: image harus punya dependency Linux untuk Chromium, bukan cuma binary Playwright-nya.

Setelah rebuild, cek lagi:

openclaw browser --browser-profile openclaw start
openclaw browser --browser-profile openclaw status

Kalau mau, kirim docker-compose.yml atau Dockerfile kamu, saya bantu tunjuk baris mana yang perlu diubah.

burnt shard
#

hmm tetap sama sih

flint stratusBOT
#

Ah, ketemu kemungkinan kenapanya.

Saya cek repo sekarang, dan scripts/docker/setup.sh tidak meneruskan build arg OPENCLAW_INSTALL_BROWSER ke docker build. Jadi walaupun tadi kamu export var itu, image-nya kemungkinan nggak berubah. Makanya error-nya tetap sama.

Coba build manual sekali dari repo root:

DOCKER_BUILDKIT=1 docker build \
  --build-arg OPENCLAW_INSTALL_BROWSER=1 \
  -t openclaw:local \
  -f Dockerfile .

Lalu recreate container:

#
docker compose up -d --force-recreate openclaw-gateway

Terus cek lagi:

openclaw browser --browser-profile openclaw start

Kalau masih gagal, paste output dari 2 command ini:

openclaw --version
docker compose run --rm openclaw-cli sh -lc 'ldd /home/node/.cache/ms-playwright/chromium-*/chrome-linux64/chrome | grep "not found" || echo ok'
#

Kalau itu benar, ini kelihatannya bug di flow Docker setup saat ini, bukan salah kamu.

burnt shard
#

coba cek

ldd /home/node/.cache/ms-playwright/chromium-*/chrome-linux64/chrome | grep "not found" || echo ok
        libnspr4.so => not found
        libnss3.so => not found
        libnssutil3.so => not found
        libsmime3.so => not found
        libatk-1.0.so.0 => not found
        libatk-bridge-2.0.so.0 => not found
        libdbus-1.so.3 => not found
        libcups.so.2 => not found
        libxkbcommon.so.0 => not found
        libasound.so.2 => not found
        libgbm.so.1 => not found
        libXcomposite.so.1 => not found
        libXdamage.so.1 => not found
        libXfixes.so.3 => not found
        libXrandr.so.2 => not found
        libatspi.so.0 => not found
flint stratusBOT
#

Yup, ini konfirmasi penuh: container yang jalan masih belum punya dependency Chromium/Playwright. Jadi fix tadi belum kepakai di image yang sedang dipakai.

Biasanya ada 2 penyebab:

  1. compose masih pakai image lama / remote image
  2. build arg browser deps belum benar-benar masuk saat build

Coba urutan ini:

grep '^OPENCLAW_IMAGE=' .env || true
docker compose images

Kalau .env menunjuk ke image lain, set ke local image:

#
OPENCLAW_IMAGE=openclaw:local

Lalu rebuild tanpa cache:

DOCKER_BUILDKIT=1 docker build --no-cache \
  --build-arg OPENCLAW_INSTALL_BROWSER=1 \
  -t openclaw:local \
  -f Dockerfile .

Sesudah itu recreate service:

#
docker compose up -d --force-recreate openclaw-gateway

Lalu cek lagi:

docker compose run --rm openclaw-cli sh -lc 'ldd /home/node/.cache/ms-playwright/chromium-*/chrome-linux64/chrome | grep "not found" || echo ok'

Kalau masih muncul not found, paste:

  • output grep '^OPENCLAW_IMAGE=' .env
  • output docker compose images
  • 30-50 baris terakhir dari docker build ... tadi

Kalau OPENCLAW_INSTALL_BROWSER=1 benar-benar kepakai, list not found itu harusnya hilang.

burnt shard
#

aku tidak mau menggunakan image local, aku ingin dari image yang rilis saja

flint stratusBOT
#

Fair. Kalau kamu maunya pakai image rilis saja, jawaban jujurnya:

managed browser openclaw di dalam container itu bukan jalur yang pas untuk image rilis saat ini.
Dari output ldd, image rilis yang kamu pakai memang tidak membawa dependency Chromium/Playwright yang dibutuhkan untuk launch browser lokal di container.

Jadi untuk tetap pakai image rilis, saya sarankan pakai remote CDP browser, bukan managed local browser.

Contoh config:

{
  browser: {
    enabled: true,
    defaultProfile: "remote",
    profiles: {
      remote: {
#
        cdpUrl: "http://<alamat-browser-yang-bisa-diakses-container>:9222",
        attachOnly: true,
        color: "#FF4500"
      }
    }
  }
}

Lalu pakai:

openclaw browser --browser-profile remote status
openclaw browser --browser-profile remote open https://example.com
#

Penting:

  • jangan pakai 127.0.0.1 kecuali browser-nya memang jalan di container yang sama
  • kalau browser jalan di host / mesin lain, pakai alamat yang bisa diakses dari container
  • bisa pakai host Chrome/Chromium, Browserless, atau browser remote lain yang expose CDP

Docs:

Kalau mau, saya bisa bantu 2 jalur ini:

  1. Chrome/Chromium di host sendiri
  2. Browserless / browser remote

Saya rekomendasikan host Chrome/Chromium via CDP kalau kamu mau tetap simpel dan tetap pakai image rilis.

burnt shard
#

apakah bisa kalau misal di pakai chrome di host?

flint stratusBOT
#

Bisa, dan untuk image rilis itu justru opsi yang paling masuk akal ๐Ÿ‘

Yang dipakai adalah remote CDP, bukan profile user / managed openclaw.

Alurnya

  1. Jalankan Chrome di host dengan remote debugging
  2. Pastikan container bisa reach host:9222
  3. Set browser.profiles.<name>.cdpUrl ke alamat host itu

Contoh

Jalankan Chrome di host:

google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/openclaw-chrome
#

Lalu di config OpenClaw:

{
  browser: {
    enabled: true,
    defaultProfile: "hostchrome",
    profiles: {
      hostchrome: {
        cdpUrl: "http://host.docker.internal:9222",
        attachOnly: true,
        color: "#FF4500"
      }
    }
  }
}
#

Lalu tes:

openclaw browser --browser-profile hostchrome status
openclaw browser --browser-profile hostchrome open https://example.com

Penting

  • Jangan pakai profile user untuk kasus ini, karena itu host-local Chrome MCP
  • Untuk Docker, pakai remote CDP
  • host.docker.internal biasanya enak di Docker Desktop
  • Kalau di Linux biasa dan host.docker.internal tidak resolve, pakai IP host yang bisa diakses container

Cek cepat

Dari container, endpoint ini harus kebuka: