Skip to content

Backend image ships Playwright without its browser: LiveUAMap scraper fails with "Executable does not exist" (chromium_headless_shell-1217) #516

Description

@RetroHazard

Environment: ghcr.io/bigbodycobain/shadowbroker-backend@sha256:9502224ed69ca660d68d15b49913e9d62f1eb3d3fb253c7dddb64da73349aaa9 (:latest as of 2026-08-18), running under docker compose on linux/arm64.

What happens: every scheduled LiveUAMap scrape fails at browser launch:

INFO:services.fetchers.geo:Running scheduled Liveuamap scraper...
INFO:services.liveuamap_scraper:Starting Liveuamap scraper with Playwright Stealth...
ERROR:services.data_fetcher:task failed: update_liveuamap
playwright._impl._errors.Error: BrowserType.launch: Executable doesn't exist at
  /app/.cache/ms-playwright/chromium_headless_shell-1217/chrome-linux/headless_shell

Cause: the image contains the Playwright library at browser-bundle version 1217, but the matching Chromium headless-shell was never baked in — it looks like the Playwright dependency was bumped without re-running playwright install in the backend Dockerfile, so every fresh container fails until the operator installs the browser by hand.

Workaround: docker exec <backend> playwright install chromium-headless-shell (~108 MB; the arm64 build downloads and launches fine). Lost on every container recreation, since it lands in /app/.cache, which isn't on a volume.

Suggested fix: run playwright install chromium-headless-shell (or --with-deps) in the backend image build, pinned to the shipped Playwright version, so the scraper introduced behind the #348 opt-in actually runs from the published image.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions