#docker browser error
24 messages ยท Page 1 of 1 (latest)
Bisa, tapi saya perlu detail dulu biar nggak nebak-nebak.
Tolong kirim:
- output
openclaw --version - error lengkapnya (copy-paste atau screenshot)
- apa yang kamu jalankan / klik
- 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.
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
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:
- 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:
- https://docs.openclaw.ai/install/docker
- https://docs.openclaw.ai/tools/browser-linux-troubleshooting
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.
hmm tetap sama sih
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.
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
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:
- compose masih pakai image lama / remote image
- 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.
aku tidak mau menggunakan image local, aku ingin dari image yang rilis saja
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.1kecuali 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:
- Chrome/Chromium di host sendiri
- Browserless / browser remote
Saya rekomendasikan host Chrome/Chromium via CDP kalau kamu mau tetap simpel dan tetap pakai image rilis.
apakah bisa kalau misal di pakai chrome di host?
Bisa, dan untuk image rilis itu justru opsi yang paling masuk akal ๐
Yang dipakai adalah remote CDP, bukan profile user / managed openclaw.
Alurnya
- Jalankan Chrome di host dengan remote debugging
- Pastikan container bisa reach host:9222
- Set
browser.profiles.<name>.cdpUrlke 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
useruntuk kasus ini, karena itu host-local Chrome MCP - Untuk Docker, pakai remote CDP
host.docker.internalbiasanya enak di Docker Desktop- Kalau di Linux biasa dan
host.docker.internaltidak resolve, pakai IP host yang bisa diakses container
Cek cepat
Dari container, endpoint ini harus kebuka: