Quasarr connects JDownloader with Radarr, Sonarr, Lidarr and Magazarr. It also decrypts links protected by CAPTCHAs.
Python
156
496 commits
updated Sep 26, 2026
Quasarr connects JDownloader with Radarr, Sonarr, Lidarr and Magazarr. It also handles links protected by CAPTCHAs.
Quasarr pretends to be both Newznab Indexer and SABnzbd client. Therefore, do not try to use it with real usenet
indexers. It simply does not know what NZB files are.
Quasarr includes a solution to quickly and easily decrypt protected links. Active monthly Sponsors get access to SponsorsHelper to do so automatically. Alternatively, follow the link from the console output (or notification) to solve CAPTCHAs in your browser. This requires Tampermonkey and the matching Quasarr userscript. The CAPTCHA page guides you through installing both once. Solve the CAPTCHA on the crypter's own page and the userscript sends the links back, so Quasarr can confidently handle the rest.
If a link crypter's CAPTCHAs become temporarily unsolvable, you can disable it under Web UI → Link Protection. Affected releases then fail so your *arr app grabs an alternative instead of stalling.
Finding your Quasarr URL and API Key
Both values are shown in the console output under API Information, or in the Quasarr web UI.
⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
🔗 https://quasarr-hostnames.pages.dev: community guide for finding hostnames
📋 Alternatively, browse community suggestions via pastebin search ( login required).
Authentication is optional but strongly recommended.
- 🔐 Set
USERandPASSto enable form-based login (30-day session)- 🔑 Set
AUTH=basicto use HTTP Basic Authentication instead
⚠️ If using Docker: JDownloader's download path must be available to Radarr/Sonarr/Lidarr/Magazarr with identical internal and external path mappings! Matching only the external path is not sufficient.
Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/Lidarr/Magazarr integration.
You can manage categories in the Quasarr Web UI.
Add Quasarr as both a Newznab Indexer and SABnzbd Download Client using your Quasarr URL and API Key.
Be sure to set a category in the SABnzbd Download client (default: movies for Radarr, tv for Sonarr and music
for Lidarr).
Activity → Queue → Options → Enable Release Title
Add Quasarr as a Generic Newznab Indexer.
{ImdbId:tt0133093} and pick category 2000 (Movies) or 5000 (TV)3000 (Music) or 7000 (Books/Magazines).Magazarr is the magazine companion for Quasarr. It keeps your magazine list, searches Quasarr, sends selected releases to Quasarr for download, imports completed PDFs from JDownloader folders, and serves your library through OPDS.
Run Magazarr and open http://127.0.0.1:8090:
docker run -d \
--name="Magazarr" \
-p 8090:8090 \
-v /path/to/magazarr-config:/config:rw \
-v /path/to/magazine-library:/library:rw \
-v /path/to/jdownloader-output:/output:rw \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/magazarr:latest
Set these values in Magazarr:
| Setting | Value |
|---|---|
| Quasarr URL | Your Quasarr URL |
| Quasarr API Key | Your Quasarr API Key |
| Search category | 7000 |
| Download category | docs |
| JDownloader import root | /output, or the same internal path where completed JDownloader packages are visible |
| Library directory | /library, or wherever Magazarr should store imported PDFs |
Magazarr will import the PDF and clean up the completed package folder.
It is highly recommended to run the latest docker image with all optional variables set.
docker run -d \
--name="Quasarr" \
-p port:8080 \
-v /path/to/config/:/config:rw \
-e 'INTERNAL_ADDRESS'='http://192.168.0.1:8080' \
-e 'EXTERNAL_ADDRESS'='https://foo.bar/' \
-e 'USER'='admin' \
-e 'PASS'='change-me' \
-e 'AUTH'='form' \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/quasarr:latest
🪟 Windows users: the single quotes above are for Linux/macOS shells. In Windows
cmdand PowerShell the quotes are not stripped, so they end up as part of the variable name ('INTERNAL_ADDRESS'instead ofINTERNAL_ADDRESS) and Quasarr stops withYou must set the INTERNAL_ADDRESS variable.... Drop the single quotes and put everything on one line, e.g.-e INTERNAL_ADDRESS=http://192.168.0.1:8080.
| Parameter | Description |
|---|---|
INTERNAL_ADDRESS | Required. Internal URL so Radarr/Sonarr/Lidarr/Magazarr can reach Quasarr. Must include port. |
EXTERNAL_ADDRESS | Optional. External URL (e.g. reverse proxy). Always protect external access with authentication. |
USER / PASS | Optional, but recommended! Username / Password to protect the web UI. |
AUTH | Authentication mode. Supported values: form or basic. |
TZ | Optional. Timezone. Incorrect values may cause HTTPS/SSL issues. |
Use this only in case you can't run the docker image.
⚠️ Requires Python 3.12 (or later) and uv!
uv tool install quasarr
export INTERNAL_ADDRESS=http://192.168.0.1:8080
export EXTERNAL_ADDRESS=https://foo.bar/
quasarr
EXTERNAL_ADDRESS see EXTERNAL_ADDRESS docker variableConfigure notifications in Web UI → Notifications Configuration:
/newbot and follow the prompts to choose a name and username for your bot.123456789:ABCdefGHI...). This is your TELEGRAM_BOT_TOKEN./start). This is required so the bot can send messages back to you.<TOKEN> with your bot token):
https://api.telegram.org/bot<TOKEN>/getUpdates
Look for "chat":{"id": in the JSON response. That number is your TELEGRAM_CHAT_ID.
Tip: For a group chat, add the bot to the group first, send a message in the group, then call
getUpdates.
Complexity is the killer of small projects like this one. It must be fought at all cost!
We will not waste precious time on features that will slow future development cycles down. Most feature requests can be satisfied by:
SponsorsHelper is a Docker image that solves CAPTCHAs and decrypts links for Quasarr.
The image is public, but requires a valid active monthly GitHub sponsor check at runtime.
QUASARR_API_KEY environment variableNote: The API key is required for SponsorsHelper to communicate securely with Quasarr. Without it, all requests will be rejected with a 401/403 error.
⚠️ Mount
/configto persistent storage. Otherwise the auth token is lost on container recreation/update.
/config/github_oauth_token.json.docker run -d \
--name='SponsorsHelper' \
-v '/path/to/sponsorshelper-config:/config' \
-e 'QUASARR_URL'='http://192.168.0.1:8080' \
-e 'QUASARR_API_KEY'='your_quasarr_api_key_here' \
-e 'FLARESOLVERR_URL'='http://192.168.0.1:8191/v1' \
-e 'APIKEY_2CAPTCHA'='your_2captcha_api_key_here' \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/sponsors-helper:latest
| Parameter | Description |
|---|---|
QUASARR_URL | Local URL of Quasarr (e.g., http://192.168.0.1:8080) |
QUASARR_API_KEY | Your Quasarr API key (found in Quasarr web UI under "API Settings") |
FLARESOLVERR_URL | Local URL of flaresolverr-next |
APIKEY_2CAPTCHA | 2Captcha account API key |
TZ | Optional. Timezone for SponsorsHelper (e.g., Europe/Berlin) |
Python
100.0%
Quasarr connects JDownloader with Radarr, Sonarr, Lidarr and Magazarr. It also decrypts links protected by CAPTCHAs.
Python
156
496 commits
updated Sep 26, 2026
Quasarr connects JDownloader with Radarr, Sonarr, Lidarr and Magazarr. It also handles links protected by CAPTCHAs.
Quasarr pretends to be both Newznab Indexer and SABnzbd client. Therefore, do not try to use it with real usenet
indexers. It simply does not know what NZB files are.
Quasarr includes a solution to quickly and easily decrypt protected links. Active monthly Sponsors get access to SponsorsHelper to do so automatically. Alternatively, follow the link from the console output (or notification) to solve CAPTCHAs in your browser. This requires Tampermonkey and the matching Quasarr userscript. The CAPTCHA page guides you through installing both once. Solve the CAPTCHA on the crypter's own page and the userscript sends the links back, so Quasarr can confidently handle the rest.
If a link crypter's CAPTCHAs become temporarily unsolvable, you can disable it under Web UI → Link Protection. Affected releases then fail so your *arr app grabs an alternative instead of stalling.
Finding your Quasarr URL and API Key
Both values are shown in the console output under API Information, or in the Quasarr web UI.
⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
🔗 https://quasarr-hostnames.pages.dev: community guide for finding hostnames
📋 Alternatively, browse community suggestions via pastebin search ( login required).
Authentication is optional but strongly recommended.
- 🔐 Set
USERandPASSto enable form-based login (30-day session)- 🔑 Set
AUTH=basicto use HTTP Basic Authentication instead
⚠️ If using Docker: JDownloader's download path must be available to Radarr/Sonarr/Lidarr/Magazarr with identical internal and external path mappings! Matching only the external path is not sufficient.
Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/Lidarr/Magazarr integration.
You can manage categories in the Quasarr Web UI.
Add Quasarr as both a Newznab Indexer and SABnzbd Download Client using your Quasarr URL and API Key.
Be sure to set a category in the SABnzbd Download client (default: movies for Radarr, tv for Sonarr and music
for Lidarr).
Activity → Queue → Options → Enable Release Title
Add Quasarr as a Generic Newznab Indexer.
{ImdbId:tt0133093} and pick category 2000 (Movies) or 5000 (TV)3000 (Music) or 7000 (Books/Magazines).Magazarr is the magazine companion for Quasarr. It keeps your magazine list, searches Quasarr, sends selected releases to Quasarr for download, imports completed PDFs from JDownloader folders, and serves your library through OPDS.
Run Magazarr and open http://127.0.0.1:8090:
docker run -d \
--name="Magazarr" \
-p 8090:8090 \
-v /path/to/magazarr-config:/config:rw \
-v /path/to/magazine-library:/library:rw \
-v /path/to/jdownloader-output:/output:rw \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/magazarr:latest
Set these values in Magazarr:
| Setting | Value |
|---|---|
| Quasarr URL | Your Quasarr URL |
| Quasarr API Key | Your Quasarr API Key |
| Search category | 7000 |
| Download category | docs |
| JDownloader import root | /output, or the same internal path where completed JDownloader packages are visible |
| Library directory | /library, or wherever Magazarr should store imported PDFs |
Magazarr will import the PDF and clean up the completed package folder.
It is highly recommended to run the latest docker image with all optional variables set.
docker run -d \
--name="Quasarr" \
-p port:8080 \
-v /path/to/config/:/config:rw \
-e 'INTERNAL_ADDRESS'='http://192.168.0.1:8080' \
-e 'EXTERNAL_ADDRESS'='https://foo.bar/' \
-e 'USER'='admin' \
-e 'PASS'='change-me' \
-e 'AUTH'='form' \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/quasarr:latest
🪟 Windows users: the single quotes above are for Linux/macOS shells. In Windows
cmdand PowerShell the quotes are not stripped, so they end up as part of the variable name ('INTERNAL_ADDRESS'instead ofINTERNAL_ADDRESS) and Quasarr stops withYou must set the INTERNAL_ADDRESS variable.... Drop the single quotes and put everything on one line, e.g.-e INTERNAL_ADDRESS=http://192.168.0.1:8080.
| Parameter | Description |
|---|---|
INTERNAL_ADDRESS | Required. Internal URL so Radarr/Sonarr/Lidarr/Magazarr can reach Quasarr. Must include port. |
EXTERNAL_ADDRESS | Optional. External URL (e.g. reverse proxy). Always protect external access with authentication. |
USER / PASS | Optional, but recommended! Username / Password to protect the web UI. |
AUTH | Authentication mode. Supported values: form or basic. |
TZ | Optional. Timezone. Incorrect values may cause HTTPS/SSL issues. |
Use this only in case you can't run the docker image.
⚠️ Requires Python 3.12 (or later) and uv!
uv tool install quasarr
export INTERNAL_ADDRESS=http://192.168.0.1:8080
export EXTERNAL_ADDRESS=https://foo.bar/
quasarr
EXTERNAL_ADDRESS see EXTERNAL_ADDRESS docker variableConfigure notifications in Web UI → Notifications Configuration:
/newbot and follow the prompts to choose a name and username for your bot.123456789:ABCdefGHI...). This is your TELEGRAM_BOT_TOKEN./start). This is required so the bot can send messages back to you.<TOKEN> with your bot token):
https://api.telegram.org/bot<TOKEN>/getUpdates
Look for "chat":{"id": in the JSON response. That number is your TELEGRAM_CHAT_ID.
Tip: For a group chat, add the bot to the group first, send a message in the group, then call
getUpdates.
Complexity is the killer of small projects like this one. It must be fought at all cost!
We will not waste precious time on features that will slow future development cycles down. Most feature requests can be satisfied by:
SponsorsHelper is a Docker image that solves CAPTCHAs and decrypts links for Quasarr.
The image is public, but requires a valid active monthly GitHub sponsor check at runtime.
QUASARR_API_KEY environment variableNote: The API key is required for SponsorsHelper to communicate securely with Quasarr. Without it, all requests will be rejected with a 401/403 error.
⚠️ Mount
/configto persistent storage. Otherwise the auth token is lost on container recreation/update.
/config/github_oauth_token.json.docker run -d \
--name='SponsorsHelper' \
-v '/path/to/sponsorshelper-config:/config' \
-e 'QUASARR_URL'='http://192.168.0.1:8080' \
-e 'QUASARR_API_KEY'='your_quasarr_api_key_here' \
-e 'FLARESOLVERR_URL'='http://192.168.0.1:8191/v1' \
-e 'APIKEY_2CAPTCHA'='your_2captcha_api_key_here' \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/sponsors-helper:latest
| Parameter | Description |
|---|---|
QUASARR_URL | Local URL of Quasarr (e.g., http://192.168.0.1:8080) |
QUASARR_API_KEY | Your Quasarr API key (found in Quasarr web UI under "API Settings") |
FLARESOLVERR_URL | Local URL of flaresolverr-next |
APIKEY_2CAPTCHA | 2Captcha account API key |
TZ | Optional. Timezone for SponsorsHelper (e.g., Europe/Berlin) |
Python
100.0%