nodecast-tv
For media servers, nodecast-tv is a self-hosted solution that provides web-based IPTV player.
Self-hosted web IPTV player, honestly reviewed. No marketing fluff, just what you get when you run it yourself.
TL;DR
- What it is: Open-source (GPL-3.0) self-hosted web application for streaming Live TV, Movies, and Series from your Xtream Codes or M3U IPTV provider — through a browser, on any device [1].
- Who it’s for: People with an existing IPTV subscription who are tired of clunky dedicated apps and want a clean, modern web interface they can self-host on a NAS or VPS.
- Cost savings: The player itself is free to self-host. Ongoing cost is just the VPS or NAS you probably already have — $0 for the software versus paying for commercial IPTV front-end services that charge per device or per month.
- Key strength: Clean, modern UI in a category full of software that looks like it was designed in 2006. Virtual scrolling means 7,000+ channel lists don’t turn your browser into a slideshow [1][2]. Hardware transcoding (NVIDIA, AMD, Intel) is a genuine differentiator at this price point [README].
- Key weakness: GPL-3.0 license (not MIT — matters if you plan to embed or resell). It’s a young project — 1,088 stars, 228 commits, one active developer. No issue tracker maturity, limited community documentation beyond the README. And it is only a player: you still need your own IPTV provider.
What is nodecast-tv
nodecast-tv is a self-hosted web application for watching IPTV content in a browser. It doesn’t provide any content — it connects to your existing Xtream Codes or M3U playlist and renders it in a modern interface with a live TV grid, EPG (electronic program guide), VOD sections for movies and series, and a hardware-accelerated transcoding layer for compatibility [README].
The project started as a personal itch-scratch. The developer (GitHub handle technomancer702, Reddit handle NeonXI) posted the announcement to r/selfhosted with a frank explanation: “Most existing players I tried were either clunky, outdated, closed-source, or just didn’t handle large playlists with thousands of channels very well. So I built NodeCast TV.” [1] That original post is still the most substantive public discussion of the project.
The tech stack is deliberately lightweight: Node.js with Express on the backend for proxying and transcoding, and vanilla JavaScript on the frontend — no React, no Vue, no framework overhead. The author chose this specifically to avoid the sluggishness that plagues some self-hosted media apps [1]. Storage is SQLite for favorites, preferences, and user accounts. A REST API is present for management. Docker and Docker Compose are the supported deployment path [README].
As of this review, nodecast-tv has 1,088 GitHub stars and 126 forks, and was picked up by the Self-Host Weekly newsletter in its January 2026 issue — a legitimate signal of community recognition in this space [3].
Why people choose it
The r/selfhosted post that launched this project got real traction because it names a real problem. Anyone who’s set up IPTV before knows the landscape: Kodi with a plugin is powerful but complex, dedicated Android apps are fragile and don’t work on a NAS browser interface, and most web-based IPTV players are either abandoned or ugly. NodeCast TV pitched itself as the modern alternative that actually runs in a browser without needing a client app installed [1].
The Threads post that syndicated the project to a broader audience highlighted two things that resonated: the ability to handle “up to 7,000 channels without breaking a sweat” and the claim that it works seamlessly with both Xtream Codes and M3U formats [2]. These are the two most common IPTV delivery protocols, so covering both means almost any IPTV subscription will work out of the box.
The XDA Developers article from October 2025 — which reviewed a similar competing app in the same self-hosted IPTV space — is useful context here. The author noted that most IPTV interfaces feel “stuck in the past, with a look and feel straight out of the early 2000s” and specifically praised Docker-based Node.js architecture for making setup painless [4]. NodeCast TV is playing in exactly this space and was built from the same frustration. What ViniPlay (the app XDA reviewed) offers, nodecast-tv largely matches — modern architecture, clean UI, hardware transcoding, Docker deployment — and nodecast-tv adds OIDC SSO, which ViniPlay notably lacks.
Features
Based on the README and first-hand descriptions from the developer:
Live TV:
- Channel zapping with category grouping and search
- Interactive EPG grid with 24-hour timeline, group filtering, search, and dynamic resizing
- Virtual scrolling renders 7,000+ channel lists without browser lag [README][1]
VOD:
- Dedicated Movies and Series sections with rich metadata, posters, and seasonal episode lists
- Full season/episode browser for series content [README]
Playback and transcoding:
- Stream processing with automatic codec detection — the app decides whether to remux (faster) or transcode (slower but compatible) based on what the browser can handle [README]
- Hardware-accelerated transcoding via NVIDIA NVENC, AMD AMF, Intel QuickSync, and VAAPI — meaning your GPU does the heavy lifting instead of your CPU [README]
- Smart 5.1→Stereo audio downmix with preset modes: ITU, Night Mode, Cinematic — plus automatic passthrough when the source is already stereo-compatible [README]
- Built on HLS.js for broad browser codec compatibility [1]
Account and access management:
- Admin and Viewer role system [README]
- OIDC SSO with support for Authentik, Keycloak, and other OIDC providers — new SSO users are auto-assigned Viewer and must be manually promoted to Admin [README]
- Per-user favorites across Live TV, Movies, and Series with instant sync
Management:
- Xtream Codes and M3U playlist ingestion
- Hidden content category management
- Playback preferences (volume memory, auto-play)
- REST API for programmatic management [merged profile]
Deployment:
- Docker and Docker Compose with official docker-compose.yml in the repo [README]
- SQLite for persistence — no external database required
Pricing: SaaS vs self-hosted math
nodecast-tv has no commercial version, no SaaS tier, no cloud offering. The GPL-3.0 software is free. The cost model is purely infrastructure.
What nodecast-tv costs:
- Software: $0
- VPS to run it: $5–10/mo on Hetzner, Contabo, or a NAS you already own
- Your IPTV subscription: separate, varies by provider (this tool is a player, not a source)
What you’re replacing:
If you’re currently paying for a premium IPTV front-end service or a per-device app license to get a clean interface on top of your Xtream Codes subscription, those costs go away. Some commercial IPTV app platforms charge $5–15 per device per year for a decent UI. If you’re running IPTV across 3–5 devices in a household, that adds up. Self-hosting nodecast-tv is a browser app accessible from any device on your network — no per-device license, no app store dependency.
The more meaningful cost comparison is time: a $6 VPS and 30–60 minutes of setup versus paying indefinitely for a mediocre experience. The hardware transcoding feature is a real value multiplier — if your devices can’t natively decode H.265, nodecast-tv converts on the server so you don’t need to upgrade clients [README].
Data on pricing is not available from the sources reviewed here for commercial IPTV UI services specifically, but the self-hosting economics are simple: infrastructure cost is near-zero if you’re already running a home server.
Deployment reality check
The README is straightforward and the Docker Compose setup is standard. The developer’s announcement post got substantive feedback in r/selfhosted with no widespread complaints about broken installs — a positive signal [1].
What you actually need:
- Node.js v14 or higher (if installing without Docker)
- Or: Docker and docker-compose (recommended path)
- A reverse proxy (Caddy or nginx) with your domain if you want HTTPS access outside your home network
- An existing IPTV subscription providing Xtream Codes credentials or an M3U URL
What can go sideways:
Hardware transcoding requires manual GPU pass-through. For Intel QSV and AMD VAAPI, you map /dev/dri devices into the Docker container. For NVIDIA NVENC, you need the NVIDIA Container Toolkit installed on the host first and then specific deploy.resources.reservations entries in your docker-compose.yml [README]. This is standard Docker GPU practice, but it’s not beginner-friendly if you haven’t done it before. The payoff is real — if your streams are H.265 and your clients are older devices, hardware transcoding is the difference between watchable and unwatchable.
SSO user provisioning is manual post-login. New users authenticating via OIDC/SSO are assigned Viewer by default. Promoting someone to Admin requires manual intervention in the app. There’s no SCIM provisioning or auto-role-assignment based on provider groups [README]. Fine for a home setup, limiting for a multi-user deployment.
The project is one developer deep. 228 commits and active development as of this review, but no corporate backing and no evidence of a contributor base beyond the author. If the developer moves on, the project risk is real. That’s the honest read on a 1,088-star project versus a 21,000-star project with VC funding.
No documentation site. The README is the documentation. It covers the main paths well — Docker, hardware acceleration, OIDC setup — but there’s no troubleshooting guide, no community wiki, no discussion forum beyond the original Reddit thread [1][README]. For common problems (stream not starting, EPG not loading, GPU not detected), you’re on your own or filing a GitHub issue.
Realistic install time for someone comfortable with Docker and a Linux VPS: 15–30 minutes to a working instance. For someone who has run other self-hosted apps but hasn’t done GPU pass-through before: 1–2 hours depending on hardware. For a complete beginner to self-hosting: this isn’t the first project to try.
Pros and Cons
Pros
- Modern UI in a space where everything looks ancient. The developer built this explicitly because existing options were clunky. The screenshots match that intent: clean grid EPG, organized VOD sections, smooth channel switching [1][2]. The XDA review of the competing ViniPlay — praising the same aesthetic category — validates that a modern Node.js + clean frontend approach is genuinely compelling here [4].
- Handles large playlists without degradation. Virtual scrolling renders 7,000+ channel lists without browser lag [1][2][README]. This is a real technical problem that most IPTV players handle badly.
- Hardware transcoding at no extra cost. NVENC, AMF, QuickSync, and VAAPI support in a free GPL tool is genuinely unusual [README].
- OIDC SSO included. Authentik and Keycloak integration means you can tie it into your existing home identity provider [README]. Not common at this price point.
- Docker-first deployment. Standard docker-compose.yml is in the repo. No surprise dependencies [README].
- Browser-native. No client app to install — works on any device with a browser on your local network.
- SQLite backend. No external database to manage. Persistence is a single file you can back up trivially [merged profile].
Cons
- GPL-3.0, not MIT. If you want to embed this in a commercial product or build a managed IPTV service on top of it, GPL-3.0 requires you to open-source your entire stack. Relevant for any founder considering it as an infrastructure component, not just personal use.
- Single-developer project. No company behind it, no disclosed funding, no contributor base. 228 commits as of this writing. Bus factor of one [README][1].
- No documentation beyond the README. Troubleshooting requires GitHub issues or community improvisation. The README covers setup well but not edge cases [README].
- SSO admin promotion is manual. New SSO users start as Viewer; there’s no automatic role mapping from provider groups [README]. Mildly annoying for multi-user deployments.
- Hardware transcoding setup requires Linux GPU pass-through knowledge. Not difficult if you’ve done it before; genuinely opaque if you haven’t [README].
- No native mobile apps. It’s a web app, which is great for desktop and browser-capable smart TVs, but native iOS/Android apps that cache content offline aren’t in scope.
- You still need an IPTV subscription. This is a player, not a source. If you don’t already have an Xtream Codes or M3U provider, this doesn’t help you [README][1].
Who should use this / who shouldn’t
Use nodecast-tv if:
- You already have an IPTV subscription via Xtream Codes or M3U and your current player interface is embarrassing.
- You’re running a home server or NAS and want a browser-based interface that doesn’t require installing anything on client devices.
- You want hardware transcoding support without paying for a commercial app.
- You’re comfortable with Docker and a Linux environment, or are willing to spend an afternoon learning it.
- Multi-user home access matters and you want OIDC SSO instead of shared credentials.
Skip it if:
- You have no existing IPTV subscription. This tool doesn’t provide content — you need your own source first.
- You need a documented, community-supported project with active issue resolution. For a production or business-critical media deployment, the single-developer risk is real.
- You’re planning to embed this in a commercial product. GPL-3.0 means your entire stack needs to be open-sourced too.
- You want native mobile apps with offline support. It’s browser-only.
- You have no Linux/Docker experience and no technical person to help. The hardware transcoding setup in particular will frustrate a complete beginner.
Alternatives worth considering
- Jellyfin — the broad self-hosted media server that includes live TV and DVR support via plugins (like xTeVe or Threadfin for M3U integration). Much larger community, significantly more complex to set up correctly for IPTV specifically. Actively maintained with hundreds of contributors.
- ViniPlay — the most direct visual competitor. The XDA article from October 2025 explicitly called it the best-looking self-hosted IPTV app available, praising its Docker setup, hardware transcoding, and multi-view streaming capability [4]. Worth evaluating head-to-head with nodecast-tv — they’re at the same technical level with different UI approaches.
- Emby — commercial/freemium self-hosted media server with live TV support. Polished, but not fully open source, and the good features require a paid Premiere license.
- Plex — the dominant home media server. IPTV support via plugins and a Tuner network, but Plex is an opaque commercial product with increasingly aggressive monetization. Not a self-hosting purist’s tool.
- TVHeadend — the veteran open-source TV streaming server. Powerful for DVR and OTA tuners, ugly UI, steep configuration curve. Not competitive for Xtream Codes/M3U use cases.
- ErsatzTV — newer, IPTV-oriented, open source (GPL-3.0). More focused on building custom channels, less on being a universal M3U player.
The realistic shortlist for someone who has an Xtream Codes subscription and wants a modern self-hosted UI: nodecast-tv vs ViniPlay. Both are Node.js, both are Docker-first, both have hardware transcoding. ViniPlay has an XDA endorsement for aesthetics [4] and a multi-view streaming feature; nodecast-tv adds OIDC SSO and has the larger star count. Try both — both are free.
Bottom line
nodecast-tv is a well-built solution to a specific and real problem: self-hosted IPTV players have historically been ugly and slow. A solo developer got fed up, built the modern version, and the r/selfhosted community validated it [1][3]. The feature set is genuinely competitive — virtual scrolling for large playlists, GPU-accelerated transcoding for all major platforms, OIDC SSO — and the Docker deployment is straightforward. The honest caveats are the ones that come with any one-person open source project: no company behind it, no documentation site, and a GPL license that limits commercial use. For a homelab user who already has an IPTV subscription and wants to stop squinting at a clunky interface, the case is simple. For anyone building something commercial or requiring long-term vendor stability, it’s a riskier bet than the star count implies.
Sources
-
NeonXI (technomancer702), r/selfhosted — “I built a modern, self-hosted web IPTV player (Live TV, EPG, VOD) because existing ones felt clunky. Meet NodeCast TV.” https://www.reddit.com/r/selfhosted/comments/1pxb8il/i_built_a_modern_selfhosted_web_iptv_player_live/
-
github.awesome, Threads — “NodeCast TV — a self-hosted IPTV player that brings Live TV, Movies, and Series straight to your browser” (12K views). https://www.threads.com/@github.awesome/post/DS353FkkXnz/node-cast-tv-a-self-hosted-iptv-player-that-brings-live-tv-movies-and-series
-
Ethan Sholly, selfh.st — “Self-Host Weekly (2 January 2026)”. https://selfh.st/weekly/2026-01-02/
-
Dhruv Bhutani, XDA Developers — “I’ve found the best looking IPTV app you can self-host on your NAS” (Oct 23, 2025). https://www.xda-developers.com/ive-found-the-best-looking-iptv-app-you-can-self-host-on-your-nas/
Primary sources:
- GitHub repository and README: https://github.com/technomancer702/nodecast-tv (1,088 stars, GPL-3.0 license, 228 commits)
Features
Authentication & Access
- Single Sign-On (SSO)
Integrations & APIs
- REST API
Media & Files
- Media Transcoding
Related Media & Streaming Tools
View all 334 →Immich
95KHigh-performance self-hosted photo and video management — automatic backup, ML-powered search, and a Google Photos-like experience on your own server.
Jellyfin
49KThe volunteer-built media solution that puts you in control of your media. Stream movies, shows, music, and photos to any device from your own server.
PhotoPrism
39KAI-Powered Photos App for the Decentralized Web. Tag and find pictures automatically without getting in your way.
Cobalt
39KSave what you love without ads, tracking, paywalls or other nonsense. Just paste the link and you're ready to rock.
qBittorrent
36KAn open-source software alternative to uTorrent. Feature-rich and runs on all major platforms.
SRS
29KSimple, high efficiency, realtime video server. Supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181.