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

@bnhf, Unfortunately, I'm still having some trouble with the Project One-Click Plex TV action on my Synology Channels DVR server. It's getting the container up and running, and installing the Plex TV-NoEPG source without any problem. However, the Plex TV "gracenote=include" source isn't making it into Channels. Deleting the containers and sources using the one-click action is nice, so that I can repeat the installation easily as I am testing things.

JSON response from http://192.168.1.100:9000/api/stacks/create/standalone/string?endpointId=2:
{"Id":139,"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":62,"ResourceId":"2_plex-for-channels","SubResourceIds":[],"Type":6,"UserAccesses":[],"TeamAccesses":[],"Public":false,"AdministratorsOnly":true,"System":false},"Status":1,"ProjectPath":"/data/compose/139","CreationDate":1741298723,"CreatedBy":"john","UpdateDate":0,"UpdatedBy":"","AdditionalFiles":null,"AutoUpdate":null,"Option":null,"GitConfig":null,"FromAppTemplate":false,"Namespace":""}
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

Thanks for letting me know. We'll get it figured out -- it'll be a couple of days before I can look at it though. I'll get back to you.

I was able to add the 2nd source manually and seem to have things working for the time being. I'm mostly interested in helping smooth things out for anyone else who may want to use the action. Take your time. Please let me know when you need me to test it out again. :slightly_smiling_face:

1 Like

There are still issues with the latest plex container responding to requests

2025/02/23 12:25:02.530822 [ERR] Failed to request m3u for Plex: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/02/23 12:25:14.531698 [ERR] Failed to request m3u for PlexNoEpg: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=exclude": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/02/25 01:04:13.483310 [ERR] Failed to request m3u for Pluto: Get "http://192.168.1.3:8080/pluto/all/playlist.m3u?channel_id_format=slug_only": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/02/28 01:04:13.715379 [ERR] Failed to request m3u for Pluto: Get "http://192.168.1.3:8080/pluto/all/playlist.m3u?channel_id_format=slug_only": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/02 09:54:12.036388 [ERR] Failed to request m3u for PlexNoEpg: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=exclude": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/02 09:54:24.526275 [ERR] Failed to request m3u for Plex: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/03 10:25:55.077770 [ERR] Failed to request m3u for PlexNoEpg: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=exclude": dial tcp 192.168.1.3:7781: i/o timeout
2025/03/03 10:25:58.579338 [ERR] Failed to request m3u for Pluto: Get "http://192.168.1.3:8080/pluto/all/playlist.m3u?channel_id_format=slug_only": dial tcp 192.168.1.3:8080: connect: connection refused
2025/03/03 10:25:58.583737 [ERR] Failed to request m3u for Plex: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=include": dial tcp 192.168.1.3:7781: connect: connection refused
2025/03/03 10:27:10.585130 [ERR] Failed to request m3u for PlexNoEpg: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=exclude": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/03 10:27:23.529482 [ERR] Failed to request m3u for Plex: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/04 16:46:51.088247 [ERR] Failed to request m3u for Plex: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/04 16:47:03.088711 [ERR] Failed to request m3u for PlexNoEpg: Get "http://192.168.1.3:7781/plex/playlist.m3u?gracenote=exclude": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

Thanks for the heads-up. I checked my logs and see some of those errors as well.

2025/03/06 13:40:26.652470 [ERR] Failed to request m3u for PlexTV: Get "http://192.168.1.100:7776/plex/playlist.m3u?regions=local&gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/06 13:47:57.683044 [ERR] Failed to request m3u for PlexTV: Get "http://192.168.1.100:7776/plex/playlist.m3u?regions=local&gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/03/06 14:06:10.639535 [ERR] Failed to request m3u for PlexTV: Get "http://192.168.1.100:7779/plex/playlist.m3u?regions=local&gracenote=include": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

I'm also having issues adding Plex. I changed the Host Dir from /Data to a directory I use for Channels on my Mac. Are there any other values I need to change? This is the error I get every time:

JSON response from http://192.168.150.242:9000/api/stacks/create/standalone/string?endpointId=2:
404 page not found

I am getting this error when trying to create a onclick of watchtower ...

JSON response from https://192.168.50.66:9443/api/stacks/create/standalone/string?endpointId=2:
{"message":"Unable to find an environment with the specified identifier inside the database","details":"Object not found inside the database (bucket=endpoints, key=2)"}
false

Could you hover over the local environment (as shown in the linked post screenshot) and let me know the environment number shown?

Where are you seeing this error? Are you seeing this in Standard Output or Standard Error? Does a Plex stack exist in Portainer?

The error shows in the Standard Output; no stack is created in Portainer. Below is what I get for the Standard Error:

exit status 1

  • dvr=192.168.150.242:8089
    ++ basename /config/plex-for-channels.sh

  • extension=plex-for-channels.sh

  • extension=plex-for-channels

  • cp /config/plex-for-channels.env /tmp

  • envFile=/tmp/plex-for-channels.env

  • [[ -n 192.168.150.242 ]]

  • extensionURL=192.168.150.242:7779

  • regions=local

  • [[ false == \f\a\l\s\e ]]

  • mjhCompatibility=

  • [[ # == # ]]

  • cdvrStartingChannel=

  • [[ -n '' ]]

  • cdvrIgnoreM3UNumbers=

  • [[ -n '' ]]

  • curl -s -o /dev/null http://192.168.150.242:7779

  • envVars=("TAG=$2" "HOST_PORT=$3" "PORT=$4" "HOST_DIR=$7")

  • printf '%s\n' TAG=latest HOST_PORT=7779 PORT=7777 HOST_DIR=/Users/jasontrippe

  • sed -i /=#/d /tmp/plex-for-channels.env

  • /config/portainerstack.sh plex-for-channels

  • stackName=plex-for-channels

  • portainerHost=192.168.150.242

  • [[ -n 9443 ]]

  • portainerPort=9443

  • [[ -n '' ]]

  • portainerEnv=2

  • curl -s -o /dev/null http://192.168.150.242:9000

  • portainerURL='http://192.168.150.242:9000/api/stacks/create/standalone/string?endpointId=2'

  • portainerToken=ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=

  • cp /config/plex-for-channels.yaml /tmp

  • stackFile=/tmp/plex-for-channels.yaml

  • envFile=/tmp/plex-for-channels.env
    ++ grep DVR_SHARE= /tmp/plex-for-channels.env
    ++ grep -v /
    ++ awk -F= '{print $2}'

  • dockerVolume=
    ++ grep VOL_EXTERNAL= /tmp/plex-for-channels.env
    ++ grep -v '#'
    ++ awk -F= '{print $2}'

  • volumeExternal=
    ++ grep VOL_NAME= /tmp/plex-for-channels.env
    ++ grep -v '#'
    ++ awk -F= '{print $2}'

  • volumeName=
    ++ grep NETWORK_MODE= /tmp/plex-for-channels.env
    ++ grep -v '#'
    ++ awk -F= '{print $2}'

  • networkMode=
    ++ grep DEVICES= /tmp/plex-for-channels.env
    ++ grep -v '#'
    ++ awk -F= '{print $2}'

  • transcoderDevice=
    ++ grep CDVR_CONTAINER= /tmp/plex-for-channels.env
    ++ grep -v '#'
    ++ awk -F= '{print $2}'

  • stackNumber=

  • [[ -n '' ]]

  • [[ -n '' ]]

  • [[ -n '' ]]

  • [[ -n '' ]]
    ++ sed 's/\/\\/g' /tmp/plex-for-channels.yaml
    ++ sed 's/"/\"/g'
    ++ awk '{printf "%s\n", $0}'

  • stackContent='version: '''3.9'''\nservices:\n # 2025.02.26\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/plex-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/plex-for-channels\n plex-for-channels:\n image: ghcr.io/jgomez177/plex-for-channels:${TAG}\n container_name: plex-for-channels\n ports:\n - ${HOST_PORT}:${PORT}\n environment:\n - PORT=${PORT}\n volumes:\n - ${HOST_DIR}/plex:/app/data\n restart: unless-stopped\n\n # Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode\n'

  • stackEnvVars='['

  • IFS==

  • read -r key value

  • stackEnvVars='[{"name": "TAG", "value": "latest"},'

  • IFS==

  • read -r key value

  • stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},'

  • IFS==

  • read -r key value

  • stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},{"name": "PORT", "value": "7777"},'

  • IFS==

  • read -r key value

  • stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},{"name": "PORT", "value": "7777"},{"name": "HOST_DIR", "value": "/Users/jasontrippe"},'

  • IFS==

  • read -r key value

  • stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},{"name": "PORT", "value": "7777"},{"name": "HOST_DIR", "value": "/Users/jasontrippe"}]'
    ++ cat

  • stackJSON='{
    "Name": "plex-for-channels",
    "SwarmID": "",
    "StackFileContent": "version: '''3.9'''\nservices:\n # 2025.02.26\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/plex-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/plex-for-channels\n plex-for-channels:\n image: ghcr.io/jgomez177/plex-for-channels:${TAG}\n container_name: plex-for-channels\n ports:\n - ${HOST_PORT}:${PORT}\n environment:\n - PORT=${PORT}\n volumes:\n - ${HOST_DIR}/plex:/app/data\n restart: unless-stopped\n\n # Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode\n",
    "Env": [{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},{"name": "PORT", "value": "7777"},{"name": "HOST_DIR", "value": "/Users/jasontrippe"}]
    }'

  • echo 'JSON response from http://192.168.150.242:9000/api/stacks/create/standalone/string?endpointId=2:'
    ++ curl -k -X POST -H 'Content-Type: application/json' -H 'X-API-Key: ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=' -d '{
    "Name": "plex-for-channels",
    "SwarmID": "",
    "StackFileContent": "version: '''3.9'''\nservices:\n # 2025.02.26\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/plex-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/plex-for-channels\n plex-for-channels:\n image: ghcr.io/jgomez177/plex-for-channels:${TAG}\n container_name: plex-for-channels\n ports:\n - ${HOST_PORT}:${PORT}\n environment:\n - PORT=${PORT}\n volumes:\n - ${HOST_DIR}/plex:/app/data\n restart: unless-stopped\n\n # Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode\n",
    "Env": [{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7779"},{"name": "PORT", "value": "7777"},{"name": "HOST_DIR", "value": "/Users/jasontrippe"}]
    }' 'http://192.168.150.242:9000/api/stacks/create/standalone/string?endpointId=2'
    % 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 938 100 19 100 919 19000 897k --:--:-- --:--:-- --:--:-- 916k

  • portainerResponse='404 page not found'

  • [[ -z 404 page not found ]]

  • echo 404 page not found

  • echo '404 page not found'

  • jq -e '.Id != null'
    jq: error (at :1): Cannot index number with string "Id"
    parse error: Invalid numeric literal at line 1, column 9

  • exit 1

  • [[ 1 == 1 ]]

  • exit 1

Could you please run the OliveTIn Post-Install Healthcheck again, and post the results here?

Don't forget to use 3 backticks before and after log blocks like these in your posts, to improve readability.

image

Similar to the user in the post I linked, your Portainer "Environment" ID has changed from 2 to 3 -- I'm still trying to figure out how that can happen (it's probably something Portainer is doing in the latest update). However, I've created a new env var to deal with it. Check post #1 in this thread, for the latest OliveTin Docker Compose, and be sure to use 3 for PORTAINER_ENV:

PORTAINER_ENV=3

See below:

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

Version 2025.03.05


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


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

total 12
drwxr-xr-x 9 root root 288 Feb 21 17:38 .
drwxr-xr-x 1 root root 4096 Mar 5 17:29 ..
-rw-r--r-- 1 root root 6148 Feb 11 22:18 .DS_Store
drwxr-xr-x 33 root root 1056 Mar 6 19:14 Database
drwxr-xr-x 6 root root 192 Mar 5 19:30 Images
drwxr-xr-x 6 root root 192 Feb 2 17:37 Imports
drwxr-xr-x 4 root root 128 Feb 16 19:30 Logs
drwxr-xr-x 14 root root 448 Mar 6 21:09 Streaming
drwxr-xr-x 4 root root 128 Mar 5 19:00 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...
/Volumes/External Drive/Channels DVR


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

total 12
drwxr-xr-x 9 root root 288 Feb 21 17:38 .
drwxr-xr-x 1 root root 4096 Mar 5 17:29 ..
-rw-r--r-- 1 root root 6148 Feb 11 22:18 .DS_Store
drwxr-xr-x 33 root root 1056 Mar 6 19:14 Database
drwxr-xr-x 6 root root 192 Mar 5 19:30 Images
drwxr-xr-x 6 root root 192 Feb 2 17:37 Imports
drwxr-xr-x 4 root root 128 Feb 16 19:30 Logs
drwxr-xr-x 14 root root 448 Mar 6 21:09 Streaming
drwxr-xr-x 4 root root 128 Mar 5 19:00 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...
Support/ChannelsDVR


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

Portainer http response on port 9000 reports version 2.16.2
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=192.168.150.242:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=192.168.150.231 192.168.150.194 146.12.197.19 192.168.150.177
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=192.168.150.242
PORTAINER_PORT=9443
PORTAINER_ENV=


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.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::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.2 olivetin

Standard Error:

  • dvr=192.168.150.242:8089

  • hostHealthcheck=0

  • [[ 0 == 0 ]]

  • hostHealthcheck=
    ++ echo 192.168.150.242:8089
    ++ awk -F: '{print $1}'

  • channelsHost=192.168.150.242
    ++ echo 192.168.150.242:8089
    ++ awk -F: '{print $2}'

  • channelsPort=8089

  • logFile=/config/192.168.150.242-8089_healthcheck-olivetin_latest.log

  • healthcheck=/config/fifopipe_containerside.sh

  • main

  • containerHealthcheck

  • echo -e 'Checking your OliveTin-for-Channels installation...'

  • [[ -n '' ]]

  • echo -e '(extended_check=false)\n'
    ++ grep pageTitle: /config/config.yaml
    ++ awk '{print $3}'

  • olivetinVersion=2025.03.05

  • echo -e 'Version 2025.03.05\n'

  • echo -e '----------------------------------------\n'

  • echo -e 'Checking that your selected Channels DVR server (192.168.150.242:8089) is reachable by URL:'

  • echo -e 'HTTP Status: 200 indicates success...\n'
    ++ curl --fail --output /dev/null --max-time 5 -w 'HTTP Status: %{http_code}\nEffective URL: %{url_effective}\n' http://192.168.150.242:8089

  • curlDVR=' % 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 41161 0 --:--:-- --:--:-- --:--:-- 42533
    HTTP Status: 200
    Effective URL: http://192.168.150.242:8089/'

  • echo -e ' % 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 41161 0 --:--:-- --:--:-- --:--:-- 42533
    HTTP Status: 200
    Effective URL: http://192.168.150.242:8089/\n'

  • echo -e '----------------------------------------\n'

  • echo -e 'Checking that your selected Channels DVR server'''s data files (/mnt/192.168.150.242-8089) are accessible:'

  • echo -e 'Folders with the names Database, Images, Imports, Logs, Movies, Streaming and TV should be visible...\n'

  • ls -la /mnt/192.168.150.242-8089

  • echo -e '\nIf the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:\n'

  • echo -e 'Channels reports this path as...'
    ++ curl -s http://192.168.150.242:8089/dvr
    ++ jq -r .path
    ++ tee -a /config/192.168.150.242-8089_healthcheck-olivetin_latest.log

  • dvrShare='/Volumes/External Drive/Channels DVR'

  • [[ /Volumes/External Drive/Channels DVR == \ ]]

  • windowsOS=

  • [[ -n '' ]]

  • [[ -n '' ]]

  • echo -e '\n----------------------------------------\n'

  • echo -e 'Checking that your selected Channels DVR server'''s log files (/mnt/192.168.150.242-8089_logs) are accessible:'

  • echo -e 'Folders with the names data and latest should be visible...\n'

  • ls -la /mnt/192.168.150.242-8089_logs

  • echo -e '\nIf the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:\n'

  • echo -e 'Channels reports this path as...'
    ++ grep -m 1 'Starting Channels DVR'
    ++ awk '{print $NF}'
    ++ awk '{sub(/[\/]?data$/, ""); print}'
    ++ tee -a /config/192.168.150.242-8089_healthcheck-olivetin_latest.log
    ++ curl -s 'http://192.168.150.242:8089/log?n=100000'

  • logsShare=Support/ChannelsDVR

  • [[ Support/ChannelsDVR == \ ]]

  • windowsOS=

  • [[ -n '' ]]

  • [[ -n '' ]]

  • echo -e '\n----------------------------------------\n'

  • echo -e 'Checking if your Portainer token is working on ports 9000 and/or 9443:\n'

  • [[ -z 9443 ]]

  • portainerPort=9443
    ++ curl -s -k -H 'Authorization: Bearer ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=' http://192.168.150.242:9000/api/status
    ++ jq -r .Version

  • echo 'Portainer http response on port 9000 reports version 2.16.2'
    ++ curl -s -k -X GET -H 'X-API-Key: ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=' http://192.168.150.242:9000/api/endpoints
    ++ jq '.[] | select(.Name=="local") | .Id'
    jq: error (at :1): Cannot index string with string "Name"

  • echo 'Portainer Environment ID for local is '
    ++ curl -s -k -H 'Authorization: Bearer ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=' https://192.168.150.242:9443/api/status
    ++ jq -r .Version

  • echo 'Portainer https response on port 9443 reports version '
    ++ curl -s -k -X GET -H 'X-API-Key: ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c=' https://192.168.150.242:9443/api/endpoints
    ++ jq '.[] | select(.Name=="local") | .Id'

  • echo 'Portainer Environment ID for local is '

  • echo -e '\n----------------------------------------\n'

  • echo -e 'Here'''s a list of your current OliveTin-related settings:\n'

  • echo HOSTNAME=olivetin

  • echo CHANNELS_DVR=192.168.150.242:8089

  • echo CHANNELS_DVR_ALTERNATES=

  • echo 'CHANNELS_CLIENTS=192.168.150.231 192.168.150.194 146.12.197.19 192.168.150.177'

  • echo ALERT_SMTP_SERVER=smtp.gmail.com:587

  • echo jason.andrew.trippe@gmail.com

  • awk -F@ '{print "ALERT_EMAIL_FROM=[Redacted]@" $2}'

  • [[ -n ALERT_EMAIL_PASS ]]

  • echo 'ALERT_EMAIL_PASS=[Redacted]'

  • echo jatrippe77@gmail.com

  • awk -F@ '{print "ALERT_EMAIL_TO=[Redacted]@" $2}'

  • echo UPDATE_YAMLS=true

  • echo UPDATE_SCRIPTS=true

  • [[ -n ptr_TP3q1aaHghJfhw94AMoa6ulP04EI93wfbogZlsKSb3c= ]]

  • echo 'PORTAINER_TOKEN=[Redacted]'

  • echo PORTAINER_HOST=192.168.150.242

  • echo PORTAINER_PORT=9443

  • echo PORTAINER_ENV=

  • echo -e '\n----------------------------------------\n'

  • echo -e 'Here'''s the contents of /etc/resolv.conf from inside the container:\n'

  • sed 's/tail.*.ts.net/tail[Redacted].ts.net/' /etc/resolv.conf+ echo -e '\n----------------------------------------\n'

  • echo -e 'Here'''s the contents of /etc/hosts from inside the container:\n'

  • cat /etc/hosts

  • [[ -n '' ]]

  • [[ -n '' ]]

  • [[ -n '' ]]

  • cat /config/192.168.150.242-8089_healthcheck-olivetin_latest.log

I don't know why this one posted with the bullet points. It doesn't appear that way when I paste into the reply box or try to edit.

You need to use 3 backticks before and after logs, code, composes, etc. This puts the text in code block. The backtick is to the left of the 1 on most keyboards.

Thanks using the new Docker Compose and adding `PORTAINER_ENV fixed it...

1 Like
(extended_check=false)

Version 2025.03.05

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

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

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

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

total 12
drwxr-xr-x  9 root root  288 Feb 21 17:38 .
drwxr-xr-x  1 root root 4096 Mar  5 17:29 ..
-rw-r--r--  1 root root 6148 Feb 11 22:18 .DS_Store
drwxr-xr-x 33 root root 1056 Mar  6 19:14 Database
drwxr-xr-x  6 root root  192 Mar  5 19:30 Images
drwxr-xr-x  6 root root  192 Feb  2 17:37 Imports
drwxr-xr-x  4 root root  128 Feb 16 19:30 Logs
drwxr-xr-x 14 root root  448 Mar  6 21:09 Streaming
drwxr-xr-x  4 root root  128 Mar  5 19:00 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...
/Volumes/External Drive/Channels DVR

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

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

total 12
drwxr-xr-x  9 root root  288 Feb 21 17:38 .
drwxr-xr-x  1 root root 4096 Mar  5 17:29 ..
-rw-r--r--  1 root root 6148 Feb 11 22:18 .DS_Store
drwxr-xr-x 33 root root 1056 Mar  6 19:14 Database
drwxr-xr-x  6 root root  192 Mar  5 19:30 Images
drwxr-xr-x  6 root root  192 Feb  2 17:37 Imports
drwxr-xr-x  4 root root  128 Feb 16 19:30 Logs
drwxr-xr-x 14 root root  448 Mar  6 21:09 Streaming
drwxr-xr-x  4 root root  128 Mar  5 19:00 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...
Support/ChannelsDVR

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

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

Portainer http response on port 9000 reports version 2.16.2
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=192.168.150.242:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=192.168.150.231 192.168.150.194 146.12.197.19 192.168.150.177
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=192.168.150.242
PORTAINER_PORT=9443
PORTAINER_ENV=

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

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.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::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.2	olivetin```

Could you also do the "hover check" shown in this post, and confirm your environment number? You should see a 2 or 3 in the URL shown. Let me know which one you see.