Intermediate 1-2 hours Docker + Linux required

Jellyfin + Real-Debrid: Free & Open Source

Build a powerful streaming setup with Jellyfin — the free, open-source alternative to Plex. No subscriptions, no tracking, full control.

🆓

Why Jellyfin over Plex?

  • 100% Free — No premium subscriptions needed
  • No tracking — Your data stays private
  • Open source — Transparent and community-driven
  • No account required — Works without external login

What you'll need

  • Real-Debrid account — €3-16 depending on plan length
  • Linux server or VPS — Ubuntu 22.04+ recommended, 2GB+ RAM
  • Docker & Docker Compose — For running all services
  • Terminal/SSH access — Basic command line knowledge
  • 1-2 hours — Depending on experience level

No Jellyfin account needed! Unlike Plex, Jellyfin doesn't require any external account. Everything runs on your server.

How it works

┌─────────────────────────────────────────────────────────┐
│                  Your Jellyfin Stack                     │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  Real-Debrid (Cloud)                                    │
│       │                                                  │
│       ▼                                                  │
│  ┌─────────┐    ┌─────────┐    ┌───────────┐           │
│  │  Zurg   │───▶│ rclone  │───▶│ Jellyfin  │           │
│  │ WebDAV  │    │  mount  │    │  Server   │           │
│  └─────────┘    └─────────┘    └───────────┘           │
│                      │              │                    │
│                      ▼              ▼                    │
│               /mnt/zurg      Jellyfin Clients           │
│             (filesystem)    (TV, Phone, Web)            │
│                                                          │
└─────────────────────────────────────────────────────────┘

Component roles:

  • Zurg — Creates WebDAV server from Real-Debrid
  • rclone — Mounts WebDAV as local filesystem
  • Jellyfin — Free, open-source media server

Jellyfin advantages:

  • • No subscriptions or premium tiers
  • • Hardware transcoding (free!)
  • • Plugins and customization
  • • Complete privacy

Step 1: Set up Real-Debrid

1.1 Create account & subscribe

  1. 1. Go to real-debrid.com
  2. 2. Create an account and verify email
  3. 3. Purchase a subscription (180 days is best value at €16)

1.2 Get your API key

  1. 1. Go to real-debrid.com/apitoken
  2. 2. Copy your API key and save it securely

Step 2: Install Docker

# Install Docker (Ubuntu/Debian)
curl -fsSL https://get.docker.com | sh

# Add your user to docker group
sudo usermod -aG docker $USER

# Log out and back in, then verify
docker --version
docker compose version

# Create project directory
mkdir -p ~/jellyfin-debrid
cd ~/jellyfin-debrid
mkdir -p zurg rclone jellyfin/config jellyfin/cache

Step 3: Deploy Zurg

Create Zurg configuration

# Create config file
nano ~/jellyfin-debrid/zurg/config.yml

Add this configuration:

# ~/jellyfin-debrid/zurg/config.yml
zurg: v1
token: YOUR_REAL_DEBRID_API_KEY  # Replace with your key

host: "[::]"
port: 9999

directories:
  movies:
    group: media
    filters:
      - regex: /.*\.(mkv|mp4|avi)$/i
  shows:
    group: media
    filters:
      - regex: /.*\.(mkv|mp4|avi)$/i

Replace YOUR_REAL_DEBRID_API_KEY with your actual API key.

Step 4: Configure rclone

Create rclone configuration

# Create rclone config
nano ~/jellyfin-debrid/rclone/rclone.conf

Add:

[zurg]
type = webdav
url = http://zurg:9999
vendor = other
pacer_min_sleep = 0

Create mount point

sudo mkdir -p /mnt/zurg
sudo chown $USER:$USER /mnt/zurg

Step 5: Install Jellyfin

Jellyfin is included in the docker-compose below. Unlike Plex, there's no claim token needed — just start it and configure through the web UI.

Hardware transcoding: Jellyfin supports free hardware transcoding! The docker-compose includes GPU passthrough for Intel/AMD.

Step 6: Configure libraries

6.1 Initial setup

  1. 1. Open http://your-server-ip:8096
  2. 2. Create your admin account
  3. 3. Select your preferred language and metadata sources

6.2 Add libraries

  1. 1. Go to Dashboard → Libraries → Add Library
  2. 2. Add a Movies library pointing to /mnt/zurg/movies
  3. 3. Add a TV Shows library pointing to /mnt/zurg/shows

6.3 Disable automatic scanning

  1. 1. Go to Dashboard → Scheduled Tasks
  2. 2. Disable or reduce frequency of library scan tasks

This prevents overwhelming Real-Debrid with requests.

Complete docker-compose.yml

# ~/jellyfin-debrid/docker-compose.yml
services:
  # Zurg - WebDAV server for Real-Debrid
  zurg:
    image: ghcr.io/debridmediamanager/zurg-testing:latest
    container_name: zurg
    restart: unless-stopped
    ports:
      - "9999:9999"
    volumes:
      - ./zurg/config.yml:/app/config.yml
      - ./zurg/data:/app/data

  # rclone - Mounts Zurg as filesystem
  rclone:
    image: rclone/rclone:latest
    container_name: rclone
    restart: unless-stopped
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    devices:
      - /dev/fuse
    volumes:
      - ./rclone/rclone.conf:/config/rclone/rclone.conf
      - /mnt/zurg:/data:shared
    command: >
      mount zurg: /data
      --config=/config/rclone/rclone.conf
      --allow-other
      --allow-non-empty
      --dir-cache-time=10s
      --vfs-cache-mode=full
      --vfs-cache-max-size=10G
    depends_on:
      - zurg

  # Jellyfin Media Server
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    ports:
      - "8096:8096"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=UTC
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/zurg:/mnt/zurg:shared
    # Uncomment for Intel QuickSync hardware transcoding:
    # devices:
    #   - /dev/dri:/dev/dri
    depends_on:
      - rclone

Start everything

cd ~/jellyfin-debrid
docker compose up -d

# Watch logs
docker compose logs -f

# Check status
docker compose ps
🎉

You're done!

Access Jellyfin at http://your-ip:8096

Troubleshooting

Mount not working / empty directory
  • • Install fuse: sudo apt install fuse3
  • • Check Zurg: docker logs zurg
  • • Check rclone: docker logs rclone
Jellyfin not finding content
  • • Verify mount: ls /mnt/zurg
  • • Check library paths in Jellyfin match mount paths
  • • Manually trigger a library scan
Hardware transcoding not working
  • • Uncomment the devices section in docker-compose
  • • For Intel: ls /dev/dri should show render and card devices
  • • Enable VAAPI in Jellyfin Dashboard → Playback → Transcoding
Buffering issues
  • • Increase rclone vfs-cache-max-size
  • • Enable direct play in client settings
  • • Check Real-Debrid server status

Jellyfin Apps

📱

Mobile

iOS & Android apps available

📺

TV

Android TV, Fire TV, Roku

🌐

Web

Access from any browser

Want automation?

Add Riven to automatically manage your content library.

Related Guides