{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Decypharr","text":"

Decypharr is an implementation of QbitTorrent with Multiple Debrid service support, written in Go.

"},{"location":"#what-is-decypharr","title":"What is Decypharr?","text":"

TLDR; Decypharr is a self-hosted, open-source download client that integrates with multiple Debrid services. It provides a user-friendly interface for managing files and supports popular media management applications like Sonarr and Radarr.

"},{"location":"#key-features","title":"Key Features","text":""},{"location":"#supported-debrid-providers","title":"Supported Debrid Providers","text":""},{"location":"#getting-started","title":"Getting Started","text":"

Check out our Installation Guide to get started with Decypharr.

"},{"location":"api/","title":"API Documentation","text":"

Decypharr provides a RESTful API for managing torrents, debrid services, and Arr integrations. The API requires authentication and all endpoints are prefixed with /api.

"},{"location":"api/#authentication","title":"Authentication","text":"

The API supports two authentication methods:

"},{"location":"api/#1-session-based-authentication-cookies","title":"1. Session-based Authentication (Cookies)","text":"

Log in through the web interface (/login) to establish an authenticated session. The session cookie (auth-session) will be automatically included in subsequent API requests from the same browser session.

"},{"location":"api/#2-api-token-authentication-bearer-token","title":"2. API Token Authentication (Bearer Token)","text":"

Use API tokens for programmatic access. Include the token in the Authorization header for each request:

"},{"location":"api/#interactive-api-documentation","title":"Interactive API Documentation","text":""},{"location":"api/#api-endpoints-overview","title":"API Endpoints Overview","text":""},{"location":"api/#arrs-management","title":"Arrs Management","text":""},{"location":"api/#content-management","title":"Content Management","text":""},{"location":"api/#repair-operations","title":"Repair Operations","text":""},{"location":"api/#torrent-management","title":"Torrent Management","text":""},{"location":"api/#usage-examples","title":"Usage Examples","text":""},{"location":"api/#adding-content-via-api","title":"Adding Content via API","text":""},{"location":"api/#using-api-token","title":"Using API Token:","text":"
curl -H \"Authorization: Bearer $API_TOKEN\" -X POST http://localhost:8080/api/add \\\n  -F \"arr=sonarr\" \\\n  -F \"debrid=realdebrid\" \\\n  -F \"urls=magnet:?xt=urn:btih:...\" \\\n  -F \"downloadUncached=true\"\n  -F \"file=@/path/to/torrent/file.torrent\"\n  -F \"callbackUrl=http://your.callback.url/endpoint\"\n
"},{"location":"api/#using-session-cookies","title":"Using Session Cookies:","text":"
# Login first (this sets the session cookie)\ncurl -c cookies.txt -X POST http://localhost:8080/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"your_username\", \"password\": \"your_password\"}'\n\n# Then use the session cookie for API calls\ncurl -b cookies.txt -X POST http://localhost:8080/api/add \\\n  -F \"arr=sonarr\" \\\n  -F \"debrid=realdebrid\" \\\n  -F \"urls=magnet:?xt=urn:btih:...\" \\\n  -F \"downloadUncached=true\"\n
"},{"location":"api/#getting-torrents","title":"Getting Torrents","text":"
# With API token\ncurl -H \"Authorization: Bearer $API_TOKEN\" -X GET http://localhost:8080/api/torrents\n
"},{"location":"api/#starting-a-repair-job","title":"Starting a Repair Job","text":"
# With API token\ncurl -H \"Authorization: Bearer $API_TOKEN\" -X POST http://localhost:8080/api/repair \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"arrName\": \"sonarr\",\n    \"mediaIds\": [\"123\", \"456\"],\n    \"autoProcess\": true,\n    \"async\": true\n  }'\n
"},{"location":"installation/","title":"Installation","text":"

There are multiple ways to install and run Decypharr. Choose the method that works best for your setup.

"},{"location":"installation/#docker-installation-recommended","title":"Docker Installation (Recommended)","text":"

Docker is the easiest way to get started with Decypharr.

"},{"location":"installation/#available-docker-registries","title":"Available Docker Registries","text":"

You can use either Docker Hub or GitHub Container Registry to pull the image:

"},{"location":"installation/#docker-tags","title":"Docker Tags","text":""},{"location":"installation/#docker-cli-setup","title":"Docker CLI Setup","text":"

Pull the Docker image:

docker pull cy01/blackhole:latest\n
Run the Docker container:
docker run -d \\\n  --name decypharr \\\n  --restart unless-stopped \\\n  -p 8282:8282 \\\n  -v /mnt/:/mnt:rshared \\\n  -v ./config/:/app \\\n  --device /dev/fuse:/dev/fuse:rwm \\\n  --cap-add SYS_ADMIN \\\n  --security-opt apparmor:unconfined \\\n  cy01/blackhole:latest\n

"},{"location":"installation/#docker-compose-setup","title":"Docker Compose Setup","text":"

Create a docker-compose.yml file with the following content:

services:\n  decypharr:\n    image: cy01/blackhole:latest\n    container_name: decypharr\n    ports:\n      - \"8282:8282\"\n    volumes:\n      - /mnt/:/mnt:rshared\n      - ./config/:/app\n    restart: unless-stopped\n    devices:\n      - /dev/fuse:/dev/fuse:rwm\n    cap_add:\n      - SYS_ADMIN\n    security_opt:\n      - apparmor:unconfined\n

Run the Docker Compose setup:

docker-compose up -d\n

"},{"location":"installation/#binary-installation","title":"Binary Installation","text":"

If you prefer not to use Docker, you can download and run the binary directly.

Download your OS-specific release from the release page. Create a configuration file (see Configuration) Run the binary:

chmod +x decypharr\n./decypharr --config /path/to/config/folder\n
"},{"location":"installation/#notes-for-docker-users","title":"Notes for Docker Users","text":""},{"location":"installation/#health-checks","title":"Health Checks","text":"
services:\n  decypharr:\n    ...\n    ...\n    healthcheck:\n      test: [\"CMD\", \"/usr/bin/healthcheck\", \"--config\", \"/app/\"]\n      interval: 10s\n      timeout: 10s\n      retries: 3\n
"},{"location":"usage/","title":"Usage Guide","text":"

This guide will help you get started with Decypharr after installation.

After installing Decypharr, you can access the web interface at http://localhost:8282 or your configured host/port.

"},{"location":"usage/#initial-configuration","title":"Initial Configuration","text":"

If it's the first time you're accessing the UI, you will be prompted to set up your credentials. You can skip this step if you don't want to enable authentication. If you choose to set up credentials, enter a username and password confirm password, then click Save. You will be redirected to the settings page.

"},{"location":"usage/#debrid-configuration","title":"Debrid Configuration","text":"

- Click on Debrid in the tab - Add your desired Debrid services (Real Debrid, Torbox, Debrid Link, All Debrid) by entering the required API keys or tokens. - Set the Mount/Rclone Folder. This is where decypharr will look for added torrents to symlink them to your media library. - If you're using internal webdav, do not forget the /__all__ suffix - Enable WebDAV - You can leave the remaining settings as default for now.

"},{"location":"usage/#qbittorent-configuration","title":"Qbittorent Configuration","text":""},{"location":"usage/#arrs-configuration","title":"Arrs Configuration","text":"

You can skip Arr configuration for now. Decypharr will auto-add them when you connect to Sonarr or Radarr later.

"},{"location":"usage/#connecting-to-sonarrradarr","title":"Connecting to Sonarr/Radarr","text":"

To connect Decypharr to your Sonarr or Radarr instance:

  1. In Sonarr/Radarr, go to Settings \u2192 Download Client \u2192 Add Client \u2192 qBittorrent
  2. Configure the following settings:
  3. Host: localhost (or the IP of your Decypharr server)
  4. Port: 8282 (or your configured qBittorrent port)
  5. Username: http://sonarr:8989 (your Arr host with http/https)
  6. Password: sonarr_token (your Arr API token, you can get this from Sonarr/Radarr settings)
  7. Category: e.g., sonarr, radarr (match what you configured in Decypharr)
  8. Use SSL: No
  9. Sequential Download: No or Yes (if you want to download torrents locally instead of symlink)
  10. First and Last First: No by default or Yes if you want to remove torrent tracker URLs from the torrents. This can make it possible to download private trackers torrents without breaking the rules.
  11. Click Test to verify the connection
  12. Click Save to add the download client
"},{"location":"usage/#rclone-configuration","title":"Rclone Configuration","text":"

If you want Decypharr to automatically mount WebDAV folders using Rclone, you need to set up Rclone first:

If you're using Docker, the rclone binary is already included in the container. If you're running Decypharr directly, make sure Rclone is installed on your system.

Enable Mount - Global Mount Path: Set the path where you want to mount the WebDAV folders (e.g., /mnt/remote). Decypharr will create subfolders for each Debrid service. For example, if you set /mnt/remote, it will create /mnt/remote/realdebrid, /mnt/remote/torbox, etc. This should be the grandparent of your mount folder set in the Debrid configuration. - User ID: Set the user ID for Rclone mounts (default is gotten from the environment variable PUID). - Group ID: Set the group ID for Rclone mounts (default is gotten from the environment variable PGID). - Buffer Size: Set the buffer size for Rclone mounts.

You should set other options based on your use case. If you don't know what you're doing, leave it as defaults. Checkout the Rclone documentation for more details.

"},{"location":"usage/#repair-configuration","title":"Repair Configuration","text":"

Repair is an optional feature that allows you to fix missing files, symlinks, and other issues in your media library. - Click on Repair in the tab - Enable Scheduled Repair if you want Decypharr to automatically check for missing files at your specified interval. - Set the Repair Interval to how often you want Decypharr to check for missing files (e.g 1h, 6h, 12h, 24h, you can also use cron syntax like 0 0 * * * for daily checks). - Enable WebDav(You shoukd enable this, if you enabled WebDav in Debrid configuration) - Auto Process: Enable this if you want Decypharr to automatically process repair jobs when they are done. This could delete the original files, symlinks, be wary!!! - Worker Threads: Set the number of worker threads for processing repair jobs. More threads can speed up the process but may consume more resources.

"},{"location":"features/","title":"Features Overview","text":"

Decypharr extends the functionality of qBittorrent by integrating with Debrid services, providing several powerful features that enhance your media management experience.

"},{"location":"features/#core-features","title":"Core Features","text":""},{"location":"features/#mock-qbittorrent-api","title":"Mock qBittorrent API","text":"

Decypharr implements a complete qBittorrent-compatible API that can be used with Sonarr, Radarr, Lidarr, and other Arr applications. This allows you to:

"},{"location":"features/#comprehensive-ui","title":"Comprehensive UI","text":"

The Decypharr user interface provides:

"},{"location":"features/#advanced-features","title":"Advanced Features","text":"

Decypharr includes several advanced features that extend its capabilities:

"},{"location":"features/#supported-debrid-providers","title":"Supported Debrid Providers","text":"

Decypharr supports multiple Debrid providers:

Each provider can be configured separately, allowing you to use one or multiple services simultaneously.

"},{"location":"features/private-tracker-downloads/","title":"Private Tracker Downloads","text":"

It is against the rules of most private trackers to download using debrid services. That's because debrid services do not seed back.

Despite that, many torrents from private trackers are cached on debrid services.

This can happen if the exact same torrent is uploaded to a public tracker or if another user downloads the torrent from the private tracker using their debrid account.

However, you do NOT want to be the first person who downloads and caches the private tracker torrent because it is a very quick way to get your private tracker account banned.

Fortunately, decypharr offers a feature that allows you to check whether a private tracker torrent has already been cached.

In a way, this feature lets you use your private trackers to find hashes for the latest releases that have not yet been indexed by zilean, torrentio, and other debrid-focused indexers.

This allows you to add private tracker torrents to your debrid account without breaking the most common private tracker rules. This significantly reduces the chance of account bans, but please read the Risks section below for more details and other precautions you should make.

"},{"location":"features/private-tracker-downloads/#risks","title":"Risks","text":"

A lot of care has gone into ensuring this feature is compliant with most private tracker rules:

You are merely downloading it from another source. It's not much different than downloading a torrent that has been uploaded to MegaUpload or another file hoster.

But it is NOT completely risk-free.

"},{"location":"features/private-tracker-downloads/#suspicious-looking-activity","title":"Suspicious-looking activity","text":"

To use this feature, you must download the .torrent file from the private tracker. But since you will never leech the content, it can make your account look suspicious.

In fact, there is a strictly forbidden technique called ghostleeching that also requires downloading of the .torrent file, and tracker admins might suspect that this is what you are doing.

We know of one user who got banned from a Unit3D-based tracker for this.

Here is what is recommended:

"},{"location":"features/private-tracker-downloads/#accidentally-disable-this-feature","title":"Accidentally disable this feature","text":"

Another big risk is that you might accidentally disable the feature. The consequence will be that you actually leech the torrent from the tracker, don't seed it, and expose the private swarm to an untrusted third party.

You should avoid this at all costs.

Therefore, to reduce the risk further, it is recommended to enable the feature using both methods:

  1. Using the global Always Remove Tracker URLs setting in your decypharr config.json
  2. And by enabling the First and Last First setting in Radarr / Sonarr

This way, if one of them gets disabled, you have another backup.

"},{"location":"features/private-tracker-downloads/#how-to-enable-this-feature","title":"How to enable this feature","text":""},{"location":"features/private-tracker-downloads/#always-remove-tracker-urls","title":"Always Remove Tracker URLs","text":"

This ensures that the Tracker URLs are removed from ALL torrents (regardless of whether they are public, private, or how they were added).

But this can make downloads of uncached torrents slower or stall because the tracker helps the client find peers to download from.

If the torrent file has no tracker URLs, the torrent client can try to find peers for public torrents using DHT. However, this may be less efficient than connecting to a tracker, and the downloads may be slower or stall.

If you only download cached torrents, there is no further downside to enabling this option.

"},{"location":"features/private-tracker-downloads/#only-on-specific-arr-app-clients-and-indexers","title":"Only on specific Arr-app clients and indexers","text":"

Alternatively, you can toggle it only for specific download clients and indexers in the Arr-apps...

If you are using Prowlarr to sync your indexers, you can't set the Download Client in Prowlarr. You must update it directly in your Arr-apps after the indexers get synced. But future updates to the indexers won't reset the setting.

"},{"location":"features/private-tracker-downloads/#test-it","title":"Test it","text":"

After enabling the feature, try adding a public torrent through the Decypharr UI and a public torrent through your Arr-apps.

Then check the decypharr log to check for a log entry like...

Removed 2 tracker URLs from torrent file\n

If you see this log entry, it means the tracker URLs are being stripped from your torrents and you can safely enable it on private tracker indexers.

"},{"location":"features/private-tracker-downloads/#how-it-works","title":"How it works","text":"

When you add a new torrent through the QBitTorrent API or through the Web UI, decypharr converts your torrent into a magnet link and then uses your debrid service's API to download that magnet link.

The torrent magnet link contains:

  1. The info hash that uniquely identifies the torrent, files, and file names
  2. The torrent name
  3. The URLs of the tracker to connect to

Private tracker URLs in torrents contain a passkey. This is a unique identifier that ties the torrent file to your private tracker account.

Only if the passkey is valid will the tracker allow the torrent client to connect and download the files. This is also how private torrent trackers measure your downloads and uploads.

The Remove Tracker URLs feature removes all the tracker URLs (which include your private passkey). This means when decypharr attempts to download the torrent, it only passes the info hash and torrent name to the debrid service.

Without the tracker URLs, your debrid service has no way to connect to the private tracker to download the files, and your passkey and the private torrent tracker swarm are not exposed.

But if the torrent is already cached, it's immediately added to your account.

"},{"location":"features/repair-worker/","title":"Repair Worker","text":"

The Repair Worker is a powerful feature that helps maintain the health of your media library by scanning for and fixing issues with files.

"},{"location":"features/repair-worker/#what-it-does","title":"What It Does","text":"

The Repair Worker performs the following tasks:

"},{"location":"features/repair-worker/#configuration","title":"Configuration","text":"

You can enable and configure the Repair Worker in the Decypharr settings. It can be set to run at regular intervals, such as every 12 hours or daily.

"},{"location":"guides/","title":"Guides for setting up Decypharr","text":""},{"location":"guides/downloading/","title":"Manual Downloading","text":""},{"location":"guides/downloading/#downloading-with-decypharr","title":"Downloading with Decypharr","text":"

While Decypharr provides a Qbittorent API for integration with media management applications, it also allows you to manually download torrents directly through its interface. This guide will walk you through the process of downloading torrents using Decypharr.

"},{"location":"guides/downloading/#manual-downloading","title":"Manual Downloading","text":"

To manually download a torrent using Decypharr, follow these steps: 1. Navigate to the \"Download\" section in the Decypharr UI. 2. You can either upload torrent file(s) or paste magnet links directly into the input fields 3. Select the action(defaults to Symlink)

  1. Add any additional options, such as:
  2. Download Folder: Specify the folder where the downloaded files will be saved.
  3. Arr Category: Choose the category for the download, which helps in organizing files in your media management applications.
  4. Post Download Action: Select what to do after the download completes:
  5. Debrid Provider: Choose which Debrid service to use for the download(if you have multiple)
  6. Download Uncached: If enabled, Decypharr will attempt to download uncached files from the Debrid service.

Note: - If you use an arr category, your download will go into {download_folder}/{arr}

"},{"location":"guides/internal-mounting/","title":"Internal Mounting","text":"

This guide explains how to use Decypharr's internal mounting feature to eliminate the need for external rclone setup.

"},{"location":"guides/internal-mounting/#overview","title":"Overview","text":"

Instead of requiring users to install and configure rclone separately, Decypharr can now mount your WebDAV endpoints internally using rclone as a library dependency. This provides a seamless experience where files appear as regular filesystem paths without any external dependencies.

"},{"location":"guides/internal-mounting/#prerequisites","title":"Prerequisites","text":""},{"location":"guides/internal-mounting/#configuration-options","title":"Configuration Options","text":"

You can set the options in the Web UI or directly in the configuration file:

"},{"location":"guides/internal-mounting/#note","title":"Note:","text":"

Check the Rclone documentation for more details on the available options: Rclone Mount Options.

"},{"location":"guides/internal-mounting/#how-it-works","title":"How It Works","text":"
  1. WebDAV Server: Decypharr starts its internal WebDAV server for enabled providers
  2. Internal Mount: Rclone is used internally to mount the WebDAV endpoint to a local filesystem path
  3. File Access: Your applications can access files using regular filesystem paths like /mnt/decypharr/realdebrid/__all__/MyMovie/
"},{"location":"guides/internal-mounting/#benefits","title":"Benefits","text":""},{"location":"guides/internal-mounting/#docker-compose","title":"Docker Compose","text":"
version: '3.8'\nservices:\n  decypharr:\n    image: sirrobot01/decypharr:latest\n    container_name: decypharr\n    ports:\n      - \"8282:8282\"\n    volumes:\n      - ./config:/config\n      - /mnt:/mnt:rshared  # Important: use 'rshared' for mount propagation\n    devices:\n      - /dev/fuse:/dev/fuse:rwm\n    cap_add:\n      - SYS_ADMIN\n    security_opt:\n      - apparmor:unconfined\n    environment:\n      - UMASK=002\n      - PUID=1000  # Change to your user ID\n      - PGID=1000  # Change to your group ID\n

Important Docker Notes: - Mount volumes with :rshared to allow mount propagation - Include /dev/fuse device for FUSE mounting

"},{"location":"guides/internal-mounting/#troubleshooting","title":"Troubleshooting","text":""},{"location":"guides/internal-mounting/#mount-failures","title":"Mount Failures","text":"

If mounting fails, check:

  1. FUSE Installation:
  2. macOS: Install macFUSE from https://osxfuse.github.io/
  3. Linux: Install fuse package (apt install fuse or yum install fuse)
  4. Docker: Fuse is already included in the container, but ensure the host supports it
  5. Permissions: Ensure the application has sufficient privileges
"},{"location":"guides/internal-mounting/#no-mount-methods-available","title":"No Mount Methods Available","text":"

If you see \"no mount method available\" errors:

  1. Check Platform Support: Some platforms have limited FUSE support
  2. Install Dependencies: Ensure FUSE libraries are installed
  3. Use WebDAV Directly: Access files via http://localhost:8282/webdav/provider/
  4. External Mounting: Use OS-native WebDAV mounting as fallback
"}]}