cli_debrid icon
Rate Limits
Rate Limits

Loading rate limit information...

Loading...
Task Monitor
Loading tasks...

Required Settings

Configure essential application settings

Settings

Debrid Provider

Debrid service provider

API key for the debrid service

Name debrid torrent folders in cli_mount's DFS mount using a structured format: {title} ({year}) - {imdb-id} - {version} - (original) for movies and {title} ({year}) - SxxExx - {episode title} - {imdb-id} - {version} - (original) for episodes. Requires cli_mount as the usenet provider (URL configured). Only renames the virtual folder in cli_mount โ€” the actual file on the debrid service is unchanged.

Include the version (e.g. Default, 4K Remux) in the debrid folder name when Debrid File Naming is enabled.

Include the content source display name in the debrid folder name when Debrid File Naming is enabled.

Additional debrid services tried in order when the primary provider fails (e.g. 451 DMCA block, rate limit). Each fallback needs its own API key.

Usenet Provider

Connect a usenet backend โ€” cli_mount (custom API, default port 8888) or NzbDAV (SAB-compatible API, default port 3000). Both handle NNTP and serve files via the rclone mount.

Backend type. cli_mount uses custom endpoints (/api/add, /api/browse/nzbs); NzbDAV uses standard SAB query-string API (?mode=โ€ฆ). Both expose the same client interface internally.

How to set up NzbDAV (click to expand)

Two containers, one backend (same pattern as zurg + zurg_rclone): the nzbdav container is the downloader + WebDAV server; an rclone container mounts that WebDAV as a normal folder (e.g. /mnt/nzbdav) so Plex and cli-debrid can read the files as a path. You need both โ€” cli_mount only looked simpler because it bundled the mount internally.

Don't write these by hand: use the setup helper below โ€” it generates the docker-compose.yml (both containers) + rclone.conf + the config block for you, and can test the connection and create the required categories. The steps below are what it sets up:

  1. Deploy the NzbDAV stack (nzbdav + rclone) โ€” copy the files from the setup helper below, then docker compose up -d.
  2. In NzbDAV: add your usenet (NNTP) provider + indexers, then copy the SAB API key (NzbDAV โ†’ Settings โ†’ API).
  3. Add the categories cli-debrid uses โ€” NzbDAV โ†’ Settings โ†’ Categories: movies, shows, movies_1080p_264, shows_1080p_264, __unplayable__. Missing categories โ‡’ grabs are rejected and loop in "Wanted".
  4. Fill the fields below: Provider URL (e.g. http://host:3000), API Token (the key from step 2), Download Folder = __unplayable__, NzbDAV Mount Path (where the rclone mount appears in this container, e.g. /mnt/nzbdav).
  5. Bind the mount + Plex: bind the nzbdav rclone mount into this container at that path, and add the content/movies, content/shows (+ _1080p_264) folders to your Plex libraries.
  6. Verify with the helper's Test connection & ensure categories button below, then toggle Enable Usenet above.

Switching from cli_mount? Just set Provider to NzbDAV and update the URL/Token here โ€” your existing cli_mount files don't move. Run NzbDAV in parallel and let new grabs fill it (a hard mount-swap can make Plex purge "missing" items). To move existing downloads across, use Debug โ†’ Library โ†’ "Migrate between usenet providers" (in-app, both directions). For the cli_mountโ†’NzbDAV direction it reads cli_mount's stored .nzb files, so bind cli_mount's appdata into cli-debrid (set cli_mount Data Path below) and the tool reads them from <data_path>/usenet/nzbs. (The host CLI nzbdav_setup.py migrate-files does the same from the shell.)

NzbDAV setup helper

What you do vs. what's automatic: you type your paths/URL below and the tool writes the config files for you โ€” but you copy them to your host and run the shown docker compose commands yourself (cli-debrid runs in a container and can't create other containers). The only step this tool performs automatically is checking/creating the NzbDAV categories in section 2. Fields are prefilled from your saved settings; blank fields fall back to the placeholders.

1. Generate config files

โ€” most setups run both. Adds a small mergerfs "union" so cli-debrid sees debrid + usenet files under one path.

2. Test connection & ensure categories

Once NzbDAV is running, verify cli-debrid can reach it and that the required categories exist (missing categories make grabs loop in "Wanted"). Uses the URL + token above.

How to set up cli_mount (click to expand)
  1. Run cli_mount with its rclone mount; configure your usenet provider + indexers in cli_mount.
  2. Fill below: cli_mount URL (host:8888 โ€” not localhost, conflicts with Phalanx DB), API Token (if auth enabled), Download Folder (leave empty for cli_mount's default).
  3. Set the cli_mount Data Path (bind cli_mount's appdata to /cli_mount_data) if you want backup/restore/cleanup tools.
  4. Toggle Enable Usenet above.

Do not use localhost:8888 โ€” that conflicts with Phalanx DB. Use the cli_mount host IP or container name.

Use the NzbDAV host IP or container name with its port (default 3000), e.g. http://192.168.1.x:3000. Do not append /sabnzbd โ€” NzbDAV serves its SAB-compatible API at the root /api.

Category/folder in cli_mount for downloads. Leave empty to use cli_mount's default download folder.

This is not a download destination โ€” it's the fallback category used only if the per-release title heuristic can't classify a grab. In practice the heuristic classifies everything (it auto-routes to movies / shows / music and the *_1080p_264 variants), so this almost never fires. Recommended value: __unplayable__ โ€” a category Plex doesn't scan, so any unclassifiable grab parks there harmlessly instead of polluting a library. This name (and every category the heuristic emits) must exist in NzbDAV's api.categories โ€” use the setup helper's "ensure categories" button above, or add them in NzbDAV โ†’ Settings โ†’ Categories.

Path to cli_mount's data directory inside the container. Add - /path/to/cli_mount/appdata:/cli_mount_data to your docker-compose volumes, then set this to /cli_mount_data. Required for cli_mount DB backup, restore, and cleanup tools โ€” and lets the in-app provider migration (Debug โ†’ Library) read cli_mount's stored .nzb files from <data_path>/usenet/nzbs.

Path inside this container where the NzbDAV rclone-mount appears. NzbDAV has no /browse API, so folder lookups walk the filesystem under <this path>/content/<category>/. Bind-mount the nzbdav-rclone mount into the cli-debrid container at this same path. A trailing /__all__ is stripped automatically (zurg-path compatibility). Effectively required when provider is NzbDAV.

Comma-separated NzbDAV categories the broken-NZB repair tool may act on. NzbDAV history is shared with other SAB clients (e.g. Lidarr music) โ€” repair only re-acquires content cli-debrid manages, so it must never touch another app's entries. Leave empty to auto-pick the categories cli-debrid grabs into (plus the Download Folder fallback). Set only if your category names differ.

Comma-separated NzbDAV categories the repair tool must ignore (subtracted from the owned set). Use this if you point Radarr/Sonarr at the same NzbDAV and don't want cli-debrid touching their categories.

Maximum age of NZB results in days. Results older than this are filtered out at search time and never submitted to the Usenet provider. Set to 0 to disable. Applies everywhere NZB indexers are searched (queue, scraper results, upgrade hub, repair).

Reject NZB season packs entirely (movies are unaffected). A single damaged article in a season pack repairs the whole pack via a fresh grab; with this enabled, only aggregate/single-episode NZB results are considered, so a bad file only affects that one episode.

File Management

Plex Authentication

Connect to your Plex Media Server by signing in with your Plex account.

If Plex authorization fails to connect using this method, try using your direct IP and Plex token in the section below. Plex cannot always navigate networking automatically.

Select Your Plex Server

Select Your Libraries

Plex Configuration

×

Select Your Plex Server

Configure Libraries

Select library management method. Note: On Windows systems, hardlinks will be used instead of symlinks when selecting Symlinked/Local option.

Path to the original files (in Zurg use the /__all__ folder).

Path to the destination folder (where you want your files linked to).

Date & Time Format Options

Date Codes:

CodeDescriptionExample
%YYear with century (4 digits)2024
%yYear without century (2 digits)24
%mMonth as zero-padded number01-12
%BFull month nameJanuary, February
%bAbbreviated month nameJan, Feb
%dDay of month as zero-padded number01-31
%-dDay of month without padding1-31
%jDay of year as zero-padded number001-366
%-jDay of year without padding1-366

Day of Week:

CodeDescriptionExample
%AFull weekday nameMonday, Tuesday
%aAbbreviated weekday nameMon, Tue
%wWeekday as number (0=Sunday)0-6
%uWeekday as number (1=Monday)1-7

Time Codes:

CodeDescriptionExample
%HHour (24-hour) zero-padded00-23
%-HHour (24-hour) without padding0-23
%IHour (12-hour) zero-padded01-12
%-IHour (12-hour) without padding1-12
%MMinute zero-padded00-59
%-MMinute without padding0-59
%SSecond zero-padded00-59
%-SSecond without padding0-59
%fMicrosecond (6 digits)000000-999999
%pAM/PMAM, PM

Timezone:

CodeDescriptionExample
%zUTC offset+0100, -0700
%ZTimezone nameUTC, EST, PST

Common Format Examples:

FormatDescriptionExample Output
%Y-%m-%dISO date format2024-12-22
%m/%d/%YUS date format12/22/2024
%d/%m/%YEuropean date format22/12/2024
%B %d, %YLong date formatDecember 22, 2024
%H:%M:%S24-hour time14:30:45
%I:%M:%S %p12-hour time with AM/PM02:30:45 PM
%H:%M:%S.%fTime with microseconds14:30:45.123456
%Y-%m-%d %H:%M:%SFull datetime2024-12-22 14:30:45

Note: The %- prefix (e.g., %-d, %-H) removes leading zeros but may not work on all platforms (especially Windows). For maximum compatibility, use zero-padded versions.