Describe the Bugfor some time, the instance stopped creating screenshots and archives of links saved. Steps to Reproduce`services: chrome: ########################## `KARAKEEP_VERSION=release NEXTAUTH_URL=https://example.com OPENAI_API_KEY=.................................... INFERENCE_ENABLE_AUTO_TAGGING=true DISABLE_SIGNUPS=true CRAWLER_FULL_PAGE_SCREENSHOT=true EMAIL_VERIFICATION_REQUIRED=true SMTP_HOST=host.com Expected Behaviourit worked perfectly and unfortunately, I have not noticed when it stopped Screenshots or Additional Context`2026-03-02T19:56:25.813Z error: [Crawler] Failed to connect to the browser instance, will retry in 5 secs: browserType.connectOverCDP: Unexpected status 500 when connecting to http://chrome:9222/json/version/.
`DevTools listening on ws://0.0.0.0:9222/devtools/browser/d0da1cf4-4ffb-44d1-a388-8d00189ecabd DevTools listening on ws://0.0.0.0:9222/devtools/browser/06d3d29d-e317-49c8-95ff-dee7a44b6b2e Device DetailsDebian GNU/Linux 12 (bookworm) Exact Karakeep Version0.31.0 Environment Details28.3.1, build 38b7060 Debug LogsNo response Have you checked the troubleshooting guide?
|
Replies: 2 comments
|
Same problem. Seemed that Crawler canot resolve IP addr 2026-03-14T19:14:04.161Z info: [Crawler] Connecting to existing browser instance: http://chrome:9222/
2026-03-14T19:14:04.162Z info: [Crawler] Successfully resolved IP address, new address: http://chrome:9222/
2026-03-14T19:14:04.466Z error: [Crawler] Failed to connect to the browser instance, will retry in 5 secs: browserType.connectOverCDP: Unexpected status 500 when connecting to http://chrome:9222/json/version/.
This does not look like a DevTools server, try connecting via ws://.
Call log:
- <ws preparing> retrieving websocket url from http://chrome:9222/
at Proxy.connectOverCDP (/app/apps/workers/node_modules/.pnpm/playwright-extra@4.3.6_patch_hash=7nc6rwxl5vjub4hxnqupqavqpi_playwright-core@1.58.2_playwright@1.58.2/node_modules/playwright-extra/dist/index.cjs.js:772:63)
at async startBrowserInstance (/app/apps/workers/dist/index.js:63664:10)
at async tryCatch (/app/apps/workers/dist/tryCatch-2ZMSfte2.js:4:16)
at async file:///app/apps/workers/dist/index.js:63673:31On wokring instance, it looks like: 2026-03-14T19:00:53.154Z info: [Crawler] Connecting to existing browser instance: http://chrome:9222
2026-03-14T19:00:57.006Z info: [Crawler] Successfully resolved IP address, new address: http://172.18.0.4:9222/Also i dont unrestand how it happens. Both instances use same docker images CONTAINER REPOSITORY TAG PLATFORM IMAGE ID SIZE CREATED
karakeep-chrome-1 gcr.io/zenika-hub/alpine-chrome 124 linux/amd64 4d356fd088b4 674MB 16 months ago
karakeep-meilisearch-1 getmeili/meilisearch v1.13.3 linux/amd64 35435ac70782 143MB 12 months ago
karakeep-web-1 ghcr.io/karakeep-app/karakeep 0.31.0 linux/amd64 e0bb62aa5300 1.23GB 2 weeks agoSame docker compose, but NON working instance has traefik as reverse proxy. So it looks like this: x-baseconfig: &baseconfig
logging:
driver: json-file
options:
max-size: "10m"
max-file: 3
restart: unless-stopped
networks:
traefik:
external: true
int:
services:
web:
<<: *baseconfig
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION}
volumes:
- ./krp:/data
env_file:
- .env
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
# OPENAI_API_KEY: ...
# You almost never want to change the value of the DATA_DIR variable.
# If you want to mount a custom directory, change the volume mapping above instead.
DATA_DIR: /data # DON'T CHANGE THIS
networks:
- int
- traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.krp.rule=Host(`krp.home`)"
- "traefik.http.routers.krp.entrypoints=websecure"
- traefik.http.services.krp.loadbalancer.server.port=3000
- traefik.http.routers.krp.tls=true
- traefik.http.routers.krp.tls.certresolver=home
- traefik.docker.network=traefik
chrome:
<<: *baseconfig
image: gcr.io/zenika-hub/alpine-chrome:124
command:
- --no-sandbox
- --disable-gpu
- --disable-dev-shm-usage
- --remote-debugging-address=0.0.0.0
- --remote-debugging-port=9222
- --hide-scrollbars
networks:
- int
meilisearch:
<<: *baseconfig
image: getmeili/meilisearch:v1.13.3
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- ./meilisearch:/meili_data
networks:
- int
Note that remove |
|
I found what cause problem. Crawler fails to connect to Chrome on Docker hosts with IPv6 enabled Root CauseSeems that karakeep resolver only handles IPv4 addresses. WorkaroundExplicitly disable IPv6 on the internal Docker network in docker-compose.yml: networks:
int:
enable_ipv6: falseThen recreate network and full stack: docker compose down && docker compose up -d |
I found what cause problem.
Crawler fails to connect to Chrome on Docker hosts with IPv6 enabled
Root Cause
Seems that karakeep resolver only handles IPv4 addresses.
Workaround
Explicitly disable IPv6 on the internal Docker network in docker-compose.yml:
Then recreate network and full stack:
docker compose down && docker compose up -d