While popular streamers (Plex, Emby, Jellyfin) have clunky, rudimentary support for IPTV, (when combined with ThreadFin, for example), hands-down the best experience for IPTV is the ChannelsDVR server.
Channels DVR is the IPTV app for cordcutters, and rather than run it locally on your own hardware, it's now possible to "elf-host" it!
What you'll need
- A ChannelsDVR subscription. These are $8/month, or $80/year, and are paid directly to Channels, not ElfHosted. This subscription also enables access to their tvOS, iOS, iPadOS, Android, Android TV, and Fire TV apps.
- The Channels DVR app from ElfHosted. The app is subject to our tiered discounts, so (for example, Ranger users get 44% off, making it $10/month)
- A free Tailscale account, installed and configured on any devices you want to use with Channels.
Optional extras
If you want to record with Channels DVR (as opposed to just streaming), you will want somewhere to record to. ElfHosted doesn't offer any storage, but we will "bolt on" your existing cloud storage. Popular options are Hetzner Storageboxes, or B2 buckets (again, subject to tiered discounts)
Getting Started
Step 1
The first time you launch Channels DVR, you'll see the welcome screen:

Simply choose "Set Up" to proceed.
Step 2
Now, it will try to onboard you and connect your server to your Channels DVR account, but you'll run into a minor obstacle (with an easy fix) - the onboarding workflow tries to redirect you to a URL like this: http://10.2.10.84:8089/auth/confirm?code=12345abc
However, you simply need to replace everything before /auth/
with your personal channels URL, so the above would become https://<your username>-channelsdvr.elfhosted.com/auth/confirm?code=12345abc
Note: Remember, your URL may end in either .com
or .cc
.
Step 3
Once you have authorized your server and linked it to your Channels account, you need to choose your storage location:
- Live TV without recording: Please use
/tmp
as your storage path (will be wiped every time the pod restarts) - Live TV with recording: Please use the storage mount you elected to "bolt on", for example "/storage/storagebox-a/channels"
Step 4
The next step is to add your source(s). There are a variety of options, which are entirely up to you.
Step 5
The final step is to enable the ability to connect your client devices for streaming. This is accomplished using Channels DVR's built-in Tailscale compatibility.
Within the settings for Channels, navigate to the Remote Streaming section under General Settings. Leave Remote Streaming disabled, but do enable Tailscale. click the button to "Link your Tailscale account".
On your client devices, choose "Connect to Channels DVR" and the "At Home" option. Simply input the IP address shown in the Tailscale settings listed under the Remote Streaming section in your settings.

Step 6
Add the (free) Tailscale app to your client devices and connect it to your Tailscale account. On your client devices, within the Channels DVR app, choose "Connect to Channels DVR" and the "At Home" option. Enter the IP address shown in the Tailscale settings listed under the Remote Streaming section in your Channels DVR server.
That's it! Take some time to explore the capabilities and additional settings available with your new Channels DVR server!