Can't Find OliveTin Output File

@TV_Ken The above looks pretty good, though you don't have your paths quite right:

As you can see, the folders that should be visible are not, both above and below:

Please run the OliveTin Environment Variables Generator/Tester, and post the results here.

Also, can you confirm that you have a default distro like Debian or Ubuntu installed, and that you have "integration" with your default distro enabled in Docker Desktop?

I don't know what these are or where to get them.


OliveTin Environment Variables Generator/Tester
Standard Output

TAG=latest
DOMAIN=
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.0.232
CHANNELS_DVR_PORT=8089
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=America/New_York
HOST_DIR=/data
DVR_SHARE=/mnt/g/channels data
LOGS_SHARE=/mnt/c/programdata/channelsdvr
TUBEARCHIVIST_SHARE=/mnt/g/channels data
DVR2_SHARE=
LOGS2_SHARE=
TUBEARCHIVIST2_SHARE=
DVR3_SHARE=
LOGS3_SHARE=
TUBEARCHIVIST3_SHARE=
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=ptr_cpj7unLejq5lki8TXl0WC05EcU0XFxtaWDm9NGPOdFo=
PORTAINER_HOST=192.168.0.232
PORTAINER_PORT=9443
PORTAINER_ENV=null
PERSISTENT_LOGS=false

Standard Error



The above are the values you should be using, so copy and paste the above. Then in Portainer-Stacks, stop the olivetin stack, go into the stacks editor and scroll down to the Environment variables section. In advanced mode, you can replace the current set of variables with what you copy and pasted from here. Finally, click Update the stack, and run the healthcheck again including posting the results here.

In Docker Desktop Settings-Resources-WSL Integration, things should look similar to this, though you'll probably only show one distro installed:

This is what I have for distro.

How did you get OliveTin EZ-Start installed, if you don't have a Linux distro installed?

First line of the post with the installation steps:

Debian or Ubuntu are available from the Microsoft Store:

He is probably on WSL 1. I think that is default on Windows 10. Updating to WSL 2 shouldn't be too hard.

@TV_Ken When you have a moment can you run the following in PowerShell:

PS C:\Users\slayer> wsl --version
WSL version: 2.5.9.0
Kernel version: 6.6.87.2-1
WSLg version: 1.0.66
MSRDC version: 1.2.6074
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.26100.4946

And post the results here...

I just installed Debial.

PS D:\TV_Data> wsl --version
WSL version: 2.5.10.0
Kernel version: 6.6.87.2-1
WSLg version: 1.0.66
MSRDC version: 1.2.6074
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.19045.6216

Go ahead and update the OliveTin stack as described in post #15, and then run the healthcheck again and post the results here...

I did the edits in Portainer, and confirmed that they were properly there, but the address of the server is lost in Olive Tin.

TAG=latest
DOMAIN=
HOST_PORT=1337
CHANNELS_DVR_HOST=
CHANNELS_DVR_PORT=
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=America/New_York
HOST_DIR=/data
DVR_SHARE=/mnt/g/channels data
LOGS_SHARE=/mnt/c/programdata/channelsdvr
TUBEARCHIVIST_SHARE=/mnt/g/channels data
DVR2_SHARE=
LOGS2_SHARE=
TUBEARCHIVIST2_SHARE=
DVR3_SHARE=
LOGS3_SHARE=
TUBEARCHIVIST3_SHARE=
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=ptr_cpj7unLejq5lki8TXl0WC05EcU0XFxtaWDm9NGPOdFo=
PORTAINER_HOST=192.168.0.232
PORTAINER_PORT=9443
PORTAINER_ENV=3
PERSISTENT_LOGS=false

Other odd things:
In Docker, I have 2 running containers:
olivetin-for-channels and olivetin-easystart

Also under Docker/Images, I have 2 Portainers. One from 2 months ago, and one from 2 years ago. I tried to delete the old one, but Docker says it is in use and can't be deleted.

@TV_Ken Please post the healthcheck as requested...

To get this, I had to manually type in the server IP and Port because they are not in the environment.

OliveTin Post-Install Healthcheck
Standard Output

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

OliveTin Container Version 2025.07.30
OliveTin Docker Compose Version 2025.03.26

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

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

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

Checking that your selected Channels DVR server's data files (/mnt/192.168.0.232-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 Aug 16 17:47 .
drwxr-xr-x 1 root root 4096 Aug 16 18:04 ..

Docker reports your current DVR_SHARE setting as...
/mnt/g/channels data

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

Channels reports this path as...
G:\Channels Data

When using WSL with a Linux distro and Docker Desktop, it's recommended to use...
/mnt/g/Channels Data

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

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

total 8
drwxr-xr-x 2 root root 4096 Aug 16 17:47 .
drwxr-xr-x 1 root root 4096 Aug 16 18:04 ..

Docker reports your current LOGS_SHARE setting as...
/mnt/c/programdata/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...
C:\ProgramData\ChannelsDVR

When using WSL with a Linux distro and Docker Desktop, it's recommended 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.27.9
Portainer Environment ID for local is 3
Portainer https response on port 9443 reports version 2.27.9
Portainer Environment ID for local is 3

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

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

HOSTNAME=olivetin
CHANNELS_DVR=
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_TOKEN=[Redacted]
PORTAINER_HOST=192.168.0.232
PORTAINER_PORT=9443
PORTAINER_ENV=3

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

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
172.20.0.2	olivetin
1 Like

Can you post a screenshot from the OliveTin stack in the Portainer-Stack-Editor, showing the environment variables? It should look something like this:






Am I supposed to have two Olive Tins running in docker?

@TV_Ken

OK, so you've mistakenly edited the compose itself, however as it says in the comments at the top of the compose:

version: '3.9'
services:
  olivetin: # This docker-compose typically requires no editing. Use the Environment variables section of Portainer to set your values.

To fix this you need to stop the OliveTin stack, and paste in the current compose. This is designed not to be edited, as any values specific to your installation are reflected in the Environment variables section:

Here's the current compose from this post:

version: '3.9'
services:
  olivetin: # This docker-compose typically requires no editing. Use the Environment variables section of Portainer to set your values.
    # 2025.03.27
    # GitHub home for this project: https://github.com/bnhf/OliveTin.
    # Docker container home for this project with setup instructions: https://hub.docker.com/r/bnhf/olivetin.
    image: bnhf/olivetin:${TAG:-latest} # Add the tag like latest or test to the environment variables below.
    container_name: ${OLIVETIN_NAME:-olivetin}${EZ_START}
    hostname: ${OLIVETIN_NAME:-olivetin}${EZ_START}
    dns_search: ${DOMAIN:+${DOMAIN}} # For Tailscale users using Magic DNS, add your Tailnet (tailxxxxx.ts.net) to use hostnames for remote nodes, otherwise use your local domain name.
    ports:
      - ${HOST_PORT:-1337}:1337
    environment:
      - OLIVETIN_COMPOSE=2025.03.26${EZ_START} # Do not change this value.
      - CHANNELS_DVR=${CHANNELS_DVR_HOST}:${CHANNELS_DVR_PORT:-8089} # Add your Channels DVR server in the form CHANNELS_DVR_HOST=<hostname or ip> and CHANNELS_DVR_PORT=<port>.
      - ${CHANNELS_DVR2_HOST:+CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR2_HOST}:${CHANNELS_DVR2_PORT}} ${CHANNELS_DVR3_HOST:+${CHANNELS_DVR3_HOST}:${CHANNELS_DVR3_PORT}} # Space separated list of alternate Channels DVR servers to choose from in the form hostname:port or ip:port.
      - CHANNELS_CLIENTS=${CHANNELS_CLIENTS} # Space separated list of Channels DVR clients you'd like notifications sent to in the form hostname or IP.
      - ALERT_SMTP_SERVER=${ALERT_SMTP_SERVER} # SMTP server to use for sending alert e-mails. smtp.gmail.com:587 for example.
      - ALERT_EMAIL_FROM=${ALERT_EMAIL_FROM} # Sender address for alert e-mails.
      - ALERT_EMAIL_PASS=${ALERT_EMAIL_PASS} # SMTP "app" password established through GMail or Yahoo Mail. Do not use your everyday e-mail address.
      - ALERT_EMAIL_TO=${ALERT_EMAIL_TO} # Recipient address for alert e-mails.
      - UPDATE_YAMLS=${UPDATE_YAMLS:-true} # Set this to true to update config.yaml.
      - UPDATE_SCRIPTS=${UPDATE_SCRIPTS:-true} # Set this to true to update all included scripts.
      - TZ=${TZ} # Add your local timezone in standard linux format. E.G. US/Eastern, US/Central, US/Mountain, US/Pacific, etc.
      - PORTAINER_TOKEN=${PORTAINER_TOKEN} # Generate via <username> dropdown (upper right of WebUI), "My account", API tokens.
      - PORTAINER_HOST=${PORTAINER_HOST:-$CHANNELS_DVR_HOST} # Hostname or IP of the Docker host you're running Portainer on.
      - PORTAINER_PORT=${PORTAINER_PORT:-9443} # https port you're running Portainer on. 9443 is the default.
      - PORTAINER_ENV=${PORTAINER_ENV:-2} # Set this is if you're using an alternate Portainer Environment for some reason. 2 is the default.
      - PERSISTENT_LOGS=${PERSISTENT_LOGS:-false} # For supported Actions, log files are retained on an ongoing basis. false is the default.
    volumes:
      - ${HOST_DIR:-/unused}${HOST_DIR:+/olivetin:/config} # Add the parent directory on your Docker you'd like to use.
      - ${DVR_SHARE:-/unused}${DVR_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share.
      - ${LOGS_SHARE:-/unused}${LOGS_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_logs} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR logs network share.
      - ${TUBEARCHIVIST_SHARE:-/unused}${TUBEARCHIVIST_SHARE:+:/mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_ta} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your TubeArchivist videos network share.
      - ${DVR2_SHARE:-/unused}${DVR2_SHARE:+:/mnt/${CHANNELS_DVR2_HOST}-${CHANNELS_DVR2_PORT}} # Note that these volume mounts should always be to /mnt/hostname-port or /mnt/ip-port (dash rather than a colon between).
      - ${LOGS2_SHARE:-/unused}${LOGS2_SHARE:+:/mnt/${CHANNELS_DVR2_HOST}-${CHANNELS_DVR2_PORT}_logs} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR logs network share.
      - ${TUBEARCHIVIST2_SHARE:-/unused}${TUBEARCHIVIST2_SHARE:+:/mnt/${CHANNELS_DVR2_HOST}-${CHANNELS_DVR2_PORT}_ta} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your TubeArchivist videos network share.
      - ${DVR3_SHARE:-/unused}${DVR3_SHARE:+:/mnt/${CHANNELS_DVR3_HOST}-${CHANNELS_DVR3_PORT}} # Note that these volume mounts should always be to /mnt/hostname-port or /mnt/ip-port (dash rather than a colon between).
      - ${LOGS3_SHARE:-/unused}${LOGS3_SHARE:+:/mnt/${CHANNELS_DVR3_HOST}-${CHANNELS_DVR3_PORT}_logs} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR logs network share.
      - ${TUBEARCHIVIST3_SHARE:-/unused}${TUBEARCHIVIST3_SHARE:+:/mnt/${CHANNELS_DVR3_HOST}-${CHANNELS_DVR3_PORT}_ta} # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your TubeArchivist videos network share.
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

  static-file-server:
    image: halverneus/static-file-server:latest
    container_name: ${SFS_NAME:-static-file-server}${EZ_START}
    dns_search: ${DOMAIN}
    ports:
      - ${HOST_SFS_PORT:-0}:8080
    environment:
      - FOLDER=${FOLDER:-/web}
    volumes:
      - ${HOST_DIR:-/unused}${HOST_DIR:+/olivetin/data:${FOLDER:-/web}}
    restart: unless-stopped

#0#volumes: # Remove the #x# to enable. Use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /mnt/dvr inside the container. Set ${DVR_SHARE} to channels-dvr (DVR_SHARE=channels_dvr) in that example.
  #1#channels-dvr:
    #1#external: true
  #2#channels-dvr-logs:
    #2#external: true
  #3#tubearchivist:
    #3#external: true
  #4#channels-dvr2:
    #4#external: true
  #5#channels-dvr2-logs:
    #5#external: true
  #6#tubearchivist2:
    #6#external: true
  #7#channels-dvr3:
    #7#external: true
  #8#channels-dvr3-logs:
    #8#external: true
  #9#tubearchivist3:
    #9#external: true

All of the Docker Composes in the above post are designed to work this same way. The compose is designed to be static, with only the env vars changing. This makes it extremely easy to identify what's specific to your installation, and to update a compose when needed.

Once we have the full version of OliveTin running correctly, I'll have you stop and remove the EZ-Start version. For now though, it's fine to have both -- we're only using the full version on port 1337 however.

Everything seems to be working, but I'm back to the original question. Where do I find the CSV output file?

Using Channels DVR server at: http://192.168.0.232:8089

Getting the details of all the sources from Channels DVR...
Got 7 sources.

Writing the channel information to the CSV file...
Channel information available in channels_dvr_channel_list_20250817_123915.csv