OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

Check your Olivetin stack to be sure the timezone is set correctly there. For example, mine is:

TZ=US/Mountain

If you want to be absolutely sure the correct timezone is used inside the container, exec into it and:

root@olivetin:/# date
Mon Jul  7 19:08:34 MDT 2025

New bnhf/olivetin:latest (aka bnhf/olivetin:2025.07.09) pushed today with a change to the way the Standard Error output and debug information are treated.

The original idea was for users to view output from a particular Action in Standard Output, and to leave Standard Error closed unless there was an issue that required deeper inspection. However, a fair number of users that have posted in this thread appear to have both types of output open at all times.

So, what I've decided to do is to redirect debug output to a specific file for each Action. That file can now be viewed, when needed, using its own Action. This way, if there are no actual errors, Standard Error won't even show as an option.

For example, with the OliveTin Post-Install Healthcheck, note that there is no Standard Error section to expand:

If you'd like to look at the debug output for a particular Action, or if you want to post it (being aware of possible sensitive data in some debug output), you can go to this new Action:

screenshot-htpc6-2025_07_09-14_28_37

EDIT: Forgot to mention this change also has a positive impact on what displays in the OliveTin Portainer log. It's no longer a mixture of Standard Output and Standard Error (which was almost always debug info). Now it's Standard Output only, resulting in a much cleaner looking startup log.

HELP! I accidentally stopped and removed my perfectly functioning Olivetin container. Is there an easy way to recover it without starting from scratch?

Just the container? Is the olivetin stack still there? If so, you might try stopping the stack and then starting it again.

Unfortunately, the stack is gone. The only thing remaining is the latest image or two.

Go ahead and delete that image, and use this EZ-Start process:

Two variables will get you OliveTin EZ-Start running, then the parent path to where your OliveTin data is stored is about the only mandatory variable. In your case you should probably have the data for the ALERT_xxx variables too, as I know you use e-mail alerts.

Either delete your current OliveTin Portainer token before you start, or re-use your current one if you have it saved somewhere.

I have been curious to test your Olivetin EZ-Start. Now, I have a good reason to give it a shot.
Fortunately, I still have my Portainer token saved. I may have found some of the other variables I used before. :crossed_fingers:

So, I almost have it back to normal.

I think that I may have my DVR_SHARE and/or LOGS_SHARE folders incorrectly identified.
From the Olivetin Post-Install Healthcheck:

/volume1/ChannelsDVR

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
/volume1/ChannelsDVR

----------------------------------------

Checking that your selected Channels DVR server's log files (/mnt/192.168.1.100-8089_logs) are accessible:
Folders with the names data and latest should be visible...

total 0
drwxrwxrwx 1 root   root       36 May  4 13:50 #recycle
d--------- 1 root   root      124 Jun 19 20:19 .
drwxr-xr-x 1 root   root      124 Jul 11 15:59 ..
drwxrwxrwx 1 root   root       24 Jun 17 09:58 @eaDir
d--------- 1   1026 users    1320 Jul 11 00:05 Database
d--------- 1   1026 users  491078 Jul 11 15:36 Images
d--------- 1   1026 users      28 May  5  2024 Imports
d--------- 1   1026 users      32 Aug 31  2022 Logs
d--------- 1   1026 users  224824 Jul 11 02:59 Movies
drwx------ 1 242120 242120     16 Dec  5  2022 PlayOn
d--------- 1   1026 users      40 Jun 19 20:19 Streaming
d--------- 1   1026 users   15646 Jul 10 19:59 TV

Docker reports your current LOGS_SHARE setting as...
/volume1/ChannelsDVR

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
/var/packages/ChannelsDVR/target/channels-dvr

I fixed it. I dug around to find that you helped me with this exact problem on my first Olivetin deployment.

I needed to make the following change to the ENV:
LOGS_SHARE=/var/packages/ChannelsDVR/target/channels-dvr

I also see that the Health check I ran today suggested that very same thing. My aging brain couldn't quite put it all together.

1 Like

I've moved my channelsDVR server over to a MINI-S PC running Ubuntu and that seems to be working. So I ran the EZ start to install OliveTin and got that running. Now I want to run the Fix YouTube Thumbnails script but I'm getting errors. Here is the Standard Error. Any ideas what might be happening?

+ for id in "${ids[@]}"
+ echo 'Fixing thumbnails for video_group videos-e1a94ec86060971a293bcf7223a9a6998d15ef92bd2ef48e44e4984d58a30fef'
+ ruby /config/fix_thumbnails.rb videos-e1a94ec86060971a293bcf7223a9a6998d15ef92bd2ef48e44e4984d58a30fef
/usr/lib/ruby/2.7.0/net/http.rb:960:in `initialize': Failed to open TCP connection to :8089 (Connection refused - connect(2) for nil port 8089) (Errno::ECONNREFUSED)
	from /usr/lib/ruby/2.7.0/net/http.rb:960:in `open'
	from /usr/lib/ruby/2.7.0/net/http.rb:960:in `block in connect'
	from /usr/lib/ruby/2.7.0/timeout.rb:95:in `block in timeout'
	from /usr/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
	from /usr/lib/ruby/2.7.0/net/http.rb:958:in `connect'
	from /usr/lib/ruby/2.7.0/net/http.rb:943:in `do_start'
	from /usr/lib/ruby/2.7.0/net/http.rb:932:in `start'
	from /usr/lib/ruby/2.7.0/net/http.rb:1483:in `request'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty/request.rb:157:in `perform'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:621:in `perform_request'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:531:in `get'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:654:in `get'
	from /config/fix_thumbnails.rb:7:in `<main>'
/usr/lib/ruby/2.7.0/net/http.rb:960:in `initialize': Connection refused - connect(2) for nil port 8089 (Errno::ECONNREFUSED)
	from /usr/lib/ruby/2.7.0/net/http.rb:960:in `open'
	from /usr/lib/ruby/2.7.0/net/http.rb:960:in `block in connect'
	from /usr/lib/ruby/2.7.0/timeout.rb:95:in `block in timeout'
	from /usr/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
	from /usr/lib/ruby/2.7.0/net/http.rb:958:in `connect'
	from /usr/lib/ruby/2.7.0/net/http.rb:943:in `do_start'
	from /usr/lib/ruby/2.7.0/net/http.rb:932:in `start'
	from /usr/lib/ruby/2.7.0/net/http.rb:1483:in `request'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty/request.rb:157:in `perform'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:621:in `perform_request'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:531:in `get'
	from /var/lib/gems/2.7.0/gems/httparty-0.23.1/lib/httparty.rb:654:in `get'
	from /config/fix_thumbnails.rb:7:in `<main>'```

How do results look when you run the OliveTin Post-Install Healthcheck? It looks like you're not reaching your CDVR server in what you posted. Did you install Ubuntu Server or Ubuntu Desktop?

1 Like

I believe desktop. Was that a mistake?

Checking your OliveTin-for-Channels installation...
(extended_check=false)

OliveTin Container Version 2025.04.22
OliveTin Docker Compose Version 2025.03.26

----------------------------------------

Checking that your selected Channels DVR server (:8089) is reachable by URL:
HTTP Status: 200 indicates success...

curl: (3) URL using bad/illegal format or missing URL
HTTP Status: 000
Effective URL: http://:8089

----------------------------------------

Checking that your selected Channels DVR server's data files (/mnt/-8089) are accessible:
Folders with the names Database, Images, Imports, Logs, Movies, Streaming and TV should be visible...


If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...

----------------------------------------

Checking that your selected Channels DVR server's log files (/mnt/-8089_logs) are accessible:
Folders with the names data and latest should be visible...


If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...

----------------------------------------

Checking if your Portainer token is working on ports 9000 and/or 9443:

Portainer http response on port 9000 reports version 
Portainer Environment ID for local is 
Portainer https response on port 9443 reports version 
Portainer Environment ID for local is 

----------------------------------------

Here's a list of your current OliveTin-related settings:

HOSTNAME=olivetin
CHANNELS_DVR=:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=[Redacted]@
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_HOST=
PORTAINER_PORT=9443
PORTAINER_ENV=2

----------------------------------------

Here's the contents of /etc/resolv.conf from inside the container:

# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.

nameserver 127.0.0.11
search 
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [host(192.168.0.80) host(192.168.0.166) host(100.100.100.100)]
# Overrides: [search]
# Option ndots from: internal

----------------------------------------

Here's the contents of /etc/hosts from inside the container:

127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.3	olivetin```

Generally you want to use Server, unless you have a specific reason to use Desktop. You'll have the occasional unexpected hoop to jump through with Desktop.

Check your OliveTin Portainer stack, it doesn't appear you have a value entered for CHANNELS_DVR_HOST or PORTAINER_HOST at a minimum.

How embarrassing. I installed OliveTin via EZ-Start but I did not continue to follow your remaining directions on generating the environment variables.

I'm getting the Fix YouTube thumbnails to work. Thanks for the help.

@bnhf , After reinstalling OliveTin, I notice that it seems to behave a little differently now.

In the past, when choosing one of the actions, the window which opened to make entries for some of the variables used to populate with the last used previous value.

For instance, dvr: 192.168.1.100:8089, as below:

Now, it seems to only populate with blanks or default arguments,
For instance, dvr: none, as below:

To fill the variable entry box, I have to clear the "none" value and click or start typing. Then, previous values appear in a drop-down list.

Could you post the full Standard Output from the OliveTin Post-Install Healthcheck. The one from 9 days ago is only part of the output.

Of Course! Here's the whole thing.

Checking your OliveTin-for-Channels installation...
(extended_check=false)

OliveTin Container Version 2025.07.10
OliveTin Docker Compose Version 2025.03.26

----------------------------------------

Checking that your selected Channels DVR server (192.168.1.100:8089) is reachable by URL:
HTTP Status: 200 indicates success...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1276  100  1276    0     0  1246k      0 --:--:-- --:--:-- --:--:-- 1246k
HTTP Status: 200
Effective URL: http://192.168.1.100:8089/

----------------------------------------

Checking that your selected Channels DVR server's data files (/mnt/192.168.1.100-8089) are accessible:
Folders with the names Database, Images, Imports, Logs, Movies, Streaming and TV should be visible...

total 0
drwxrwxrwx 1 root   root       36 May  4 13:50 #recycle
d--------- 1 root   root      124 Jul 15 09:02 .
drwxr-xr-x 1 root   root      124 Jul 15 07:06 ..
drwxrwxrwx 1 root   root       24 Jun 17 09:58 @eaDir
d--------- 1   1026 users    1320 Jul 19 19:34 Database
d--------- 1   1026 users  511682 Jul 20 13:55 Images
d--------- 1   1026 users      28 May  5  2024 Imports
d--------- 1   1026 users      32 Aug 31  2022 Logs
d--------- 1   1026 users  225866 Jul 20 05:14 Movies
drwx------ 1 242120 242120     16 Dec  5  2022 PlayOn
d--------- 1   1026 users      40 Jun 19 20:19 Streaming
d--------- 1   1026 users   15950 Jul 18 13:29 TV

Docker reports your current DVR_SHARE setting as...
/volume1/ChannelsDVR

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
/volume1/ChannelsDVR

----------------------------------------

Checking that your selected Channels DVR server's log files (/mnt/192.168.1.100-8089_logs) are accessible:
Folders with the names data and latest should be visible...

total 4
drwxr-xr-x 1 242120 242120  200 Jul 19 19:26 .
drwxr-xr-x 1 root   root    124 Jul 15 07:06 ..
drwxr-xr-x 1 242120 242120  154 Jul 16 01:10 2025.07.16.0128
drwxr-xr-x 1 242120 242120  154 Jul 16 23:11 2025.07.17.0309
drwxr-xr-x 1 242120 242120  154 Jul 17 16:12 2025.07.17.2006
drwxr-xr-x 1 242120 242120  154 Jul 18 16:30 2025.07.18.2058
drwxr-xr-x 1 242120 242120  154 Jul 19 09:41 2025.07.19.0550
drwxr-xr-x 1 242120 242120  154 Jul 19 19:25 2025.07.19.2021
drwxr-xr-x 1 242120 242120 2990 Jul 20 13:52 data
lrwxrwxrwx 1 242120 242120   15 Jul 19 19:25 latest -> 2025.07.19.2021

Docker reports your current LOGS_SHARE setting as...
/var/packages/ChannelsDVR/target/channels-dvr

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
/var/packages/ChannelsDVR/target/channels-dvr

----------------------------------------

Checking if your Portainer token is working on ports 9000 and/or 9443:

Portainer http response on port 9000 reports version 2.27.9
Portainer Environment ID for local is 2
Portainer https response on port 9443 reports version 2.27.9
Portainer Environment ID for local is 2

----------------------------------------

Here's a list of your current OliveTin-related settings:

HOSTNAME=olivetin
CHANNELS_DVR=192.168.1.100:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=[Redacted]@gmail.com
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@yahoo.com
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=192.168.1.100
PORTAINER_PORT=9443
PORTAINER_ENV=2

----------------------------------------

Here's the contents of /etc/resolv.conf from inside the container:

nameserver 127.0.0.11
nameserver 2603:8001:7b00:4f16:ea9f:80ff:fe97:2c15
options ndots:0

----------------------------------------

Here's the contents of /etc/hosts from inside the container:

127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
192.168.48.3	olivetin

Your healthcheck looks good. Could this be something with the browser? Have you tried clearing cached images and files from your browsing history? Or maybe try another browser to see if it looks the same?

Just tried both suggestions. I cleared cached images and files on Chrome and the outcome is the same. Same with the Edge browser on a different computer.

Maybe I've gone batty and remembering incorrectly. I could swear that it used to at least keep the first entry (dvr: ) on some of these actions. It saved a lot of keystrokes when doing repetitive tasks like looking up Gracenote ID's.

If you have a single DVR specified it should be filled in for you. If you have multiple DVRs you should have a dropdown to choose between them.

Can you post the following from the env vars section of your OliveTin stack?:

CHANNELS_DVR_HOST=media-server8
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=utheater-pc
CHANNELS_DVR2_PORT=8089

Post any env vars containing CHANNELS_DVR...