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

You should double check your changes are still in deletelogs.sh
I'm not sure when it happens, but with the default UPDATE_SCRIPTS=true, it will overwrite the script files.

Your right it changes once I restarted container. I made the change and tested and it worked I believe, here is result:

foreground.sh is exiting for deletelogs with exit code 0

Your Channels DVR Server's /dvr directory needs to be bound to this container
One time run mode used...
foreground.sh is exiting for deletelogs with exit code 0

Deleting recording log files for 192.168.20.5:8089 that are more than 30 days old
find: '/mnt/192.168.20.5-8089/Logs/recording/2021': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2022': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2023': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2024': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2025': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2026': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2028': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2029': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2030': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2031': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2032': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2033': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2034': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2035': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2036': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2037': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2038': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2039': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2040': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2041': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2042': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2043': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2044': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2045': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2046': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2047': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1946': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1947': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1948': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1949': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1952': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1951': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1953': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1954': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1984': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1985': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1986': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1987': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1988': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1989': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1990': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1991': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1992': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1993': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1994': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1995': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1996': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2009': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1998': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/1999': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2000': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2001': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2002': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2003': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2004': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2005': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2006': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2007': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2008': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2010': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2011': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2012': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2013': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2014': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2015': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2016': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2017': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2018': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2019': Deleted
find: '/mnt/192.168.20.5-8089/Logs/recording/2020': Deleted
One time run mode used...
foreground.sh is exiting for deletelogs with exit code 0

Looks like that worked.
Before I edit any of his shell scripts I change the Portainer stack to UPDATE_SCRIPTS=false and redeploy the stack.
I usually forget to change that back when I update though.

Thanks for reporting and testing! I've made this permanent in bnhf/olivetin:latest (aka bnhf/olivetin:2025.01.02).

1 Like

I've managed in my own way to install bnhf/olivetin on my server (QNAP) and can access the main homepage for OliveTin for channels but when i click on OliveTin Post-Install Healthcheck it asks for dvr for Channels sever and I do not know what to input I've tried 192.168.0.253:8089 does the following indicate I have correctly input the server

Checking your OliveTin installation...
(extended_check=false)


Checking that your selected Channels DVR server (192.168.0.253: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.0.253:8089/

You are reaching your CDVR server, so that's good. However, that IP: PORT combo should either be pre-entered in that field, or available on a drop-down if you have multiple CDVR servers.

Check your env vars in your Portainer Stack to be sure you've assigned the correct IP and PORT to their appropriate environment variables.

I have only one cdvr server, thanks…not sure how to reach into portainer stack for variables…but will poke around…thank you for speedy help

I assume the channels_dvr below should say 192.168.0.253:8089 but cannot find out how to input this....I set up on Sever runder docker as a pull

Standard Output
Checking your OliveTin installation...
(extended_check=false)


Checking that your selected Channels DVR server (192.168.0.253: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.0.253:8089/


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


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


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

HOSTNAME=xxxxxxxxxxxxxxxxx
CHANNELS_DVR=
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=[Redacted]@
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@
UPDATE_YAMLS=
UPDATE_SCRIPTS=
PORTAINER_HOST=


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 10.0.3.1

Based on host file: '/etc/resolv.conf' (legacy)

Overrides: [nameservers]


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
10.0.3.2 xxxxxxxxxxxxxxxxxx

The only docker commandline you need is to install Portainer.

When I first ran it I was using docker commandline.
I had problems keeping it updated and translating the compose and variables to commandline.

Do yourself a favor and install Portainer.
So much easier to use and support.

ok will have a look into it....does that mean reinstalling

Portainer is for managing your docker images and containers and works alongside what you already have. No need to reinstall anything.

Once you have Portainer running you will use it to create an OliveTin for Channels Portainer stack.
That will pull the latest image, create and run the container.
So it will create a new OliveTin for Channels container.
Than it just takes a few clicks to update it.

1 Like

You can ask the Portainer AI assistant Ask AI (button is in the lower right corner) how to install portainer ce on [your OS]

Ask AI: how do I install portainer ce on qnap?

To install Portainer CE on QNAP, you can follow these steps:

  1. First, ensure that Docker is installed and running on your QNAP device.

  2. Create a volume for Portainer to store its data:

docker volume create portainer_data

  1. Then, run the following command to install Portainer CE:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

This command will download and install the Portainer CE container, mapping the necessary ports and volumes.

It's important to note that some QNAP users have reported issues with container stats not displaying correctly in Portainer. This is due to high Process ID (PID) values on QNAP systems. If you encounter this issue, you may need to adjust the PID max value on your QNAP device.

For more detailed information on installation and troubleshooting, you can refer to the Portainer CE installation documentation and this GitHub issue discussing QNAP-specific problems.

After installation, you can access Portainer by opening a web browser and navigating to
https://your-qnap-ip:9443.

See

1 Like

My thanks for taking the time for this help :slight_smile:

1 Like

Many changes to OliveTin-for-Channels since my last post in this thread. Here are some screenshots of the current lineup of Actions. Note that a "Deprecated" page has been added (accessed via the side blade menu like Project One-Click), where Actions with limited current relevance will be placed:

OliveTin-for-Channels WebUI landing page:

Project One-Click page:

Deprecated page:

Recent significant additions include the TubeArchivist Processing Script, the Live YouTube Channel Manifest URL Updater, TubeArchivist One-Click install and Threadfin One-Click install.

A number of bug fixes, and please note there's a new Docker Compose for this project dated 2025.01.21 -- so please update your compose along with the container!

1 Like

New bnhf/olivetin:latest (aka bnf/olivetin:2025.01.27) pushed this morning with updates to several Project One-Click projects, along with the sample Docker Composes included with OliveTin:

1 Like

Is this the latest version?
It's missing PORTAINER_PORT

Well spotted. Fixed now! :slight_smile:

1 Like

New bnhf/olivetin:latest (aka bnhf/olivetin:2025.01.31) pushed today with improvements in data handling for e-mail notifications in the TubeArchivist Processing Script Action, and the Channel Lineup Change Notifications Action.

More details here:

And here:

Hello. Looking for some help with installing OliveTin in Portainer on unRAID, everything is on the same computer.
I can't seem to get the OliveTin stack to see the DVR_SHARE or the LOGS_SHARE, log posted below.
Here are the values I'm using in the stack:

HOST_DIR
/mnt/user

DVR_SHARE
//tower/pvr/ChannelsDVR

LOGS_SHARE
//tower/pvr/ChannelsPVR

Thanks for any ideas.

Checking your OliveTin installation...
(extended_check=false)

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

Checking that your selected Channels DVR server (192.168.100.47: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.100.47:8089/

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

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

total 0
drwxr-xr-x 2 root root  40 Feb 17 06:43 .
drwxr-xr-x 1 root root 130 Feb 17 07:25 ..

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

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

total 0
drwxr-xr-x 2 root root  40 Feb 17 06:43 .
drwxr-xr-x 1 root root 130 Feb 17 07:25 ..

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

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

HOSTNAME=olivetin
CHANNELS_DVR=192.168.100.47:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=192.168.100.125 192.168.100.95 192.168.100.193 192.168.100.21
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=[Redacted]@gmail.com
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@gmail.com
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=docker-host

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

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 local
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [192.168.100.1]
# 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::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.19.0.3	olivetin

Rather than using an SMB or NFS share here (which is possible, but has to be done as a Docker Volume), the absolute path is the way to go when everything is on the same system. So, use the Unraid path to your CDVR data directories here.

Similar here, but in this case it's the path to your CDVR executables. If you don't know where that is, you can use the Generate Filtered Channels DVR Log Action to find it. Search the last 100000 lines for [SYS] Start, and use the path shown at startup minus the /data at the end.

2 Likes