OliveTin EZ-Start: A New Way to Deploy OliveTin-for-Channels Using Just Two Environment Variables to Get Started!

Something's a little funky in this section I think. Given OliveTin is running on Debian Linux, all of the SHARE paths are relative to your Linux system. So you shouldn't be using any Windows paths.

Paths need to be local on your Linux system, or you need to create Docker Volumes to reference SMB (or NFS) shares. There's also a third option, which I don't believe you're using, which is to mount an SMB or NFS share to your local file system.

You mentioned installing OliveTin locally on other systems, and that's also an option, but then you have multiple instances of OliveTin. If you want one central OliveTin instance then you need to set things up just like we did with DVR #1.

Also, one slight change should be made here, channels-dvr-logs2 should be channels-dvr2-logs. I'll be posting a new Docker Compose, and pushing a new container fairly soon that will support up to 3 DVRs from one OliveTin instance. The only modification that would need to be made (with up to 3 DVRs), is to uncomment Docker Volume names for any Docker Volumes you've created.

Otherwise, the idea is that compose will work without changes. And, in the EZ-Start fashion, the OliveTin Environment Variables Generator/Tester Action will handle 3 DVRs. I'll post here once I've pushed this update.

Ok let me try to clarify my setup.
Terry-NAS Linux raid array
DVR1 resides here. (direct install to Linux)
Mini-T Win 11 DrivePool Array
DVR2 resides here. (direct install to Win)
Local Host Win 11 running WSL Docker Desktop / Portainer / OliveTin (one instance)
DVR3 resides here. (direct install to Win)
This mash up is why I have a mixture of Linux and Windows paths but I'm highly open to a better way of doing things.

I'm fairly confident I understand what you're doing -- I have a mixture of Linux and Windows as well, including running DrivePool. Most of what I do is virtualized on a Proxmox host, but the concepts are the same.

So, let me ask you this -- do you have DVR2's CDVR recording and executable locations set up as SMB shares as well? How about DVR3?

Re-reading your post, I did have something switched around in my head -- I thought you were running OliveTin on your Linux system not the WIndows system running DVR3.

Based on that, things make sense as far as your OliveTin env vars are concerned. It looks to me like the only thing you need to do is setup C:/ProgramData/ChannelsDVR on DVR2 as an SMB share, and then add that SMB share via a Docker Volume named channels-dvr2-logs on the system you're running OliveTin on.

@TerryD You'll see I edited my above post, once I realized I was thinking OliveTin was running on your Linux host, not on one of the Windows systems. Based on that, it looks like you're one SMB share setup away from having everything correct.

I've pushed bnhf/olivetin:latest (aka bnh/olivetin:2025.03.20) (UTC time for builds), and I've update the compose in post #1 that goes with it.

The goal here is to have a compose that requires no editing, except for uncommenting any needed Docker Volumes.

Let me know how it goes. Thanks for your help in getting things dialed in with this new EZ-Start process!

Happy to help always where I can.
I actually have no problem viewing C:/ProgramData/ChannelsDVR on DVR2 without using a Docker Volume but had to use a Volume to view the DVR folders.

You'd be looking at C:/ProgramData/ChannelsDVR on DVR3 that way (given they use the same directory name). If you actually want to view that same directory name on DVR2, you'll have to set it up as an SMB share.

Pulled the new one.

TAG=latest
DOMAIN=local
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.50.219
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=192.168.50.32
CHANNELS_DVR2_PORT=8089
CHANNELS_DVR3_HOST=192.168.50.149
CHANNELS_DVR3_PORT=8089
ALERT_EMAIL_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Pacific
HOST_DIR=/data
DVR_SHARE=/mnt/md0/DVR-storage/DVR
LOGS_SHARE=/home/terry/channels-dvr
TUBEARCHIVIST_SHARE=/mnt/md0/DVR-storage/DVR
DVR2_SHARE=
LOGS2_SHARE=
TUBEARCHIVIST2_SHARE=
DVR3_SHARE=
LOGS3_SHARE=
TUBEARCHIVIST3_SHARE=
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=ptr_6Mcrj/12VVkIRmiJ1GRTEjC81+eGyLoOy6SylBOn6Xs=
PORTAINER_HOST=192.168.50.149
PORTAINER_PORT=9443
PORTAINER_ENV=2
PERSISTENT_LOGS=false

This is what the generator shows now which is perfect. Although I did not change any vars before pulling so I don't know if that makes a difference.
Would it be better to start from scratch for testing this?

any change here with the new compose?

EZ_START=-ezstart
CHANNELS_DVR_HOST=ip.address.of.your.cdvr.server

That makes sense and easily not noticed since Data wise they are almost identical.

I think we're good for now. I'm adding CHANNELS_CLIENTS now, and I want to pull some of the volumes data from Docker -- in order to fill-in the values, for someone like you that's already set them.

Can I touch base with you in a day or two, to check things, once I make those changes?

Absolutely I'm available most any time. A phone call away also if that works better for you. Or should I say if that makes my explanations easier to understand.

1 Like

@TerryD If you wouldn't mind updating to the latest version of OliveTin, and then run the OliveTin Environment Variables Generator/Tester Action. It's designed now to get information about the various DVRx Share settings directly from Docker. This should support a complete reflection of the current env vars in use.

Asssuming OliveTin is up-and-running, as we last left it, you should be able to simply go into the Action, click Start, and you'll get a full set of env vars. If you could post the results, along with a new Post-Install Healthcheck, I'd appreciate it!

Even if I put the back Slash on Wndows it changes it to a forward slash ... I will try 2 forward sllashes see if that helps.

Channels reports this path as...
X:\DVR

When using a Windows path in Portainer, change the backslashes to slashes like this...
X:/DVR

Edit does not work under windows.

If I put in X:/DVR it looks for X:\DVR so it does not healthcheck.

1 Like

Could you post the Healthcheck please so I could see what you're talking about?

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

Version 2025.03.19

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

Checking that your selected Channels DVR server (192.168.50.11: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   623k      0 --:--:-- --:--:-- --:--:--  623k
HTTP Status: 200
Effective URL: http://192.168.50.11:8089/

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

Checking that your selected Channels DVR server's data files (/mnt/192.168.50.11-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...
X:\DVR

When using a Windows path in Portainer, change the backslashes to slashes like this...
X:/DVR

When using WSL with a Linux distro and Docker Desktop, it's also possible to use...
/mnt/x/DVR

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

Checking that your selected Channels DVR server's log files (/mnt/192.168.50.11-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...
C:\ProgramData\ChannelsDVR

When using a Windows path in Portainer, change the backslashes to slashes like this...
C:/ProgramData/ChannelsDVR

When using WSL with a Linux distro and Docker Desktop, it's also possible to use...
/mnt/c/ProgramData/ChannelsDVR

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

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 2.27.2
Portainer Environment ID for local is 

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

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

HOSTNAME=olivetin-ezstart
CHANNELS_DVR=192.168.50.11: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=192.168.50.11
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.65.7)]
# 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

Updated and pulled latest.
Generator / Tester output.

TAG=latest
DOMAIN=local
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.50.219
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=192.168.50.32
CHANNELS_DVR2_PORT=8089
CHANNELS_DVR3_HOST=192.168.50.149
CHANNELS_DVR3_PORT=8089
CHANNELS_CLIENTS=
ALERT_EMAIL_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Pacific
HOST_DIR=/data
DVR_SHARE=/var/lib/docker/volumes/channels-dvr/_data
LOGS_SHARE=/var/lib/docker/volumes/channels-dvr-logs/_data
TUBEARCHIVIST_SHARE=/var/lib/docker/volumes/channels-dvr/_data
DVR2_SHARE=/var/lib/docker/volumes/channels-dvr2/_data
LOGS2_SHARE=/var/lib/docker/volumes/channels-dvr2-logs/_data
TUBEARCHIVIST2_SHARE=/var/lib/docker/volumes/channels-dvr2/_data
DVR3_SHARE=F:/DVR-storage/DVR
LOGS3_SHARE=C:/ProgramData/ChannelsDVR
TUBEARCHIVIST3_SHARE=F:/DVR-storage/DVR
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=ptr_6Mcrj/12VVkIRmiJ1GRTEjC81+eGyLoOy6SylBOn6Xs=
PORTAINER_HOST=192.168.50.149
PORTAINER_PORT=9443
PORTAINER_ENV=2
PERSISTENT_LOGS=false

Env vars before update.

TAG=latest
DOMAIN=local
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.50.219
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=192.168.50.32
CHANNELS_DVR2_PORT=8089
CHANNELS_DVR3_HOST=192.168.50.149
CHANNELS_DVR3_PORT=8089
ALERT_EMAIL_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Pacific
HOST_DIR=/data
DVR_SHARE=channels-dvr
LOGS_SHARE=channels-dvr-logs
TUBEARCHIVIST_SHARE=channels-dvr
DVR2_SHARE=channels-dvr2
LOGS2_SHARE=channels-dvr2-logs
TUBEARCHIVIST2_SHARE=channels-dvr2
DVR3_SHARE=F:/DVR-storage/DVR
LOGS3_SHARE=C:/ProgramData/ChannelsDVR
TUBEARCHIVIST3_SHARE=F:/DVR-storage/DVR
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=ptr_6Mcrj/12VVkIRmiJ1GRTEjC81+eGyLoOy6SylBOn6Xs=
PORTAINER_HOST=192.168.50.149
PORTAINER_PORT=9443
PORTAINER_ENV=2
PERSISTENT_LOGS=false

OK, that's very helpful, a few more tweaks are needed. I'll get back to you...

health check with Generator / Tester vars.

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

Version 2025.03.22

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

Checking that your selected Channels DVR server (192.168.50.219: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   623k      0 --:--:-- --:--:-- --:--:--  623k
HTTP Status: 200
Effective URL: http://192.168.50.219:8089/

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

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

total 8
drwxr-xr-x 2 root root 4096 Mar 18 09:50 .
drwxr-xr-x 1 root root 4096 Mar 22 07:50 ..

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

Channels reports this path as...
/mnt/md0/DVR-storage/DVR

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

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

total 8
drwxr-xr-x 2 root root 4096 Mar 18 09:52 .
drwxr-xr-x 1 root root 4096 Mar 22 07:50 ..

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

Channels reports this path as...
/home/terry/channels-dvr

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

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

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

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

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

HOSTNAME=olivetin
CHANNELS_DVR=192.168.50.219:8089
CHANNELS_DVR_ALTERNATES=192.168.50.32:8089 192.168.50.149:8089
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=[Redacted]@
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=192.168.50.149
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 local
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [host(192.168.65.7)]
# 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.20.0.3	olivetin

On a side note the Windows values from Generator do work for me.

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

Version 2025.03.22

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

Checking that your selected Channels DVR server (192.168.50.149: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   623k      0 --:--:-- --:--:-- --:--:-- 1246k
HTTP Status: 200
Effective URL: http://192.168.50.149:8089/

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

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

total 4
drwxrwxrwx 1 root root 4096 Mar  8 22:46 .
drwxr-xr-x 1 root root 4096 Mar 22 07:50 ..
drwxrwxrwx 1 root root 4096 Mar 21 17:33 Database
drwxrwxrwx 1 root root 4096 Mar 20 21:00 Images
drwxrwxrwx 1 root root 4096 Jan 23 14:03 Imports
drwxrwxrwx 1 root root 4096 Jan 23 14:03 Logs
drwxrwxrwx 1 root root 4096 Mar 10 23:30 Movies
drwxrwxrwx 1 root root 4096 Jan 23 14:18 PlayOn
lrwxrwxrwx 1 root root   45 Sep 21 01:15 Streaming -> /mnt/host/c/ProgramData/ChannelsDVR/Streaming
drwxrwxrwx 1 root root 4096 Mar  8 22:46 TV

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

Channels reports this path as...
F:\DVR-storage\DVR

When using a Windows path in Portainer, change the backslashes to slashes like this...
F:/DVR-storage/DVR

When using WSL with a Linux distro and Docker Desktop, it's also possible to use...
/mnt/f/DVR-storage/DVR

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

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

total 8
drwxrwxrwx 1 root root 4096 Mar  8 21:25 .
drwxr-xr-x 1 root root 4096 Mar 22 07:50 ..
drwxrwxrwx 1 root root 4096 Mar  8 21:20 2025.03.01.2019
-rwxrwxrwx 1 root root  835 Mar  8 18:42 Channels DVR Server.lnk
drwxrwxrwx 1 root root 4096 Mar 16 23:00 Streaming
drwxrwxrwx 1 root root 4096 Mar 22 06:08 data
drwxrwxrwx 1 root root 4096 Mar  8 21:16 latest

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

Channels reports this path as...
C:\ProgramData\ChannelsDVR

When using a Windows path in Portainer, change the backslashes to slashes like this...
C:/ProgramData/ChannelsDVR

When using WSL with a Linux distro and Docker Desktop, it's also possible to use...
/mnt/c/ProgramData/ChannelsDVR

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

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

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

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

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

HOSTNAME=olivetin
CHANNELS_DVR=192.168.50.219:8089
CHANNELS_DVR_ALTERNATES=192.168.50.32:8089 192.168.50.149:8089
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=[Redacted]@
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=192.168.50.149
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 local
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [host(192.168.65.7)]
# 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.20.0.3	olivetin

Just to confirm, you're talking about using the new OliveTin Environment Variables Generator/Tester Action and the EZ-Start process here?

yes ....

My Input is below .. but then healthcheck fails.

TAG=latest
DOMAIN=
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.50.11
CHANNELS_DVR_PORT=8089
ALERT_EMAIL_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=
HOST_DIR=/data
DVR_SHARE=X:/DVR
LOGS_SHARE=C:/ProgramData/ChannelsDVR
TUBEARCHIVIST_SHARE=X:/DVR
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=
PORTAINER_HOST=192.168.50.11
PORTAINER_PORT=9443
PORTAINER_ENV=2
PERSISTENT_LOGS=false

This is what it looked like before ...

OK thanks, I'll check it out.