Creating custom "TV channel" streams in Plex using dizqueTV
If you've ever wanted to have a personalized TV channel, then dizqueTV is for you!
dizqueTV lets you create live IPTV channel streams from the media on your Plex server. So, if you have a library of kids shows, you can create a personalized TV stream that shows all of your kid's favorite shows. Or you can just use it to create a TV channel that just shows random content from your Plex server as background noise when you work. dizqueTV isn't specific to just creating channels in Plex, you can use the m3u links in any IPTV client.
In order to use this, you will need to have a Plex Pass subscription since that unlocks the Plex DVR that is used to set this up since dizqueTV mocks an HDHomeRun tuner and you add it to Plex as a DVR Tuner, which is only available to Plex Pass subscribers.
I will be doing this in Ubuntu 18.04.3 and both Plex and dizqueTV will be ran as Docker containers.
Creating a Plex container
I'm just following the instructions from here, slimmed down to meet my needs. You may need to modify the creation of the Plex container to suit your needs.
Since Plex's DVR setup requires an XMLTV file that is relative to the installation of Plex (which is a container), we have to create a shared path that will be mounted as a volume in both Plex and dizqueTV containers. This volume is where dizqueTV will save it's xmltv.xml file, and it is where Plex will be set to read the file from.
Create the shared folder to use as a volume:
# Create "share" volume for both plex and disquetv.
mkdir /home/docker/plex-share
I like to specify 'home' folders for containers, in a place like /home/docker, to make it easier to keep track of them. We'll do this for Plex and dizquetv.
Create the home folder for the Plex container:
# Create home for the plex container
mkdir /home/docker/plex
Create the Plex Media Server container and run it:
Docker CLI
# Create and run the Plex server container
# Replace '[YOUR SHARED MEDIA PATH]' with the local, full path to your media
docker run -d \
--name=plex \
--net=host \
-e PUID=1000 \
-e PGID=1000 \
-e VERSION=docker \
-e UMASK_SET=022 \
-v /home/docker/plex/config:/config \
-v [YOUR MEDIA PATH]:/media \
-v /home/docker/plex-share:/plex-share \
--restart unless-stopped \
linuxserver/plex
Docker Compose
If you want to use docker-compose, you can use this docker-compose.yml file for just the Plex container. Further below there will be an example docker-compose.yml file that contains both Plex and dizquetv.
Refer to this page for more detailed information about setting up Plex using docker: https://docs.linuxserver.io/images/docker-plex/#docker-compose-recommended-click-here-for-more-info
In a directory on your server, create the file docker-compose.yml
(e.g. ~/media-server/plex/docker-compose.yml
) and set its contents to the yaml below.
# Replace '[YOUR SHARED MEDIA PATH]' with the local, full path to your media
services:
# Plex - https://docs.linuxserver.io/images/docker-plex/
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
hostname: plex #optional
environment:
- PUID=1000
- PGID=1000
- TZ=America/Denver # Use your time zone
- VERSION=docker
- UMASK_SET=022
volumes:
- /home/docker/plex/config:/config
- [YOUR MEDIA PATH]:/media
- /home/docker/plex-share:/plex-share
restart: unless-stopped
You now can use docker-compose
(or docker compose
depending on your docker and docker compose version) to manage the container.
Pull an updated image for the container:
docker-compose pull
Start the container:
docker-compose up -d
Stop the container:
docker-compose stop
Remove the container:
docker-compose rm --stop -v -f
At this point you should configure your Plex server like any other server.
Create dizqueTV container
We're creating the dizqueTV container using the instructions here https://github.com/vexorian/dizquetv
Create the home folder for the dizqueTV container:
mkdir /home/docker/dizquetv
Touch 'xmltv.xml' for dizqueTV since it will get created as a directory if it does not exist prior to the container being created:
touch /home/docker/plex-share/dizquetv/xmltv.xml
Create the docker container for dizqueTV
Docker CLI
docker run -d --name dizquetv \
-p 8000:8000 \
-v /home/docker/dizquetv:/home/node/app/.dizquetv \
-v /home/docker/plex-share/dizquetv/xmltv.xml:/home/node/app/.dizquetv/xmltv.xml \
--restart unless-stopped \
vexorian/dizquetv:latest
Docker Compose
In a directory on your server, create the file docker-compose.yml
(e.g. ~/media-server/dizquetv/docker-compose.yml
) and set its contents to the yaml below.
services:
# DizqueTV - https://github.com/vexorian/dizquetv
dizquetv:
#image: vexorian/dizquetv:edge # Use edge release
image: vexorian/dizquetv:latest
container_name: dizquetv
network_mode: bridge
hostname: dizquetv #optional
volumes:
- /home/docker/dizuetv:/home/node/app/.dizquetv
- /home/docker/plex-share/dizquetv/xmltv.xml:/home/node/app/.dizquetv/xmltv.xml
ports:
- 8000:8000
restart: unless-stopped
You can use the same docker-compose
commands previously mentioned to manage the container.
Docker Compose Stack for Plex and DizqueTV
You can use use this docker-compose.yml
file if you wish to have both Plex and DizqueTV in the same stack, so when you start one, you start the other, etc.
# Replace '[YOUR SHARED MEDIA PATH]' with the local, full path to your media
services:
# Plex - https://docs.linuxserver.io/images/docker-plex/
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
hostname: plex #optional
environment:
- PUID=1000
- PGID=1000
- TZ=America/Denver # Use your time zone
- VERSION=docker
- UMASK_SET=022
- /home/docker/plex/config:/config
- [YOUR MEDIA PATH]:/media
- /home/docker/plex-share:/plex-share
restart: unless-stopped
# DizqueTV - https://github.com/vexorian/dizquetv
dizquetv:
#image: vexorian/dizquetv:edge # Use edge release
image: vexorian/dizquetv:latest
container_name: dizquetv
network_mode: bridge
hostname: dizquetv #optional
volumes:
- /home/docker/dizuetv:/home/node/app/.dizquetv
- /home/docker/plex-share/dizquetv/xmltv.xml:/home/node/app/.dizquetv/xmltv.xml
ports:
- 8000:8000
restart: unless-stopped
Configuring dizqueTV
If all goes well, you should be able to launch dizqueTV using the IP address and container port: http://your_ip_here:8000
Once you're able to get into dizqueTV, you will need to go to Settings->Plex and sign in to your Plex account so your Plex server can be used as a content source
You can go through the wiki page if you wish to read up on the other settings since we won't cover that here.
Adding channels to dizqueTV
dizqueTV isn't much use unless you actually have some channels, so click on 'Channels' and then the '+' button on the right:
From here, you should name your channel, set the channel # (this is what will appear in the Plex DVR Guide), the channel icon and the programming (content) for the channel.
Click '+' to the right of Programming in order to add some content to this channel:
Once you get into the Plex Library, you select your Plex server and then expand the library to locate the content you wish to add by clicking '+' on the right for each row you wish to add:
Once you're done adding various content, click 'Done'.
You will most likely want to randomize your content or otherwise organize it in a way so it isn't just one episode after another of the same show, so you will need to click 'Tools':
You will need to review the wiki page for more information about each specific setting, but for now I am just using 'Randomize' Block Shuffle
Once you're done editing the channel, click 'Add Channel'.
Now your new channel should appear in the channels list in dizqueTV:
Setting up Plex DVR
Now that you have your channels configured in dizqueTV, you will need to load up Plex and go to your server settings then Manage->Live TV & DVR.
You will need to add a new Plex DVR to your Plex server by clicking 'Set Up Plex DVR'. You can only have 1 DVR in Plex, so you must decide if you want to use dizqueTV or your current DVR. You can work around multiple sources by using the xteve PMS proxy, but that will be covered in another post.
Your dizqueTV DVR may appear in the devices found list, if it does, click it. If the dizqueTV DVR does not appear in the devices list, click 'Don't see your HDHomeRun device? Enter its network address manually"
We're going to be entering in the DVR address manually, use everything but HTTP://
Click 'Connect' and it will add your dizqueTV DVR to the list and then click 'Continue'
Now you should see all of your dizqueTV channels automatically populate. You should make sure 'Cable' is selected and your country is correct.
Click 'Continue' and you will be asked how you wish to setup the guide information. Click on 'Have an XMLTV guide on your server? ...' so we can specify the path to our xmltv.xml file to use it for our guide information.
Since we are using dizqueTV, we have to use the XMLTV file that we talked about earlier. This is the file that we setup at /home/docker/plex-share/dizquetv/xmltv.xml. The relative path inside the Plex container would be '/plex-share/dizquetv/xmltv.xml', and this is the path you enter into 'XMLTV GUIDE':
Clicking 'Continue' will take you to the page where you have to map your channels in the DVR to the guide. This should automatically populate but if it doesn't, go through and map them.
When you complete this it will update your guide and now when you navigate to "Live TV & DVR" on your Plex server, you should have your dizqueTV content!
I hoped this made sense.
Here is a video guide for the same thing
dizqueTV with OTA
I will be writing up some more posts about various dizqueTV and Plex setups. The next one I have in mind will be how to merge your dizqueTV channels with OTA channels taken from your HDHomeRun tuner, so they both appear in the same Live TV & DVR guide in Plex. Stay tuned!