Plex and USTVGO for Live TV an for FREE using Docker!

Plex

Locast shutdown and I’ve been looking replacement where I could use Plex to watch live TV. I found USTVGO which is completely free and while it worked fine using my TV’s web browser I thought is there any to get this with Plex and USTVGO integrated.

The Solution

I found a project called Cabernet which included a USTVGO plugin and can act as a HD Homerun device on your network. Unfortunately I found the documentation at the time of this post almost non-existent other than if you’re running windows and just want to run an exe and create a simple config.ini file.

Well I would prefer to run this as a Docker container so I searched for one… Nothing. Okay so I cloned the Cabernet GitHub repository and worked on getting a multi-arch docker image so I could run this in my Docker Swarm running on Raspberry Pi 4’s. While the Cabernet GitHub did contain some Dockerfiles I ran into too many problems until I switched from an Alpine based image to an official Python based image. Here’s my Dockerfile if you want try building one for yourself or you can use my multi-architecture Docker image here.

Dockerfile

FROM python:3.9.10-slim
#RUN apk add --no-cache --update bash tzdata ffmpeg py3-cryptography py-requests && \
RUN apt-get update && apt-get install -y --no-install-recommends bash tzdata ffmpeg curl && \
    apt-get install -y --no-install-recommends gcc musl-dev python3-dev libffi-dev openssl libssl-dev cargo && \
    python -m pip install --upgrade pip && \
    pip3 install requests && \
    pip install cryptography --no-binary=cryptography && \
    apt-get remove -y gcc musl-dev python3-dev libffi-dev && \
    rm -rf /var/lib/apt/lists/* 
    
RUN groupadd -g 1002 pies && \
useradd -u 1004 -g pies -s /bin/sh pi-slave

COPY *.py /app/
COPY lib/ /app/lib/
COPY plugins /app/plugins
RUN touch /app/is_container

#USER 1004:1002

ENTRYPOINT ["python3", "/app/tvh_main.py"]

You will have to create a config.ini that contains the following and setup you Docker volumes accordingly

[ustvgo_default]
label = USTVGO Instance

So now that we have our Docker image its time to get our container up and running! Here’s my Docker-compose file

version: "3"
services:
  cabernet:
    image: eblabs/cabernet
    environment:
      - PUID=1000
      - PGID=1000
    ports:
      - "6077:6077"
      - "1900:1900/udp"
      - "5004:5004"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /mnt/swarm/cabernet:/app/data
    networks:
      - proxy
    restart: unless-stopped
networks:
  proxy:
    external: true

Now we should be able to access the web interface of Cabernet at http://yourdockerhost:6077

Cabernet Home Page

Now let’s enable the HD Homerun functionality

To make things easier lets change the settings to advanced by default. This setting is found at Internal->Display and change the Display Level to “3-Advanced”

Cabernet Internal Settings

Now let’s enable this container as a virtual HD Homerun at Clients->HDHomeRun and uncheck disable_hdhr

Cabernet HDHomeRun Settings

Now you should change your plex_accessible_ip under Clients->Web Sites to the IP address of your Docker host

Cabernet Web Sites Settings

Adding Cabernet as a Plex DVR

On your Plex server go into settings and find Live TV & DVR. Click Add Device, If it Plex doesn’t find it try entering the address http://yourhost:6077 and then go thru the wizard…

Plex USTVGO DVR

Now I did have to manually match a bunch of channels and your local stations most likely won’t be local but you still will get the national programming on your “local” stations

Live TV in Plex

Posted in DockerPlexRaspberry PiSoftware

Tags - DockerLive TVPlex