From 38eaa43d04063edd61b48ac719e207752b41de8e Mon Sep 17 00:00:00 2001 From: tim Date: Wed, 22 Jul 2026 07:40:41 -0700 Subject: [PATCH] Add FlareSolverr for Cloudflare challenges on Prowlarr indexers Provides a browser proxy on arr-net so indexers behind Cloudflare JS challenges can work; document limits (not a universal captcha solver). --- .env.example | 4 ++++ README.md | 1 + docker-compose.yml | 18 ++++++++++++++++++ quickstart.md | 8 ++++++++ 4 files changed, 31 insertions(+) diff --git a/.env.example b/.env.example index bbb1885..1e53dd6 100644 --- a/.env.example +++ b/.env.example @@ -65,6 +65,10 @@ OPENHANDS_PORT=3001 # LiteLLM-style id; after first start check http://host:8081/v1/models OPENHANDS_MODEL=openai/local +# FlareSolverr (Cloudflare helper for Prowlarr; internal only) +FLARESOLVERR_LOG_LEVEL=info +FLARESOLVERR_CAPTCHA_SOLVER=none + # Forgejo — self-hosted Git (web + SSH clone) FORGEJO_HTTP_PORT=3002 FORGEJO_SSH_PORT=2222 diff --git a/README.md b/README.md index 4f077f2..5146854 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ for the **Beelink SER5 PRO** (Ryzen 7 7735HS + Radeon 680M). | Jellyfin | http://host:8096 | Media server / playback | | qBittorrent | http://host:8080 | Torrent client (VPN-only) | | Prowlarr | http://host:9696 | Indexer manager | +| FlareSolverr| (internal :8191) | Cloudflare proxy for indexers | | Sonarr | http://host:8989 | TV shows | | Radarr | http://host:7878 | Movies | | Bazarr | http://host:6767 | Subtitles | diff --git a/docker-compose.yml b/docker-compose.yml index 6be6f8e..b64850d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -94,6 +94,24 @@ services: TZ: ${TZ} volumes: - ${CONFIG_DIR}/prowlarr:/config + depends_on: + - flaresolverr + + # Cloudflare / JS challenge proxy for Prowlarr indexers (not a general captcha solver) + # Wire in Prowlarr: Settings → Indexers → FlareSolverr → http://flaresolverr:8191 + flaresolverr: + image: ghcr.io/flaresolverr/flaresolverr:latest + container_name: flaresolverr + restart: unless-stopped + networks: [arr-net] + environment: + LOG_LEVEL: ${FLARESOLVERR_LOG_LEVEL:-info} + LOG_HTML: "false" + CAPTCHA_SOLVER: ${FLARESOLVERR_CAPTCHA_SOLVER:-none} + TZ: ${TZ} + # Optional LAN debug UI/API — leave commented to keep it internal-only + # ports: + # - "8191:8191" # -------------------------------------------------------------------- TV # sonarr: diff --git a/quickstart.md b/quickstart.md index 58d5a89..ec5cc07 100644 --- a/quickstart.md +++ b/quickstart.md @@ -91,6 +91,14 @@ Root folders: `/data/media/tv`, `/data/media/movies`, `/data/media/music` (hardl **Prowlarr** — Add indexers. Apps: Sonarr `http://sonarr:8989`, Radarr `http://radarr:7878`, Lidarr `http://lidarr:8686` + each API key (*Settings → General*). +**FlareSolverr** (Cloudflare / JS challenges for some indexers) — container `flaresolverr` on `arr-net`, no public port by default. +Prowlarr → **Settings → Indexers** (or **Settings → Connect** / FlareSolverr section depending on version) → add FlareSolverr host: + +- Host: `http://flaresolverr:8191` +- Then enable FlareSolverr on indexers that show Cloudflare errors. + +Does **not** solve every captcha (Turnstile/hCaptcha image puzzles, etc.). Prefer indexers without CF; paid APIs (2captcha / CapSolver) are optional external services, not a free self-hosted magic box. + **Bazarr** — Sonarr/Radarr URLs + API keys; paths `/data/media/tv`, `/data/media/movies`. **Jellyfin** — Libraries: Movies `/data/media/movies`, Shows `/data/media/tv`, Music `/data/media/music`.