Project One-Click: All-in-One Installations of Docker Extensions and CDVR Custom Channels

Using the one-click action, the stack was created and the plex-for-channels container launched. The Plex TV-NoEPG source was created in Channels DVR. However, I'm not seeing the creation of the regular (gracenote=include) Plex TV source.

Olivetin standard output:

JSON response from http://192.168.1.100:9000/api/stacks?type=2&method=string&endpointId=2:
{"Id":128,"Name":"plex-for-channels","Type":2,"EndpointId":2,"SwarmId":"","EntryPoint":"docker-compose.yml","Env":[{"name":"TAG","value":"latest"},{"name":"HOST_PORT","value":"7779"},{"name":"PORT","value":"7777"},{"name":"HOST_DIR","value":"/volume1/docker"}],"ResourceControl":{"Id":54,"ResourceId":"2_plex-for-channels","SubResourceIds":[],"Type":6,"UserAccesses":[],"TeamAccesses":[],"Public":false,"AdministratorsOnly":true,"System":false},"Status":1,"ProjectPath":"/data/compose/128","CreationDate":1739829386,"CreatedBy":"john","UpdateDate":0,"UpdatedBy":"","AdditionalFiles":null,"AutoUpdate":null,"Option":null,"GitConfig":null,"FromAppTemplate":false,"Namespace":"","IsComposeFormat":false}
true
{"error":"invalid source url: Get \"http://192.168.1.100:7779/plex/playlist.m3u?regions=local\u0026gracenote=include\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)"}
true

I had, then removed, a "sleep" between creating the stack and creating the CDVR Custom Channels Sources.

Looks like I need to add a small delay back in, since the first source creation failed and the second succeeded.

1 Like

That sounds about right... Let me know when you need me to check it out again.

I am setting up olivetin for the first time, I followed the video, but I feel like the env variables are wrong, also can I delete the alert email lines? Thank you!

You need to replace the example values with those that are correct for your setup. You can use LAN IP addresses instead of hostnames, if you prefer.

In the Docker Compose, there are comments that describe what to enter for each env var. Look at those, and maybe watch the video again

Also, as a reminder, you and I spent a fair amount of time setting up OliveTin before. You were using OliveTin to create a custom M3U based on a channel collection as I recall.

1 Like

Also, instead of a screenshot

2 Likes

Yes, I do recall your assistance and it’s very appreciative. The problem before was that I only pulled the docker image and did not properly install olivetin as its intended to be installed.

Take a look at the comments in the OliveTin Docker Compose. That should give you a pretty good idea of what's needed for env var values.

Let me know if you have specific questions, and I'll point you in the right direction.

3 Likes

I was seeing the same error as you, and it seemed impervious to adding delays. Eventually, I decided to delete the contents of the new bound plex data directory (/data/plex for me, but different for you), in addition to the Custom Channels sources and the stack.

This worked, and I was able to repeat that result today. Could you give this a try, and see if it clears things up on your end too?

Sure, happy to help if I can. We're on the road this morning. I'll give it a shot this afternoon.

I ran the updated Plex project-one-click action this afternoon. I'm still only getting the NoEPG source.
Looks like "invalid source url" error on the results for the "gracenote=include" source.
Here's the output:

JSON response from http://192.168.1.100:9000/api/stacks?type=2&method=string&endpointId=2:
{"Id":129,"Name":"plex-for-channels","Type":2,"EndpointId":2,"SwarmId":"","EntryPoint":"docker-compose.yml","Env":[{"name":"TAG","value":"latest"},{"name":"HOST_PORT","value":"7779"},{"name":"PORT","value":"7777"},{"name":"HOST_DIR","value":"/volume1/docker"}],"ResourceControl":{"Id":55,"ResourceId":"2_plex-for-channels","SubResourceIds":[],"Type":6,"UserAccesses":[],"TeamAccesses":[],"Public":false,"AdministratorsOnly":true,"System":false},"Status":1,"ProjectPath":"/data/compose/129","CreationDate":1739999543,"CreatedBy":"john","UpdateDate":0,"UpdatedBy":"","AdditionalFiles":null,"AutoUpdate":null,"Option":null,"GitConfig":null,"FromAppTemplate":false,"Namespace":"","IsComposeFormat":false}
true
{"error":"invalid source url: Get \"http://192.168.1.100:7779/plex/playlist.m3u?regions=local\u0026gracenote=include\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)"}
true

I have a previous Plex source already on Channels DVR, which I'm hesitant to remove as I have some recordings scheduled. It's called "Plex". Not Plex TV as the action usually adds. Would this present a conflict, and prevent the action from adding a new source with a similar name?

Did you also remove the contents of the bound data directory? /volume1/docker/plex for you I believe...

Shouldn't be an issue.

Oh, I had not thought of that. :thinking: I'll give it another shot.

I just deleted the contents of my /volume1/docker/plex directory. I also went an extra step of deleting and recreating the /plex subdirectory.

After running the Plex one-click action, I'm still only getting the "Plex TV-NoEPG" source. :man_shrugging:

I am just not getting this, I edited the docker compose file and followed the video

I get the feeling you're not reading the comments in the Compose. Like this one (though I do see the wording could be better in this case):

So go back to the original OliveTin compose, and make NO changes to it. Everything specific to your installation, is set in the Environment variables section of the Portainer stack.

You'll want to set all of these, with appropriate (correct) values for your server, in order to have full OliveTin-for-Channels functionality:

TAG=latest
DOMAIN=tailxxxxx.ts.net
HOST_PORT=1337
CHANNELS_DVR_HOST=local-server
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=another-server
CHANNELS_DVR2_PORT=8089
CHANNELS_CLIENTS=appletv4k-den firestick-bedroom
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=username@gmail.com
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
ALERT_EMAIL_TO=username@gmail.com
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Mountain
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
LOGS_SHARE=/mnt/channelsdvr
TUBEARCHIVIST_SHARE=/mnt/dvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host
PORTAINER_PORT=9443

Post a version of this list of variables, in text form, with your values substituted in -- and I'll give you feedback on any that don't look correct. If you use Advanced mode when editing your env vars, you can copy and paste them in a form like the above.

EDIT: Don't publicly post (i.e. [REDACT]) any of your e-mail values, your Portainer token or your Tailnet domain (if you have one) -- anything else is fine.

2 Likes

Yes, email is required for most of the Actions that send alerts. Setup an "app" password using Gmail or Yahoo.

Your values look pretty good, though I'm adding comments to those that I know/suspect are wrong:

TAG=latest
DOMAIN=localdomain # This may, or may not be correct for your LAN, so adjust if needed
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.7.10X
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=
CHANNELS_DVR2_PORT=
CHANNELS_CLIENTS= # Enter the IP addresses of your Channels clients (space separated) for onscreen alerts
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Arizona
HOST_DIR=/volume1/docker # Create a directory called olivetin in this directory before deploying the container (this is a Synology only requirement)
DVR_SHARE=/volume1/docker/channelsdvr
LOGS_SHARE=/volume1/docker/channelsdvr # This should be the path to your CDVR executables
TUBEARCHIVIST_SHARE=/volume1/docker/channelsdvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host #This should be changed to the same IP you used above for CHANNELS_DVR_HOST, since everything is on the same server
PORTAINER_PORT=9443

Couple notes

You will need to create these directories on your Synology before deploying the Olive Tin stack
/volume1/docker/channelsdvr and /volume1/chDVRtve
/volume1/docker/channelsdvr is where the Channels executables and log file goes
/volume1/chDVRtve is where it will record to

If either of those already exist and are being used, you have to choose other directories.

This needs to be a writable parent directory on Synology. Most use:

HOST_DIR=/volume1/docker

Then create a directory called olivetin under that parent before deploying OliveTin.

1 Like