Skip to content

Zurg

A custom-built, self-hosted Real-Debrid WebDAV server. Combined with rclone, it allows you to mount your Real-Debrid torrent library into your file system, similar to Dropbox. It is designed for use with Infuse (WebDAV server) and Plex (mounting Zurg WebDAV with rclone).

Public Repo: ReadMe Card
Sponsors only:
https://github.com/debridmediamanager/zurg

Download

Release Cycle

Latest version: v0.10.0-rc.4-1 (Sponsors only)

Download the binary or use docker

Instructions on HOW TO PULL THE PRIVATE DOCKER IMAGE

Also the CONFIG guide for v0.10

sh
docker pull ghcr.io/debridmediamanager/zurg:latest
# or
docker pull ghcr.io/debridmediamanager/zurg:v0.10.0-rc.4-1

Stable version: v0.9.3-final (Public)

Download the binary or use docker

sh
docker pull ghcr.io/debridmediamanager/zurg-testing:latest
# or
docker pull ghcr.io/debridmediamanager/zurg-testing:v0.9.3-final

Setup

Setup Zurg with these steps:

bash
cd /opt 
mkdir zurg-testing
cd /opt/zurg-testing

TIP

You will now be inside zurgs directory where you will create and edit the needed files.
Now you can nano each file and copy/paste the content below into your local files.
Eg. nano config.yml

yaml
# Zurg configuration version
zurg: v1
token: ENTER REAL-DEBRID API TOKEN HERE # https://real-debrid.com/apitoken
# host: "[::]"
# port: 9999
# username:
# password:
# proxy:
api_rate_limit_per_minute: 60
torrents_rate_limit_per_minute: 25
concurrent_workers: 32
check_for_changes_every_secs: 10
# repair_every_mins: 60
ignore_renames: true
retain_rd_torrent_name: true
retain_folder_name_extension: true
enable_repair: false
auto_delete_rar_torrents: false
get_torrents_count: 5000
# api_timeout_secs: 15
# download_timeout_secs: 10
# enable_download_mount: false
# rate_limit_sleep_secs: 6
# retries_until_failed: 2
# network_buffer_size: 4194304 # 4MB
# serve_from_rclone: false
# verify_download_link: false
# force_ipv6: false
directories:
  torrents:
    group: 1
    filters:
      - regex: /.*/
yaml
version: '3.8'
services:
  zurg:
    image: ghcr.io/debridmediamanager/zurg-testing:v0.9.3-final
    container_name: zurg
    restart: unless-stopped
    healthcheck:
      test: curl -f localhost:9999/dav/version.txt || exit 1
    ports:
      - 9999:9999
    volumes:
      - ./config.yml:/app/config.yml
      - ./data:/app/data

  rclone:
    image: rclone/rclone:latest
    container_name: rclone
    restart: unless-stopped
    environment:
      TZ: Europe/Berlin
      PUID: 1000
      PGID: 1000
    volumes:
      - /mnt/remote/realdebrid:/data:rshared
      - /opt/zurg-testing/rclone.conf:/config/rclone/rclone.conf
      - /mnt:/mnt
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    devices:
      - /dev/fuse:/dev/fuse:rwm
    depends_on:
      zurg:
        condition: service_healthy
        restart: true
    command: "mount zurg: /data --allow-non-empty --allow-other --uid=1000 --gid=1000 --umask=002 --dir-cache-time 10s"
bash
[zurg]
type = webdav
url = http://zurg:9999/dav
vendor = other
pacer_min_sleep = 0

INFO

This configuration stores all torrents to /mnt/remote/realdebrid/torrents so that blackhole can see the torrents when downloading and creating the symlinks.

A web server is now running at localhost:9999.

Note: when using zurg in a server outside of your home network, ensure that "Use my Remote Traffic automatically when needed" is unchecked on your Account page

Command-line utility

Usage:
  zurg [flags]
  zurg [command]

Available Commands:
  clear-downloads Clear all downloads (unrestricted links) in your account
  clear-torrents  Clear all torrents in your account
  completion      Generate the autocompletion script for the specified shell
  help            Help about any command
  network-test    Run a network test
  version         Prints zurg's current version

Flags:
  -c, --config string   config file path (default "./config.yml")
  -h, --help            help for zurg

Use "zurg [command] --help" for more information about a command.

Why zurg? Why not X?

  • Better performance than anything out there; changes in your library appear instantly (assuming Plex picks it up fast enough)
  • You can configure a flexible directory structure in config.yml; you can select individual torrents that should appear on a directory by the ID you see in DMM. Need help?
  • If you've ever experienced Plex scanner being stuck on a file and thereby freezing Plex completely, it should not happen anymore because zurg does a comprehensive check if a torrent is dead or not. You can run ps aux --sort=-time | grep "Plex Media Scanner" to check for stuck scanner processes.
  • zurg guarantees that your library is always available because of its repair abilities!

Please read our wiki for more information!

zurg's version history