I had a couple of large IPTV playlists and a Jellyfin server, and I wanted the channels to show up as proper Live TV — with a guide — not a flat M3U dumped into a player. Dispatcharr bridges the gap.

What it does

It ingests M3U playlists and XMLTV guide data, lets you dedupe and organize channels, and exposes an HDHomeRun-style tuner plus an XMLTV guide that Jellyfin consumes natively. It also proxies the streams, so clients hit one stable endpoint.

Behind a VPN

IPTV fetching is best done through a VPN, so I run Dispatcharr sharing a gluetun container's network namespace — every upstream request egresses through the tunnel, while Jellyfin reaches it on the internal network.

The gotchas

  • Streams vs Channels. Importing an M3U creates streams; the lineup only shows channels. You generate channels from streams.
  • Dedup early. ~2,000 raw streams collapsed to ~550 real channels once I merged duplicate sources into failover groups.
  • Free IPTV is flaky. Plenty of channels are just dead upstream — that's the source, not your setup.

End result: live TV with a guide, right inside Jellyfin.