- Add repair worker - Fix AllDebrid bugs with single movies/series - Fix Torbox bugs
GoBlackHole(with Debrid Proxy Support)
This is a Golang implementation go Torrent QbitTorrent with a Real Debrid & Torbox Support.
Features
- Mock Qbittorent API that supports the Arrs(Sonarr, Radarr, etc)
- Proxy support for the Arrs
- Real Debrid Support
- Torbox Support
- Debrid Link Support
- Multi-Debrid Providers support
- UI for adding torrents directly to *arrs
- Repair Worker for missing files (NEW)
The proxy is useful in filtering out un-cached Real Debrid torrents
Supported Debrid Providers
- Real Debrid
- Torbox
- Debrid Link
- All Debrid
Changelog
- View the CHANGELOG.md for the latest changes
Installation
Docker Compose
version: '3.7'
services:
blackhole:
image: cy01/blackhole:latest # or cy01/blackhole:beta
container_name: blackhole
ports:
- "8282:8282" # qBittorrent
- "8181:8181" # Proxy
user: "1000:1000"
volumes:
- ./logs:/app/logs
- ~/plex/media:/media
- ~/plex/media/symlinks/:/media/symlinks/
- ~/plex/configs/blackhole/config.json:/app/config.json # Config file, see below
environment:
- PUID=1000
- PGID=1000
- UMASK=002
- QBIT_PORT=8282 # qBittorrent Port. This is optional. You can set this in the config file
- PORT=8181 # Proxy Port. This is optional. You can set this in the config file
restart: unless-stopped
depends_on:
- rclone # If you are using rclone with docker
Binary
Download the binary from the releases page and run it with the config file.
./blackhole --config /path/to/config.json
Config
{
"debrids": [
{
"name": "torbox",
"host": "https://api.torbox.app/v1",
"api_key": "torbox_api_key",
"folder": "data/torbox/torrents/",
"rate_limit": "250/minute",
"download_uncached": false,
"check_cached": true
},
{
"name": "realdebrid",
"host": "https://api.real-debrid.com/rest/1.0",
"api_key": "realdebrid_key",
"folder": "data/realdebrid/torrents/",
"rate_limit": "250/minute",
"download_uncached": false,
"check_cached": false
},
{
"name": "debridlink",
"host": "https://debrid-link.com/api/v2",
"api_key": "debridlink_key",
"folder": "data/debridlink/torrents/",
"rate_limit": "250/minute",
"download_uncached": false,
"check_cached": false
},
{
"name": "alldebrid",
"host": "http://api.alldebrid.com/v4.1",
"api_key": "alldebrid_key",
"folder": "/media/remote/alldebrid/magnet/",
"rate_limit": "600/minute",
"download_uncached": false,
"check_cached": false
}
],
"proxy": {
"enabled": true,
"port": "8100",
"debug": false,
"username": "username",
"password": "password",
"cached_only": true
},
"max_cache_size": 1000,
"qbittorrent": {
"port": "8282",
"download_folder": "/media/symlinks/",
"categories": ["sonarr", "radarr"],
"refresh_interval": 5
},
"arrs": [
{
"name": "sonarr",
"host": "http://host:8989",
"token": "arr_key"
},
{
"name": "radarr",
"host": "http://host:7878",
"token": "arr_key"
}
]
}
Config Notes
Max Cache Size
- The
max_cache_sizekey is used to set the maximum number of infohashes that can be stored in the availability cache. This is used to prevent round trip to the debrid provider when using the proxy/Qbittorrent - The default value is
1000 - The cache is stored in memory and is not persisted on restart
Debrid Config
- The
debridskey is an array of debrid providers - The
namekey is the name of the debrid provider - The
hostkey is the API endpoint of the debrid provider - The
api_keykey is the API key of the debrid provider - The
folderkey is the folder where your debrid folder is mounted(webdav, rclone, zurg etc). e.gdata/realdebrid/torrents/,/media/remote/alldebrid/magnets/ - The
rate_limitkey is the rate limit of the debrid provider(null by default) - The
download_uncachedbool key is used to download uncached torrents(disabled by default) - The
check_cachedbool key is used to check if the torrent is cached(disabled by default)
Repair Config (NEW)
The repair key is used to enable the repair worker
- The
enabledkey is used to enable the repair worker - The
intervalkey is the interval in either minutes, seconds, hours, days. Use any of this format, e.g 12:00, 5:00, 1h, 1d, 1m, 1s. - The
run_on_startkey is used to run the repair worker on start
Proxy Config
- The
enabledkey is used to enable the proxy - The
portkey is the port the proxy will listen on - The
debugkey is used to enable debug logs - The
usernameandpasswordkeys are used for basic authentication - The
cached_onlymeans only cached torrents will be returned
Qbittorrent Config
- The
portkey is the port the qBittorrent will listen on - The
download_folderis the folder where the torrents will be downloaded. e.g/media/symlinks/ - The
categorieskey is used to filter out torrents based on the category. e.gsonarr,radarr - The
refresh_intervalkey is used to set the interval in minutes to refresh the Arrs Monitored Downloads(it's in seconds). The default value is5seconds
Arrs Config
This is an array of Arrs(Sonarr, Radarr, etc) that will be used to download the torrents. This is not required if you already set up the Qbittorrent in the Arrs with the host, token. This is particularly useful if you want to use the Repair tool without using Qbittorent
- The
namekey is the name of the Arr/ Category - The
hostkey is the host of the Arr - The
tokenkey is the API token of the Arr
Proxy
The proxy is useful in filtering out un-cached Real Debrid torrents.
The proxy is a simple HTTP proxy that requires basic authentication. The proxy can be enabled by setting the proxy.enabled to true in the config file.
The proxy listens on the port 8181 by default. The username and password can be set in the config file.
Setting Up Proxy in Arr
- Sonarr/Radarr
- Settings -> General -> Use Proxy
- Hostname:
localhost# or the IP of the server - Port:
8181# or the port set in the config file - Username:
username# or the username set in the config file - Password:
password# or the password set in the config file - Bypass Proxy for Local Addresses ->
No
Qbittorrent
The qBittorrent is a mock qBittorrent API that supports the Arrs(Sonarr, Radarr, etc).
Setting Up Qbittorrent in Arr
- Sonarr/Radarr
- Settings -> Download Client -> Add Client -> qBittorrent
- Host:
localhost# or the IP of the server - Port:
8282# or the port set in the config file/ docker-compose env - Username:
http://sonarr:8989# Your arr host with http/https - Password:
sonarr_token# Your arr token - Category: e.g
sonarr,radarr - Use SSL ->
No - Sequential Download ->
No|Yes(If you want to download the torrents locally instead of symlink) - Test
- Save
Repair Worker
The repair worker is a simple worker that checks for missing files in the Arrs(Sonarr, Radarr, etc). It's particularly useful for files either deleted by the Debrid provider or files with bad symlinks.
- Search for broken symlinks/files
- Search for missing files
- Search for deleted/unreadable files
UI
The UI is a simple web interface that allows you to add torrents directly to the Arrs(Sonarr, Radarr, etc) or trigger the Repair Worker.
UI Features
- Adding new torrents
- Triggering the Repair Worker
TODO
-
A proper name!!!!
-
Debrid
- Add more Debrid Providers
-
Qbittorrent
- Add more Qbittorrent features
- Persist torrents on restart/server crash
-
Add tests
