What's new

Plex IPTV + Terrestrial

Went down a bit of a rabbit hole today trying to get Plex working with both terrestrial live TV and IPTV.

The original plan was to use xTeVe to handle IPTV, feeding it into Plex with XMLTV EPG data. Safe to say, it didn’t go to plan - ran into problems no matter what I tried.

I ended up not trying xTeVe and giving Threadfin and StreamMaster a go instead.

First snag: Plex won’t let you use its own EPG for one tuner and XMLTV for another. That forced me to try combining my HDHomeRun and IPTV sources in Threadfin. It technically worked, but I had to set up guide2go with Schedules Direct to get EPG data. Even then, that data didn’t show up in Threadfin’s XML endpoint - which only showed a channel listing, so I would’ve had to redo all the mapping in Plex - again.

Then I gave StreamMaster a shot. It looked promising and handled Schedules Direct natively, which meant I didn’t need guide2go. The approach made sense, but the interface was a buggy mess. Worse still, some channels wouldn’t play - seems like anything using video/mp2t wasn’t supported.

I’m not giving up - I want a single unified view of all my channels in Plex - but has anyone else tackled this and found a setup that actually works? Any tips appreciated.
 
I have seen many struggle to set this up just as you are experiencing. Some have succeeded but at great effort and then constant tweaking to keep it going.
Keep life simple, use systems as they were intended, PLEX for movies etc, and a top recommended Media Player for Live TV channels. Simple to set and minimal tweaking thereafter.

At end of day surely your priority is to sit and watch either one or other, with albeit a flick or two of the source button
 
Scrapped everything and started again.

I actually ended up using Channels DVR + m3u-editor to do it. Channels supports iptv and hdhomeRun out of the box - sadly I have to pay for it, but atleast I don't have to pay for schedules direct. I found deep in a google search that channels added the ability to export to HDH streams in December - it was pretty much a case of just adding that to Plex and then it pretty much just worked.

Using m3u-editor to proxy the iptv m3u and dynamically filter it - that just gets added to channels.

Everything gets forced through a VPN kill switch with glueton.

Lot of searching, but I believe this is about as easy as it gets.

If anyone's interested:
Code:
services:
  iptv-glueton:
    image: "qmcgaw/gluetun:v3.40.0"
    container_name: iptv-glueton
    restart: unless-stopped
    environment:
      - TZ=${TZ}
      - PUID=${PUID}
      - PGID=${PGID}
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=openvpn
      - OPENVPN_USER=${NORDVPN_USERNAME}
      - OPENVPN_PASSWORD=${NORDVPN_PASSWORD}
      - SERVER_COUNTRIES=${NORDVPN_COUNTRIES}
      - SERVER_CATEGORIES=${NORDVPN_CATEGORIES}
      - FIREWALL_OUTBOUND_SUBNETS=${FIREWALL_OUTBOUND_SUBNETS}
    ports:
      - 8080:80 # Speedtest Tracker
      - 8089:8089 # Channels DVR
      - 36400:36400 # m3a editor app
      - 36800:36800 # m3a editor websockets/broadcasting
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - "/var/lib/iptv/gluetun:/gluetun"
    extra_hosts:
      - "m3u-editor.mydomain.lan:10.10.1.1"

  iptv-speedtest-tracker:
    image: "lscr.io/linuxserver/speedtest-tracker:latest"
    container_name: iptv-speedtest-tracker
    restart: unless-stopped
    environment:
      - TZ=${TZ}
      - PUID=${PUID}
      - PGID=${PGID}
      - APP_KEY=${SPEEDTEST_APP_KEY}
      - DB_CONNECTION=sqlite
    volumes:
      - "/var/lib/iptv/speedtest:/config"
    # Remove ports to ensure traffic is routed via the VPN container
    # ports:
    #   - 8080:80
    #   - 8443:443
    network_mode: "service:iptv-glueton" # Use iptv-glueton's network
    depends_on:
      iptv-glueton:
        condition: service_healthy

  channels-dvr:
    image: "fancybits/channels-dvr:latest"
    container_name: channels-dvr
    restart: unless-stopped
    environment:
      - TZ=${TZ}
      - PUID=${PUID}
      - PGID=${PGID}
    volumes:
      - "/var/lib/iptv/channels-dvr:/channels-dvr"
      - "/mnt/tank/Recordings:/shares/DVR"
    # Remove ports to ensure traffic is routed via the VPN container
    # ports:
    #   - 8089:8089
    network_mode: "service:iptv-glueton" # Use iptv-glueton's network
    depends_on:
      iptv-glueton:
        condition: service_healthy
    devices:
      # VAAPI Devices
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
      
  m3u-editor:
    image: sparkison/m3u-editor:latest
    container_name: m3u-editor
    restart: unless-stopped
    environment:
      - TZ=${TZ}
      - PUID=${PUID}
      - PGID=${PGID}
      - APP_URL=${M3U_APP_URL}
      - REVERB_HOST=${M3U_REVERB_HOST}
      - REVERB_SCHEME=${M3U_REVERB_SCHEME}
    volumes:
      - /var/lib/iptv/m3u-editor:/var/www/config
    network_mode: "service:iptv-glueton" # Use iptv-glueton's network
    # Remove ports to ensure traffic is routed via the VPN container
    # ports:
    #   - 36400:36400 # app
    #   - 36800:36800 # websockets/broadcasting
    depends_on:
      iptv-glueton:
        condition: service_healthy
    devices:
      # VAAPI Devices
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
 
Back
Top