💾 Record IPTV to a NAS — Complete Guide

Build your own DVR with a Synology or QNAP NAS, Threadfin as the IPTV proxy, and Jellyfin or Plex as the recorder + player.

Advertisement

🎯 What are you building?

A DIY DVR system that:

  • 📺 Receives IPTV channels via M3U or Xtream Codes
  • 📅 Schedules recordings via the EPG (TV guide)
  • 💾 Saves them to your NAS
  • 🎬 Plays back on any device (TV, phone, browser)
  • 🌐 Works at home and remotely
Diagram: IPTV source to Threadfin to Jellyfin/Plex to clients
The NAS DVR architecture: provider → Threadfin → Jellyfin/Plex → all your devices

The three components

  1. Threadfin — an IPTV proxy that converts your M3U into HDHomeRun format (what Jellyfin/Plex expect)
  2. Jellyfin or Plex — a Live TV + DVR server that records and manages your media library
  3. Synology or QNAP NAS — hosts both via Docker and stores the recordings

🆚 Synology vs QNAP for IPTV DVR

SynologyQNAP
OSDSM (polished, user-friendly)QTS (more powerful, more complex)
Docker supportContainer Manager (DSM 7.2+)Container Station
Hardware transcodingLimited (J/Plus models with Intel)Stronger — more models with HDMI + Intel
Jellyfin compatible?✅ Yes (Docker)✅ Yes (Docker)
Plex compatible?✅ Native Plex package + Docker✅ Native + Docker
Recommended modelsDS923+, DS224+, DS1522+TS-464, TS-664, TS-873A
Value for moneySlightly pricierOften more specs for less

Tip: for IPTV DVR a NAS with an Intel CPU and integrated GPU (Quick Sync) matters for hardware transcoding. ARM CPUs work, but are slower at conversion.

🔧 Step 1: Install Threadfin (Docker)

Threadfin is a fork of xTeVe — an IPTV proxy that converts your M3U into a format Plex/Jellyfin understand (HDHomeRun emulation).

Docker compose example

version: "3"
services:
  threadfin:
    image: fyb3roptik/threadfin
    container_name: threadfin
    ports:
      - "34400:34400"
    volumes:
      - /volume1/docker/threadfin/conf:/home/threadfin/conf
      - /volume1/docker/threadfin/temp:/tmp/threadfin
    environment:
      - TZ=Europe/Amsterdam
      - PUID=1000
      - PGID=100
    restart: unless-stopped

Configure after install

  1. Open http://NAS-IP:34400/web/
  2. Add your M3U URL under Playlist
  3. Add your EPG XMLTV URL under XMLTV
  4. Map channels to the EPG under Mapping
  5. Configure the number of tuners (= simultaneous recordings/streams)
  6. Plex/Jellyfin will "find" Threadfin as an HDHomeRun device on port 34400

🎬 Step 2: Jellyfin or Plex — which to pick?

JellyfinPlex
Price✅ 100% free, open sourceFree base, Plex Pass €5/m or €120 lifetime
DVR feature✅ Included⚠️ Plex Pass required
Hardware transcoding✅ Free⚠️ Plex Pass required
Mobile apps✅ Free⚠️ One-off €5 unlock per platform (or Plex Pass)
InterfaceBasic but functionalNicer, more user-friendly
Remote accessSet up VPN/Tailscale yourself✅ Works automatically via Plex relay
IPTV DVR stability✅ Good✅ Good, a touch more polished

Recommendation: start with Jellyfin — free, everything included. Switch to Plex if you want a nicer interface and are happy to invest in Plex Pass.

⚙️ Step 3: Install Jellyfin (Docker)

version: "3"
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - /volume1/docker/jellyfin/config:/config
      - /volume1/docker/jellyfin/cache:/cache
      - /volume1/media:/media
      - /volume1/recordings:/recordings
    devices:
      - /dev/dri:/dev/dri  # Intel Quick Sync (Intel NAS only)
    environment:
      - TZ=Europe/Amsterdam
    restart: unless-stopped

Connect the DVR to Threadfin

  1. Open Jellyfin at http://NAS-IP:8096
  2. Go to Dashboard → Live TV
  3. Add a tuner: type HDHomeRun, URL: http://NAS-IP:34400
  4. Add an EPG source (Threadfin serves XMLTV on the same port)
  5. Set the recording path: /recordings
  6. Done — channels appear under "Live TV"
Advertisement

💽 Storage calculation

How much space do you need for recordings? It depends on the resolution and bitrate of your IPTV provider:

QualityBitrate (typical)Per hourPer day (8h)Per month
SD2-3 Mbps~1 GB~8 GB~240 GB
HD 720p4-5 Mbps~2 GB~16 GB~480 GB
Full HD 1080p6-8 Mbps~3.5 GB~28 GB~840 GB
4K UHD15-25 Mbps~10 GB~80 GB~2.4 TB

Recommended NAS storage

  • Light use: 2× 4TB in RAID 1 = 4TB usable — good for ~150 hours of 4K or 1000 hours of HD
  • Average: 4× 8TB in RAID 5 = 24TB usable — series, films, recordings for years
  • Heavy: 4× 16TB in RAID 5 or SHR-2 = 48TB+ — for the true hoarder

Tip: use NAS-grade drives like WD Red Plus, Seagate IronWolf or Toshiba N300. No desktop drives — they won't survive 24/7 NAS duty for long.

🌐 Network tips

  • Wire your NAS — IPTV streams + recordings are network-intensive, WiFi is unstable
  • Gigabit minimum — 100 Mbps gets tight with multiple 4K streams at once
  • A separate VLAN for IPTV traffic if your router supports it (UniFi, OPNsense)
  • Internet downstream determines how many channels you can stream at once: ~10 Mbps per 1080p stream
  • Remote access via Tailscale or WireGuard (Jellyfin) or Plex relay (Plex)

⚠️ Common problems

"No tuners available"

  • Increase the number of tuners in Threadfin → Settings → Buffer
  • The provider has a connection limit — check your subscription

"Recording starts but the file is corrupt"

  • Set the Threadfin buffer to FFmpeg instead of Streaming mode
  • Codec mismatch — enable Jellyfin transcoding
  • NAS too slow — check CPU usage during recording

"EPG mismatch, wrong programme recorded"

  • The time zone in Threadfin and Jellyfin must match exactly
  • The EPG XMLTV is sometimes shifted 30 min — set a manual offset
  • The tvg-id in the M3U must match the EPG ids

🆚 NAS DVR vs Catch-Up TV

NAS DVRCatch-Up TV
Investment€500-€2000+ NAS + drives€0 (included in IPTV sub)
What you recordAnything you schedule in advanceOnly what the provider records (1-14 days)
RetentionUnlimited (as long as storage lasts)Usually max 14 days
Works offline✅ Yes❌ No, internet required
Best forSeries, films, archive"Oh, I forgot to watch that"

📚 Read more