πŸ“Ί Personal Streaming Platform

Stream TV

A self-hosted television system that turns IPTV subscriptions, DRM channels, and live streams into a clean, Netflix-like experience, kept in sync across every device you own. One central brain and native apps for every screen.

Live HLS / DASH Widevine & ClearKey DRM Movies & Series TV guide & catch-up Self-healing streams Recording & multi-view Per-user profiles
Part 1 Β· The Brain

The Server

Runs as a Docker container on an always-on home server. It holds the content, fixes dead streams, juggles your IPTV accounts, crawls catalogs, relays feeds, and manages who can see what.

πŸ—‚οΈCentral channel store & sync

One master list for every device. Add, rename, delete, reorder, or re-group a channel once and every app reflects it. A fresh server auto-seeds from your existing library, so there's no re-typing.

πŸŽ›οΈAdmin control room

A full browser panel: channels, groups, playlists on their own page, bulk actions on whatever you tick, accounts & profiles, restriction toggles, and a one-click "Diagnose all" sweep that auto-hides dead channels.

πŸ”§Self-healing resolver

When a link dies, the server finds a fresh one automatically and shares the fix with every device. It knows token-scraped, RTÉ DRM, IPTV-org, master-playlist, and Stalker channels apart.

⚑Browserless token resolver

Channels that hide their real stream behind a rotating token are cracked in pure HTTP + AES with no headless browser, resolving in about a second instead of thirty.

🩺Channel diagnosis

Instead of "it's broken," a staged probe reports the real reason (origin refused, 403 geo-blocked, 401 max-connections, dead host, wrong codec) and reads a panel's exact response codes correctly. A stream that trickles but never really plays counts as broken too.

πŸ”Xtream TS relay

A one-connection IPTV account is fanned out to all your devices from a single shared upstream, spliced cleanly across the panel's constant reconnects, so the account never fights itself. When a feed struggles, the relay works through a ladder of fallbacks before it gives up.

πŸ‘₯Account pools

Attach several accounts for the same line-up and the server spreads channels across them, ranks the healthy ones, grades expiry dates, and clears out lapsed accounts in one click. Dead accounts stop being retried.

🌍Per-playlist VPN exit

Choose which playlists leave through a VPN. The server swaps exits automatically when a panel blocks one, holds the exit steady while you're watching, and runs its own checks over the same route.

πŸ“ŠStatus page

One page shows live faults, the VPN state, and recent crashes (including the near misses), with buttons to dismiss or rotate each one.

βͺCatch-up / timeshift

Rewind live TV. For panels that support archive, the server serves a past broadcast on demand and you can seek through it with the arrow keys. It's banked to disk within your free space, so playback stays smooth when the source doesn't.

🎬Movies & Series catalog

One unified database indexes the VOD libraries of all your accounts, over 230,000 movies and 85,000 series, into a single poster catalog (categories, titles, seasons, episodes), searchable across every line, with a nightly refresh that skips what's already fresh and full per-profile gating.

πŸ“°TV guide

A full now/next guide from XMLTV sources, docked beside the channel list and rebuilt whenever the line-up changes. Off by default and switched on per playlist, so it only loads what you actually use.

πŸ‘€Accounts, profiles & safe mode

Per-user logins with signed tokens. Each profile only sees the groups & content it's granted. Restricted content is never even sent to a device that shouldn't have it. Safe mode is on every launch.

πŸ“₯Master playlists & bulk import

Register M3U playlists, browse their groups before importing, and pull channels by country from IPTV-org, with scheduled auto-refresh and deletion-respecting re-imports.

πŸ’ΎBackup & snapshots

One-click export/import of the whole configuration, plus automatic gzip snapshots (keeps the last 20) so you can roll back to any recent state.

πŸ“‘Live-reload push

When a channel you're watching changes, the server pushes a live event and the app restarts just that stream in place, with no full reload.

πŸ›°οΈResilience & edge relay

Apps cache the last-good list for when the server blinks. A tiny Cloudflare edge proxy lets the server reach IPTV panels an ISP actively blocks, with no rate-limiting.

Part 2 Β· The Living Room

The Desktop App

A Windows app with a TV-like interface for live channels and on-demand movies & series. Under the hood it plays through mpv, so the hard parts of streaming stay out of sight.

πŸ“šGrouped library

A three-column layout splits Live TV from Movies & Series. Collapsible groups, search-as-you-type, drag-to-reorder, a hint showing which playlist a channel came from, and it resumes your last channel on launch.

πŸ”²Multi-view & mosaic

Watch up to four channels at once in a grid, or drop them wherever you like in a free mosaic. Click a tile for its audio, press F to send one tile fullscreen without breaking up the group.

🎞️mpv playback engine

Live, catch-up, and films all play through mpv. It decodes MPEG-2, VC-1, and interlaced feeds that browsers refuse, with no re-encoding, and closes streams properly when you leave, so an account slot is never held by a window you forgot about.

πŸ”ŠAudio & subtitle tracks

Switch alternate audio tracks and toggle subtitles instantly, without reconnecting. Embedded VOD subtitle tracks are included.

🍿Movies & Series

A rich poster-grid catalog across all your accounts, with title / season / episode detail, favourites, a search overlay, real seeking, and per-title resume. Press Back over a film to pause it; Resume picks up exactly where you were.

⏺️Recording

Record any channel to disk (ffmpeg stream-copy, no quality loss). Recording survives token expiry, has a dedicated browser window, scheduled recordings, and custom filename templates.

πŸ”DRM playback

Widevine DASH and ClearKey channels play through Shaka, and RTÉ live works from anywhere because its manifest and rotating per-programme license resolve through the server's proxy.

πŸŽ™οΈIPTV & Stalker playback

Raw Xtream MPEG-TS plays through the server relay; MAC portals resolve per-connect; multi-audio TS streams get a proper track picker.

🌐CORS-neutral & hotlink-friendly

Strips restrictive CORS headers and injects the per-channel Referer/Origin gated CDNs expect, on the playlist, the AES keys, and the segments alike.

πŸ–₯️Screen-friendly

Keeps playing when the window is minimised, shows the real decoded resolution beside the channel name, and draws at the right size on mixed-DPI multi-monitor setups.

πŸ”’Accounts & safe mode

Optional per-user login scopes the library to your profile; restricted content stays server-side invisible, and safe mode starts on every launch.

Part 3 Β· Every Screen

The Android App

A native Kotlin / Compose client of the same server, playing through mpv. Built for phones, tablets, and Android TV, with true feature parity.

πŸ“‹Same content, native UI

Grouped channel list with search and now-playing lines, plus the full Movies & Series poster catalog with season/episode detail, favourites, and resume. It launches straight into the last channel you watched and keeps a live picture on screen while you browse.

πŸ–ΌοΈPiP & background playback

Keep watching in a floating Picture-in-Picture window or with the screen off.

πŸ“ΊAndroid TV launcher

Behaves like a real TV app with full D-pad navigation, player controls within reach of the remote, and remote-friendly audio / subtitle pickers.

πŸ”²Multi-view

A 2Γ—2 grid with per-tile audio, just like the desktop.

⏱️Preemptive token renewal

A stall watchdog plus link refresh that fires before expiry, so playback doesn't hiccup on rotating tokens.

🎞️mpv playback engine

Everything plays through a built-in mpv engine with hardware decoding, so even 50fps channels stay perfectly in sync.

βͺCatch-up on the go

Rewind live into catch-up and watch films with the archive banked to the device's storage, sized to the free space you have.

πŸ“ΆWatch from anywhere

Streams locked to a single IP are unlocked on the device itself, so you can connect from anywhere, over 5G on the go, not only on your home network.

Why it's more than a playlist

Every hard part of "just watching a stream" has been engineered away.

Streams break and move around
β†’ The server re-resolves them and shares the fix.
IPTV accounts allow one connection
β†’ The relay makes one connection serve everyone.
Streams die silently
β†’ Watchdogs catch and heal them with a real reason.
Browsers can't decode half of IPTV
β†’ mpv plays it natively on every screen.
Panels block your home IP
β†’ Per-playlist VPN exits and an edge proxy route around it.
DRM is geo-locked
β†’ The server proxies the license so it plays anywhere.
Content should be private
β†’ Profiles gate it server-side, invisibly.
The server might blink
β†’ Apps cache the last-good list and keep going.

A personal-use system for streams you have the right to watch. DRM playback uses the platform's official Widevine licensing with your own account credentials. Nothing is bypassed.