1
0
Fork 0
mirror of https://github.com/realzombee/Prowlarr.git synced 2026-06-02 07:33:18 -07:00
Prowlarr fork optimized for "infinite" setups https://prowlarr.com
  • C# 76.7%
  • JavaScript 16.1%
  • TypeScript 5.2%
  • CSS 1.5%
  • Shell 0.2%
  • Other 0.2%
Find a file
2026-04-22 21:07:34 +01:00
.devcontainer New: Bump to .NET 8 2025-06-07 19:23:03 +03:00
.github fix: docker image labeling 2026-04-22 20:41:25 +01:00
.vscode New: Bump to .NET 8 2025-06-07 19:23:03 +03:00
distribution Fixed: No longer require first run as admin on windows (#885) 2022-03-23 20:58:42 -05:00
frontend New: Use instance name in PWA manifest 2026-03-30 14:01:13 +01:00
Logo Update JetBrains logos 2024-10-29 10:06:00 +02:00
schemas add downloadvolumefactor and uploadvolumefactor torznab attributes (#1464) 2016-09-23 21:08:50 +02:00
src feat: Add output caching for indexer query endpoints 2026-04-22 21:07:34 +01:00
.editorconfig Standardize variable declaration 2023-05-28 18:40:17 +03:00
.gitattributes Cleanup unused frontend components 2021-04-25 23:05:05 -04:00
.gitignore Add DevContainer, VSCode config and extensions.json 2024-04-10 23:51:13 +03:00
.yarnrc New: Tooling changes for UI 2019-06-11 22:06:43 -04:00
azure-pipelines.yml Version bump to 2.3.7 2026-04-12 18:40:12 +02:00
build.sh Setup GH build action (#2) 2026-04-22 20:15:12 +01:00
CLA.md Initial Push 2020-10-18 04:18:35 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2022-11-03 15:58:57 -05:00
CONTRIBUTING.md Update contributing [skip ci] (#528) 2021-10-06 19:08:14 -05:00
Dockerfile Setup GH build action (#2) 2026-04-22 20:15:12 +01:00
docs.sh Bump Swashbuckle to 8.1.4 2025-06-07 19:23:03 +03:00
global.json New: Bump to .NET 8 2025-06-07 19:23:03 +03:00
LICENSE Create LICENSE 2017-09-10 16:10:48 +02:00
package.json New: Bump to .NET 8 2025-06-07 19:23:03 +03:00
README.md feat: Add output caching for indexer query endpoints 2026-04-22 21:07:34 +01:00
SECURITY.md Updated Security Policy to match Radarr 2026-03-05 08:57:45 +00:00
test.sh New: Bump to .NET 8 2025-06-07 19:23:03 +03:00
tsconfig.json Add typescript 2023-02-25 22:17:31 -06:00
yarn.lock Update browserlist db 2026-03-30 14:01:13 +01:00

Caching 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/realzombee/prowlarr:develop

Sample docker compose:

prowlarr:
    image: ghcr.io/realzombee/prowlarr:develop
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - CACHE_TTL_MINS=10
      - CACHE_MAX_SIZE_MB=100
    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 the Prowlarr develop branch and the changes in this fork are fully compatible with the original Prowlarr configs so you can freely swap back and forth between them.

Features

Cache indexer query responses

Env Var Default Description
CACHE_TTL_MINS 10 How long a particular query response should be cached for. Should be <15 mins to ensure RSS queries get fresh data but you can go higher if needed.
CACHE_MAX_SIZE_MB 100 Maximum size of cache in memory before old records are cleaned up. Higher values will use more memory.

Clients like decypharr/nzbdav/altmount 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
  • decypharr/nzbdav/altmount check whether the nzb is streamable
  • If not streamable, mark the download as failed which triggers another search
  • Repeat

On analyzing my prowlarr db for duplicate queries, I found that nearly 30% of queries were duplicated within 10 mins and having a cache would have saved thousands of queries to my indexers and also drastically speed up the search/import process.

Generally, if you're using any of the usenet streaming clients, this fork will give you much better search performance. Run this SQL query against your prowlarr db 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;

Contributing

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