Skip to content
 
 

Prowlarr

Installation

This fork is designed to be a drop-in replacement for existing Prowlarr docker installations. Simply replace your Prowlarr docker image with ghcr.io/actuallyevan/prowlarr:latest

Sample docker compose:

prowlarr:
    image: ghcr.io/actuallyevan/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      # Configure caching behavior
      - CACHE_TTL_MINS=10
      - CACHE_MAX_SIZE_MB=100
      - ENABLE_DOWNLOAD_CACHE=true
      - DOWNLOAD_CACHE_MAX_SIZE_MB=1000
    volumes:
      - /path/to/prowlarr/data:/config
      # Additional volume mounts as needed
    ports:
      - 9696:9696
    restart: unless-stopped

Why this fork?

This fork aims to improve certain aspects of Prowlarr to make it work better with remote "infinite" library setups (Debrid/Usenet streaming, etc). This fork will be kept up-to-date with Prowlarr stable releases and you should be able to swap back and forth between them if needed.

Cache indexer query responses

Env Var Default Description
CACHE_TTL_MINS 10 How long a particular query response should be cached for. RSS queries are not cached.
CACHE_MAX_SIZE_MB 100 Maximum size of cache in memory before old records are cleaned up. Higher values will use more memory.

Debrid/Usenet mounting tools cause a lot of repeated queries to the indexer that waste time and API queries. In particular, the workflow for most Usenet streaming setups is:

  • Arrs search for an item
  • Arr grabs the item
  • Tools check whether the nzb is streamable
  • If not streamable, mark the download as failed which triggers another search
  • Repeat

An analysis of Prowlarr query history showed that nearly 30% of requests were duplicated within 10 minutes. Caching these responses saves thousands of indexer calls and drastically speeds up search and import times.

Generally, if you're using any of the streaming clients, this fork will give you much better search performance. Run this SQL query against your Prowlarr database if you want to check how beneficial caching would be for your setup:

WITH enriched AS (
    SELECT
        IndexerId,
        json_extract(Data, '$.season') AS season,
        json_extract(Data, '$.query') AS query,
        json_extract(Data, '$.categories') AS categories,
        json_extract(Data, '$.queryType') AS queryType,
        json_extract(Data, '$.tvdbId') AS tvdbId,
        json_extract(Data, '$.tmdbId') AS tmdbId,
        json_extract(Data, '$.imdbId') AS imdbId,
        CAST(strftime('%s', date) / 600 AS INTEGER) AS window_id
    FROM History
    WHERE date >= datetime('now', '-90 days') AND (EventType = 2 OR EventType = 3)
    ),
    grouped AS (
SELECT
    COUNT(*) AS total_calls,
    COUNT(*) - 1 AS duplicate_calls
FROM enriched
GROUP BY
    IndexerId, season, query, categories, queryType, tvdbId, tmdbId, imdbId, window_id
    )
SELECT
    SUM(total_calls) AS total_requests,
    SUM(duplicate_calls) AS total_duplicate_calls,
    100.0 * SUM(duplicate_calls) / SUM(total_calls) AS duplicate_percent
FROM grouped;

Cache nzb/torrent files

Env Var Default Description
ENABLE_DOWNLOAD_CACHE false Whether Prowlarr should download and cache nzb/torrent files
DOWNLOAD_CACHE_MAX_SIZE_MB 1000 Maximum size of download cache on disk. The cleanup job runs with the housekeeping tasks every 24 hours so this is not a strict limit. In testing, 1GB of disk cache stored ~6k nzbs.

There is potential for download loops in arrs where the same release is re-downloaded repeatedly due to mismatches in the parsed release custom format score and custom format score after import. This problem gets exacerbated when you use tools like Newtarr/Houndarr/Huntarr/etc to automate searching.

Typically, Usenet indexers frown upon repeatedly downloading the same nzb, which can result in bans. This feature caches all nzbs and torrents locally so future grabs don't hit indexers. This also helps when rebuilding libraries/searching after a change in custom formats and/or quality profiles.

Note

When this feature is enabled, nzb/torrent downloads will happen through Prowlarr instead of Sonarr/Radarr. The user-agent is set to Sonarr when this feature is turned on to prevent restrictions or other issues with Usenet indexers.

Contributing

Feel free to open issues or pull requests for any changes you'd like to see.

About

Prowlarr fork optimized for "infinite" setups

Resources

Code of conduct

Contributing

Security policy

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages