Self-hosted IPTV, aggregated.
Aggregating scattered IPTV sources behind a single, trusted identity.
masqueradarr is a self-hosted IPTV aggregator. It pulls channel playlists (M3U) and guide data (EPG/XMLTV) from a range of online IPTV services, normalizes them into one catalog, and serves them back as a single, unified, standards-compliant playlist + guide — behind one trusted identity that your media apps and IPTV clients can talk to.
Four jobs, one container
masqueradarr is the ground-up successor to TVApp2. Where the original kept static .m3u files fresh, masqueradarr runs a live, resolve-on-demand engine — and wraps it in a real management app.
Many providers → one catalog
Pulls M3U playlists and EPG/XMLTV guides from ~17 provider adapters plus your own URL / file / HDHomeRun imports, and normalizes them into a single, deduplicated channel catalog.
No dead URLs on disk
Every stream is resolved at play time, which is what makes authenticated, token-gated and rotating-mirror sources possible — captured logins, per-play signed URLs, live mirror failover.
One endpoint for every client
An in-app player plus per-user, tokenized .m3u + XMLTV export for TiviMate, VLC, Plex, Jellyfin and Emby — bytes served by a durable Rust proxy engine.
Users, telemetry, schedule
scrypt users with roles and per-user access lists, live viewer/bandwidth telemetry, MongoDB-backed logs, a cron scheduler, and full-system backup / restore.
One picture: clients, the container, the upstreams
Two processes ship in the same container. Your browser and IPTV clients talk to the Express control plane (Node), which owns MongoDB and drives a Rust data-plane sidecar (masq-proxy) that actually moves the stream bytes.
Node is the brains (stateful, provider-specific: logins, scraping, the token gate, telemetry). Rust is the muscle (byte work, driven per-stream by a "grant" from Node). The same diagram, explained from never-heard-of-IPTV, opens the Concepts page.
A real management SPA
Full screens for Dashboard, Active Streams, History / Metrics, Playlists, EPG Sources, Channel Mapping, Users and Settings — with an editable channel store where your edits survive a re-sync.






Read it in order — or dive in
The docs are built to take you from "I've never heard of IPTV" all the way to the Rust data-plane.
What is IPTV & masqueradarr
The zero-level glossary, the aggregation idea, and the TVApp2 → masqueradarr evolution.
Getting started
Docker Option A / B, the .env, first admin, first playlist.
Playlists
The playlist envelope, the two channel stores, edits that survive re-sync.
Playlist Failover
Grouped playlist channels — one parent, ordered backups, and the play-time walk.
Sources & adapters
The SourceAdapter contract, the source-agnostic core, the adapter families.
EPG & guide data
Provider kinds, the shared sync path, and the compose pipeline.
Video proxy engine
The two planes, the seams, durability, HLS vs raw TS, and edge mode.
Users & access
scrypt auth, roles, per-user access lists, tokenized M3U / XMLTV.
Operations
Active Streams, metrics, logs, the scheduler, backup / restore.
Architecture
Two-package build, REST + 4 WebSockets, boot sequence, the two images.