[Bug]: Hardened docker-compose (read_only) keeps full Chromium from starting: crashpad needs a writable ~/.config
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 70/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- docker, docker-compose
- Ambito
- devops, infrastructure
Direzione di ricerca
Inizia dalla lista environment: di x-base-config in docker-compose.yml, dove l'issue propone XDG_CONFIG_HOME=/tmp/.config. Controlla anche le impostazioni read-only e tmpfs nello stesso file, e conferma che XDG_CACHE_HOME resti non impostato. Il lavoro è completato quando docker compose logs crawl4ai non mostra più la riga "Full Chromium failed" all'avvio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
crawl4ai version
0.9.5 Docker image with PR #2448 backported, run with the hardened docker-compose.yml (same file on v0.9.5 and develop: read_only: true, tmpfs list).
Expected Behavior
With #2448 (merged into develop on 2026-10-26), the hardened compose launches full Chromium, which is the fix for #2382.
Current Behavior
In the hardened container, full Chromium dies at launch:
[BROWSER]. ℹ Full Chromium failed to start (BrowserType.launch: Target page, context or browser has been closed); falling back to chrome-headless-shell, which can behave differently. Run 'crawl4ai-setup' to install full Chromium.
The #2448 fallback then starts chrome-headless-shell, so with the official compose the server keeps running the shell and #2382 stays unfixed in practice.
The warning's advice also misleads here: full Chromium is already in the image (chromium-1248).
Root cause: Chromium's crash handler (crashpad) keeps its database under the XDG config directory ($HOME/.config/google-chrome-for-testing/Crash Reports), even when --user-data-dir points elsewhere, as Playwright's does.
The read-only root filesystem leaves $HOME/.config unwritable.
Run by hand in the container with a user data dir under /tmp, the bundled browser fails the same way:
$ /home/appuser/.cache/ms-playwright/chromium-1248/chrome-linux64/chrome --headless=new --no-sandbox --user-data-dir=/tmp/udd --dump-dom about:blank
chrome_crashpad_handler: --database is required
Trace/breakpoint trap
Is this reproducible?
Yes
Steps to Reproduce
# From a develop checkout (#2448 included); the compose file has a build: section.
docker compose up -d --build
docker compose logs crawl4ai | grep "Full Chromium failed"
The line appears at boot, since the server starts its default browser at startup.
Suggested fix
Give Chromium a writable config directory, for example by adding to the environment: list of x-base-config in docker-compose.yml:
- XDG_CONFIG_HOME=/tmp/.config
With it, full Chromium starts: chromium-1248/chrome-linux64/chrome runs, crashpad uses --database=/tmp/.config/google-chrome-for-testing/Crash Reports, and no fallback line is logged.
XDG_CACHE_HOME must stay unset, as Playwright looks for its browsers under ~/.cache/ms-playwright (see also #2027 for the same read-only constraint).
Alternatives, not tested: an ENV XDG_CONFIG_HOME=/tmp/.config line in the Dockerfile (would also cover docker run --read-only), or a tmpfs entry - /home/appuser/.config:uid=999,gid=999,mode=0700.
OS
Linux (Docker on WSL2)
Python version
3.12 (image)
Browser
Chromium bundled with Playwright 1.64
Browser version
156.0.8078.4
- Lingua principale
- Python
- Stelle
- 86.8k
- Fork
- 9k
- Merge medio
- 2g 3h
- PR unite (30g)
- 26
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di unclecode/crawl4ai
-
[Feature]: Crawl4aiDockerClient has no public option for the API token the 0.9 server requiresAperta⚙ Done ✨ Enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 2 giorni
-
⚙ Done 🐞 Bug 📌 Root caused
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
[Bug]: PDF images saved with save_images_locally=True come back with an empty src in result.mediaForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta🐞 Bug 🩺 Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
🐞 Bug 🩺 Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
unclecode/crawl4ai#2416 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
⚙ Done 🐞 Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
unclecode/crawl4ai#2382 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di unclecode/crawl4ai
Issue simili
-
bug severity:low
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 2 giorni
-
curriculum documentation quality
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
githubnext/gh-aw-workshop#5367 ·
I maintainer di solito rispondono entro 3 giorni
-
OAuth documentation for GET /api/v2/users/me/ appears inconsistent with required global read scopeAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Create Noise Latents ignores randomize_seed and produces the same noise every runForse già presa @griptapeops l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
griptape-ai/griptape-nodes-library-diffusers#127 ·
I maintainer di solito rispondono entro 1 giorno
-
Jenkins capacity report: metrics history is lost when archiving a month failsForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
adoptium/infrastructure#4568 ·
I maintainer di solito rispondono entro 1 giorno