Torrent & magnet -> Debrider -> Downloader
docker run -v "/local/data:/app/data" -p8765:8765 ghcr.io/bemble/holerr:latest
holerr:
image: ghcr.io/bemble/holerr:latest
container_name: holerr
restart: unless-stopped
user: "${DOCKER_UID}:${DOCKER_GID}"
ports:
- ${PORT_HOLERR}:8765
environment:
- TZ=${TIMEZONE}
volumes:
- "${PWD}/holerr/data:/app/data"
Debriders:
- Real-Debrid
Downloaders:
- Synology Download Station
- Aria2 (using JSON-RPC over HTTP)
The main file to migrate is the configuration, but holerr will migrate your configuration file from v1 to v2 after its first starts.
:warning: Also note that default port has changed, it's now 8765
Create a config.yaml
file in the data directory.
# Select the logger to set in debug
debug: # optional, string[]
- holerr.*
# If necessary, project base path (root path), when run behind a proxy fo example
base_path: /holerr # optional, string
# Debrider configuration
debrider:
real_debrid:
# Real-Debrid private API token: https://real-debrid.com/apitoken
api_key: your key # string
# Downloader configuration
downloader:
# Synology
synology_download_station:
# Your Synology endpoint
endpoint: synology endpoint # string (example: "http://192.168.1.1:5000")
# DSM username (this user must not have 2FA)
username: dsm user # string
# DSM password
password: use password # string
# Aria2
aria2_jsonrpc:
# Your aria2 JSON-RPC endpoint (http)
endpoint: aria2 endpoint # string (example: "http://192.168.1.1:6000")
# Aria2 JSONRPC secret
secret: aria2 secret # optional, string
# Presets list
presets:
- name: Downloads # string
# Directory that holerr will watch
watch_dir: holes/downloads # string
# Downloader output directory, relative to the downloader
output_dir: Downloads # string
# Whether the file should be downloaded in a subdoctory or not
create_sub_dir: false # optional, boolean
# Restrict the extensions to download, default no-restriction
file_extensions: # optional, string[]
# Restrict the size of the files to download, default no restriction
min_file_size: # human readbale string, example: 3.0B, 12KB, 432.2MB, 4.5GB, 1TB
You should have a user dedicated to this. Create a user (Configuration > Users and groups), for this project it only needs access to DownloadStation application and write/read access to the output directories.
User must not have two factor authentication enabled, API calls won't work otherwise.
Before being able to start a download in Download Station you must:
- allow access to DSM (Configuration > Users and groups > [the user], edit > Applications > DSM)
- log in once in DSM
- open Download Station in this user session once to select the default output directory
- log out
- remove access to DSM for this user (Configuration > Users and groups > [the user], edit > Applications > DSM)
aria2 does not push any progress event over websocket, it has to be pulled, so for now there's real advantage to implement websocket connection.
- Create a
data
folder at project root - Add a configuration file
⚠️ while developing, you should not use abase_path
cd front
npm i
Create a virtual environment:
- In VSCode, open command palette (
Shift+CMD+P
) >Python: Create Environment...
- Select
Venv
- Select
server
workspace - Check
requirements.txt
Open VS Code, start the dev container. There's 2 tasks:
- Run front
- Run server
Database migrations will be run before the server starts.
Simply navigate to http://localhost:8765/docs or http://localhost:8765/redoc.