{"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":"DecyphArr combines the power of QBittorrent with popular Debrid services to enhance your media management. It provides a familiar interface for Sonarr, Radarr, and other *Arr applications while leveraging the capabilities of Debrid providers.
"},{"location":"#key-features","title":"Key Features","text":"Check out our Installation Guide to get started with DecyphArr.
"},{"location":"changelog/","title":"Changelog","text":""},{"location":"changelog/#050","title":"0.5.0","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:
cy01/blackhole:latestghcr.io/sirrobot01/decypharr:latestlatest: The latest stable releasebeta: The latest beta releasevX.Y.Z: A specific version (e.g., v0.1.0)nightly: The latest nightly build (usually unstable)experimental: The latest experimental build (highly unstable)Create a docker-compose.yml file with the following content:
version: '3.7'\nservices:\n decypharr:\n image: cy01/blackhole:latest # or cy01/blackhole:beta\n container_name: decypharr\n ports:\n - \"8282:8282\" # qBittorrent\n - \"8181:8181\" # Proxy\n user: \"1000:1000\"\n volumes:\n - /mnt/:/mnt\n - ./configs/:/app # config.json must be in this directory\n environment:\n - PUID=1000\n - PGID=1000\n - UMASK=002\n - QBIT_PORT=8282 # qBittorrent Port (optional)\n - PORT=8181 # Proxy Port (optional)\n restart: unless-stopped\n depends_on:\n - rclone # If you are using rclone with docker\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 the binary from the releases page Create a configuration file (see Configuration) Run the binary:
chmod +x decypharr\n./decypharr --config /path/to/config\n The config directory should contain your config.json file.
"},{"location":"usage/","title":"Usage Guide","text":"This guide will help you get started with DecyphArr after installation.
"},{"location":"usage/#basic-setup","title":"Basic Setup","text":"config.json file (see Configuration for details)http://localhost:8282 (or your configured host/port)To connect DecyphArr to your Sonarr or Radarr instance:
localhost (or the IP of your DecyphArr server)8282 (or your configured qBittorrent port)http://sonarr:8989 (your Arr host with http/https)sonarr_token (your Arr API token)sonarr, radarr (match what you configured in DecyphArr)NoNo or Yes (if you want to download torrents locally instead of symlink)The DecyphArr UI provides a familiar qBittorrent-like interface with additional features for Debrid services:
Access the UI at http://localhost:8282 or your configured host/port.
DecyphArr uses a JSON configuration file to manage its settings. This file should be named config.json and placed in your configured directory.
Here's a minimal configuration to get started:
{\n \"debrids\": [\n {\n \"name\": \"realdebrid\",\n \"host\": \"https://api.real-debrid.com/rest/1.0\",\n \"api_key\": \"realdebrid_key\",\n \"folder\": \"/mnt/remote/realdebrid/__all__/\"\n }\n ],\n \"qbittorrent\": {\n \"port\": \"8282\",\n \"download_folder\": \"/mnt/symlinks/\",\n \"categories\": [\"sonarr\", \"radarr\"]\n },\n \"repair\": {\n \"enabled\": false,\n \"interval\": \"12h\",\n \"run_on_start\": false\n },\n \"use_auth\": false,\n \"log_level\": \"info\"\n}\n"},{"location":"configuration/#configuration-sections","title":"Configuration Sections","text":"DecyphArr's configuration is divided into several sections:
Full Configuration Example For a complete configuration file with all available options, see our full configuration example.
"},{"location":"configuration/arrs/","title":"Arr Applications Configuration","text":"DecyphArr can integrate directly with Sonarr, Radarr, and other Arr applications. This section explains how to configure the Arr integration in your config.json file.
The Arr applications are configured under the arrs key:
\"arrs\": [\n {\n \"name\": \"sonarr\",\n \"host\": \"http://sonarr:8989\",\n \"token\": \"your-sonarr-api-key\",\n \"cleanup\": true\n },\n {\n \"name\": \"radarr\",\n \"host\": \"http://radarr:7878\",\n \"token\": \"your-radarr-api-key\",\n \"cleanup\": true\n }\n]\n"},{"location":"configuration/arrs/#note","title":"!!! note","text":"This configuration is optional if you've already set up the qBittorrent client in your Arr applications with the correct host and token information. It's particularly useful for the Repair Worker functionality.
"},{"location":"configuration/arrs/#configuration-options","title":"Configuration Options","text":"Each Arr application supports the following options:
name: The name of the Arr application, which should match the category in qBittorrenthost: The host URL of the Arr application, including protocol and porttoken: The API token/key of the Arr applicationcleanup: Whether to clean up the Arr queue (removes completed downloads). This is only useful for Sonarr.You can configure multiple Arr applications by adding more entries to the arrs array:
\"arrs\": [\n {\n \"name\": \"sonarr\",\n \"host\": \"http://sonarr:8989\",\n \"token\": \"your-sonarr-api-key\",\n \"cleanup\": true\n },\n {\n \"name\": \"sonarr-anime\",\n \"host\": \"http://sonarr-anime:8989\",\n \"token\": \"your-sonarr-anime-api-key\",\n \"cleanup\": true\n },\n {\n \"name\": \"radarr\",\n \"host\": \"http://radarr:7878\",\n \"token\": \"your-radarr-api-key\",\n \"cleanup\": false\n },\n {\n \"name\": \"lidarr\",\n \"host\": \"http://lidarr:8686\",\n \"token\": \"your-lidarr-api-key\",\n \"cleanup\": false\n }\n]\n"},{"location":"configuration/debrid/","title":"Debrid Providers Configuration","text":"DecyphArr supports multiple Debrid providers. This section explains how to configure each provider in your config.json file.
Each Debrid provider is configured in the debrids array:
\"debrids\": [\n {\n \"name\": \"realdebrid\",\n \"host\": \"https://api.real-debrid.com/rest/1.0\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/realdebrid/__all__/\"\n },\n {\n \"name\": \"alldebrid\",\n \"host\": \"https://api.alldebrid.com/v4\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/alldebrid/downloads/\"\n }\n]\n"},{"location":"configuration/debrid/#provider-options","title":"Provider Options","text":"Each Debrid provider accepts the following configuration options:
"},{"location":"configuration/debrid/#basic-options","title":"Basic Options","text":"name: The name of the Debrid provider (realdebrid, alldebrid, debridlink, torbox)host: The API endpoint of the Debrid providerapi_key: Your API key for the Debrid service (can be comma-separated for multiple keys)folder: The folder where your Debrid content is mounted (via webdav, rclone, zurg, etc.)download_api_keys: Array of API keys used specifically for downloading torrents (defaults to the same as api_key)rate_limit: Rate limit for API requests (null by default)download_uncached: Whether to download uncached torrents (disabled by default)check_cached: Whether to check if torrents are cached (disabled by default)use_webdav: Whether to create a WebDAV server for this Debrid provider (disabled by default)For services that support it, you can provide multiple download API keys for better load balancing:
{\n \"name\": \"realdebrid\",\n \"host\": \"https://api.real-debrid.com/rest/1.0\",\n \"api_key\": \"key1\",\n \"download_api_keys\": [\"key1\", \"key2\", \"key3\"],\n \"folder\": \"/mnt/remote/realdebrid/__all__/\"\n}\n"},{"location":"configuration/debrid/#example-configuration","title":"Example Configuration","text":""},{"location":"configuration/debrid/#real-debrid","title":"Real Debrid","text":"{\n \"name\": \"realdebrid\",\n \"host\": \"https://api.real-debrid.com/rest/1.0\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/realdebrid/__all__/\",\n \"rate_limit\": null,\n \"download_uncached\": false,\n \"check_cached\": true,\n \"use_webdav\": true\n}\n"},{"location":"configuration/debrid/#all-debrid","title":"All Debrid","text":"{\n \"name\": \"alldebrid\",\n \"host\": \"https://api.alldebrid.com/v4\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/alldebrid/torrents/\",\n \"rate_limit\": null,\n \"download_uncached\": false,\n \"check_cached\": true,\n \"use_webdav\": true\n}\n"},{"location":"configuration/debrid/#debrid-link","title":"Debrid Link","text":"{\n \"name\": \"debridlink\",\n \"host\": \"https://debrid-link.com/api/v2\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/debridlink/torrents/\",\n \"rate_limit\": null,\n \"download_uncached\": false,\n \"check_cached\": true,\n \"use_webdav\": true\n}\n"},{"location":"configuration/debrid/#torbox","title":"Torbox","text":"{\n \"name\": \"torbox\",\n \"host\": \"https://api.torbox.com/v1\",\n \"api_key\": \"your-api-key\",\n \"folder\": \"/mnt/remote/torbox/torrents/\",\n \"rate_limit\": null,\n \"download_uncached\": false,\n \"check_cached\": true,\n \"use_webdav\": true\n}\n"},{"location":"configuration/general/","title":"General Configuration","text":"This section covers the basic configuration options for DecyphArr that apply to the entire application.
"},{"location":"configuration/general/#basic-settings","title":"Basic Settings","text":"Here are the fundamental configuration options:
{\n \"use_auth\": false,\n \"log_level\": \"info\",\n \"discord_webhook_url\": \"\",\n \"min_file_size\": 0,\n \"max_file_size\": 0,\n \"allowed_file_types\": [\".mp4\", \".mkv\", \".avi\", ...]\n}\n"},{"location":"configuration/general/#configuration-options","title":"Configuration Options","text":""},{"location":"configuration/general/#log-level","title":"Log Level","text":"The log_level setting determines how verbose the application logs will be:
debug: Detailed information, useful for troubleshootinginfo: General operational information (default)warn: Warning messageserror: Error messages onlytrace: Very detailed information, including all requests and responsesThe use_auth option enables basic authentication for the UI:
\"use_auth\": true\n When enabled, you'll need to provide a username and password to access the DecyphArr interface.
"},{"location":"configuration/general/#file-size-limits","title":"File Size Limits","text":"You can set minimum and maximum file size limits for torrents:
\"min_file_size\": 0, // Minimum file size in bytes (0 = no minimum)\n\"max_file_size\": 0 // Maximum file size in bytes (0 = no maximum)\n"},{"location":"configuration/general/#allowed-file-types","title":"Allowed File Types","text":"You can restrict the types of files that DecyphArr will process by specifying allowed file extensions. This is useful for filtering out unwanted file types.
\"allowed_file_types\": [\n \".mp4\", \".mkv\", \".avi\", \".mov\",\n \".m4v\", \".mpg\", \".mpeg\", \".wmv\",\n \".m4a\", \".mp3\", \".flac\", \".wav\"\n]\n If not specified, all movie, TV show, and music file types are allowed by default.
"},{"location":"configuration/general/#discord-notifications","title":"Discord Notifications","text":"To receive notifications on Discord, add your webhook URL:
\"discord_webhook_url\": \"https://discord.com/api/webhooks/...\"\n This will send notifications for various events, such as successful downloads or errors."},{"location":"configuration/qbittorrent/","title":"qBittorrent Configuration","text":"DecyphArr emulates a qBittorrent instance to integrate with Arr applications. This section explains how to configure the qBittorrent settings in your config.json file.
The qBittorrent functionality is configured under the qbittorrent key:
\"qbittorrent\": {\n \"port\": \"8282\",\n \"download_folder\": \"/mnt/symlinks/\",\n \"categories\": [\"sonarr\", \"radarr\", \"lidarr\"],\n \"refresh_interval\": 5\n}\n"},{"location":"configuration/qbittorrent/#configuration-options","title":"Configuration Options","text":""},{"location":"configuration/qbittorrent/#essential-settings","title":"Essential Settings","text":"port: The port on which the qBittorrent API will listen (default: 8282)download_folder: The folder where symlinks or downloaded files will be placedcategories: An array of categories to organize downloads (usually matches your Arr applications)refresh_interval: How often (in seconds) to refresh the Arrs Monitored Downloads (default: 5)Categories help organize your downloads and match them to specific Arr applications. Typically, you'll want to configure categories that match your Sonarr, Radarr, or other Arr applications:
\"categories\": [\"sonarr\", \"radarr\", \"lidarr\", \"readarr\"]\n When setting up your Arr applications to connect to DecyphArr, you'll specify these same category names.
"},{"location":"configuration/qbittorrent/#download-folder","title":"Download Folder","text":"The download_folder setting specifies where DecyphArr will place downloaded files or create symlinks:
\"download_folder\": \"/mnt/symlinks/\"\n This folder should be:
The port setting determines which port the qBittorrent API will listen on:
\"port\": \"8282\"\n Ensure this port:
The refresh_interval setting controls how often DecyphArr checks for updates from your Arr applications:
\"refresh_interval\": 5\n This value is in seconds. Lower values provide more responsive updates but may increase CPU usage.
"},{"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:
The DecyphArr user interface provides:
DecyphArr includes several advanced features that extend its capabilities:
DecyphArr supports multiple Debrid providers:
Each provider can be configured separately, allowing you to use one or multiple services simultaneously.
"},{"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:
To enable and configure the Repair Worker, add the following to your config.json:
\"repair\": {\n \"enabled\": true,\n \"interval\": \"12h\",\n \"run_on_start\": false,\n \"use_webdav\": false,\n \"zurg_url\": \"http://localhost:9999\",\n \"auto_process\": true\n}\n"},{"location":"features/repair-worker/#configuration-options","title":"Configuration Options","text":"enabled: Set to true to enable the Repair Worker.interval: The time interval for the Repair Worker to run (e.g., 12h, 1d).run_on_start: If set to true, the Repair Worker will run immediately after DecyphArr starts.use_webdav: If set to true, the Repair Worker will use WebDAV for file operations.zurg_url: The URL for the Zurg service (if using).auto_process: If set to true, the Repair Worker will automatically process files that it finds issues with.use_webdav for exponentially faster repair processeszurg_url parameter to greatly improve repair speedDecyphArr includes a built-in WebDAV server that provides direct access to your Debrid files, making them easily accessible to media players and other applications.
"},{"location":"features/webdav/#overview","title":"Overview","text":"While most Debrid providers have their own WebDAV servers, DecyphArr's implementation offers faster access and additional features. The WebDAV server listens on port 8080 by default.
http://localhost:8282/webdav or http://<your-server-ip>:8080/webdavYou can configure WebDAV settings either globally or per-Debrid provider in your config.json:
\"webdav\": {\n \"torrents_refresh_interval\": \"15s\",\n \"download_links_refresh_interval\": \"40m\",\n \"workers\": 200,\n \"folder_naming\": \"original_no_ext\",\n \"auto_expire_links_after\": \"3d\",\n \"rc_url\": \"http://localhost:5572\",\n \"rc_user\": \"username\",\n \"rc_pass\": \"password\"\n}\n"},{"location":"features/webdav/#configuration-options","title":"Configuration Options","text":"torrents_refresh_interval: Interval for refreshing torrent data (e.g., 15s, 1m, 1h).download_links_refresh_interval: Interval for refreshing download links (e.g., 40m, 1h).workers: Number of concurrent workers for processing requests.original_no_ext: Original file name without extensionoriginal: Original file name with extensionfilename: Torrent filenamefilename_no_ext: Torrent filename without extensionid: Torrent IDauto_expire_links_after: Time after which download links will expire (e.g., 3d, 1w).rc_url, rc_user, rc_pass: Rclone RC configuration for VFS refreshesThe WebDAV server works well with media players like:
You can mount the WebDAV server locally using Rclone. Example configuration:
[decypharr]\ntype = webdav\nurl = http://localhost:8080/webdav/realdebrid\nvendor = other\n For a complete Rclone configuration example, see our sample rclone.conf."}]}