For those that would like to use Docker and Portainer where possible, I've put together this single Portainer-Stack where you can spin-up Stirr, SamsungTV+, FrndlyTV and PlutoTV all at the same time:
If you're new to Docker, and wanting to install it on a linux-based machine, I'd recommend the Docker "convenience script". Here's the Debian version, but there are versions for most popular linux distros:
https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script
If you have Docker installed but not Portainer, consider this the last time you'll need to execute anything Docker related from the command line:
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
cr.portainer.io/portainer/portainer-ce:latest
Portainer can then be accessed through your favorite browser at http://[hostname or ip]:9000 or https://[hostname or ip]:9443
And here's the promised stack, which will launch containers for the four mentioned TV services:
version: '3.9'
services:
# GitHub home for this project with setup instructions: https://github.com/robbiet480/stirr-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/robbiet480/stirr-for-channels
stirr-for-channels:
image: robbiet480/stirr-for-channels:latest
container_name: stirr-for-channels
ports:
- 8181:80
restart: unless-stopped
# GitHub home for this project: https://github.com/matthuisman/samsung-tvplus-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/matthuisman/samsung-tvplus-for-channels
samsung-tvplus-for-channels:
image: matthuisman/samsung-tvplus-for-channels:latest
container_name: samsung-tvplus-for-channels
ports:
- 8182:80
restart: unless-stopped
# GitHub home for this project: https://github.com/matthuisman/frndlytv-for-channels
# Matt Huisman's webpage for this project: https://www.matthuisman.nz/2021/11/frndly-tv-for-channels.html
# Docker Hub home for this project:
frndlytv-for-channels:
image: matthuisman/frndlytv-for-channels:latest
container_name: frndlytv-for-channels
environment:
- IP=${IP} # For Geo-locating FrndlyTV to a different area
- USERNAME=${USERNAME} # FrndlyTV username (the email you used to sign-up)
- PASSWORD=${PASSWORD} # FrndlyTV password (the password you chose when you signed-up)
ports:
- 8183:80
restart: unless-stopped
# GitHub home for this project: https://github.com/maddox/pluto-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/jonmaddox/pluto-for-channels
pluto-for-channels:
image: jonmaddox/pluto-for-channels:latest
container_name: pluto-for-channels
ports:
- 8184:80
restart: unless-stopped
You'll need to add a couple of environment variables in the section below your Docker-Compose. The FrndlyTV extension requires the username and password you used when you setup your account. It should look like this when you are done (no quotes required or desirable around the values):
Setup instructions for each, which are added as "Custom Channels" from the Channels DVR settings area, can typically be found on the GitHub page for the project.
You can also add a project called Watchtower to easily update your running containers on demand. Create another stack called watchtower with the following compose:
version: '3.9'
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- WATCHTOWER_RUN_ONCE=true
labels:
- 'com.centurylinklabs.watchtower.enable=true'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Watchtower will now run once and then show as "exited". Leave it in this state until the next time you want to check for container updates. Select it with the tick-box in Portainer-Containers, click "Start", and it will update any running container to the latest version.
If you don't want it to update a specific container for any reason, stop that container before starting Watchtower. That container can then be re-started once Watchtower has completed. Watchtower will update Portainer, and itself, as well.
A full-on Channels DVR related set of containers might look something like this:
You can see I'm also running several of the Channels HDMI encoder and capture projects, along with an orchestration system for multiple APC UPS units (battery backups for everything electronics related) and the excellent Tailscale mesh VPN to be able to access it all from outside the house without having to open any ports.