I am just not getting this, I edited the docker compose file and followed the video
I am just not getting this, I edited the docker compose file and followed the video
I get the feeling you're not reading the comments in the Compose. Like this one (though I do see the wording could be better in this case):
So go back to the original OliveTin compose, and make NO changes to it. Everything specific to your installation, is set in the Environment variables
section of the Portainer stack.
You'll want to set all of these, with appropriate (correct) values for your server, in order to have full OliveTin-for-Channels functionality:
TAG=latest
DOMAIN=tailxxxxx.ts.net
HOST_PORT=1337
CHANNELS_DVR_HOST=local-server
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=another-server
CHANNELS_DVR2_PORT=8089
CHANNELS_CLIENTS=appletv4k-den firestick-bedroom
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=username@gmail.com
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
ALERT_EMAIL_TO=username@gmail.com
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Mountain
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
LOGS_SHARE=/mnt/channelsdvr
TUBEARCHIVIST_SHARE=/mnt/dvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host
PORTAINER_PORT=9443
Post a version of this list of variables, in text form, with your values substituted in -- and I'll give you feedback on any that don't look correct. If you use Advanced mode
when editing your env vars, you can copy and paste them in a form like the above.
EDIT: Don't publicly post (i.e. [REDACT]) any of your e-mail values, your Portainer token or your Tailnet domain (if you have one) -- anything else is fine.
Yes, email is required for most of the Actions that send alerts. Setup an "app" password using Gmail or Yahoo.
Your values look pretty good, though I'm adding comments to those that I know/suspect are wrong:
TAG=latest
DOMAIN=localdomain # This may, or may not be correct for your LAN, so adjust if needed
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.7.10X
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=
CHANNELS_DVR2_PORT=
CHANNELS_CLIENTS= # Enter the IP addresses of your Channels clients (space separated) for onscreen alerts
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Arizona
HOST_DIR=/volume1/docker # Create a directory called olivetin in this directory before deploying the container (this is a Synology only requirement)
DVR_SHARE=/volume1/docker/channelsdvr
LOGS_SHARE=/volume1/docker/channelsdvr # This should be the path to your CDVR executables
TUBEARCHIVIST_SHARE=/volume1/docker/channelsdvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host #This should be changed to the same IP you used above for CHANNELS_DVR_HOST, since everything is on the same server
PORTAINER_PORT=9443
Couple notes
You will need to create these directories on your Synology before deploying the Olive Tin stack
/volume1/docker/channelsdvr
and /volume1/chDVRtve
/volume1/docker/channelsdvr
is where the Channels executables and log file goes
/volume1/chDVRtve
is where it will record to
If either of those already exist and are being used, you have to choose other directories.
This needs to be a writable parent directory on Synology. Most use:
HOST_DIR=/volume1/docker
Then create a directory called olivetin
under that parent before deploying OliveTin.
Channels clients are devices like Apple TVs, FireSticks and the like. Add the IP addresses for those devices (space separated).
Should be /volume1/chDVRtve
And you need to add your email password
ALERT_EMAIL_PASS=your_password_here
Need device names and/or IP addresses
iphone 16 pro
is not a valid device name (no spaces allowed in a name)
Looks promising. Does it deploy?
If so, run the OliveTin Post-Install Health check Action and post the results from Standard Output here
The only issue is "Deployment error Failed to deploy a stack: compose up operation failed: Error response from daemon: Bind mount failed: '/volume1/docker/olivetin/data' does not exists"
Forgot about that Synology detail. You need to create a data
directory under /volume1/docker/olivetin
.
Do that, and then redeploy.
Checking your OliveTin-for-Channels installation...
(extended_check=false)
Version 2025.02.19
----------------------------------------
Checking that your selected Channels DVR server (192.168.7.109: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.7.109:8089/
----------------------------------------
Checking that your selected Channels DVR server's data files (/mnt/192.168.7.109-8089) are accessible:
Folders with the names Database, Images, Imports, Logs, Movies, Streaming and TV should be visible...
total 0
d--------- 1 root root 38 Feb 19 18:37 #recycle
d--------- 1 root root 88 Feb 19 18:55 .
drwxr-xr-x 1 root root 124 Feb 19 19:40 ..
drwxrwxrwx 1 root root 24 Feb 19 18:14 @eaDir
d--------- 1 root root 44 Feb 19 18:49 Database
d--------- 1 root root 12 Feb 19 18:49 Images
d--------- 1 root root 28 Feb 19 18:49 Imports
d--------- 1 root root 0 Feb 19 18:55 Streaming
If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:
Channels reports this path as...
/shares/dvr
----------------------------------------
Checking that your selected Channels DVR server's log files (/mnt/192.168.7.109-8089_logs) are accessible:
Folders with the names data and latest should be visible...
total 8
drwxr-xr-x 1 1026 users 74 Feb 19 18:48 .
drwxr-xr-x 1 root root 124 Feb 19 19:40 ..
drwxr-xr-x 1 root root 120 Feb 19 18:48 2025.02.19.1823
-rwxr-xr-x 1 root root 446 Feb 19 18:47 compose.yaml
drwxr-xr-x 1 root root 358 Feb 19 18:57 data
lrwxrwxrwx 1 root root 15 Feb 19 18:48 latest -> 2025.02.19.1823
If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:
Channels reports this path as...
/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.0
Portainer https response on port 9443 reports version 2.27.0
----------------------------------------
Here's a list of your current OliveTin-related settings:
HOSTNAME=olivetin
CHANNELS_DVR=192.168.7.109:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=felixsiphone 192.168.4.20
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.7.109
PORTAINER_PORT=9443
----------------------------------------
Here's the contents of /etc/resolv.conf from inside the container:
search localdomain
nameserver 127.0.0.11
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
172.21.0.3 olivetin
Thank you for all your help!!!
One last thing, when I do a project one click for pluto, I get this error,
exit status 1
+ dvr=192.168.7.109:8089
++ basename /config/pluto-for-channels.sh
+ extension=pluto-for-channels.sh
+ extension=pluto-for-channels
+ cp /config/pluto-for-channels.env /tmp
+ envFile=/tmp/pluto-for-channels.env
+ [[ -n 192.168.7.109 ]]
+ extensionURL=192.168.7.109:7780
+ [[ # == \# ]]
+ cdvrStartingChannel=
+ [[ -n '' ]]
+ cdvrIgnoreM3UNumbers=
+ curl -s -o /dev/null http://192.168.7.109:7780
+ envVars=("TAG=$2" "HOST_PORT=$3" "PLUTO_PORT=$4" "PLUTO_CODE=$5" "CDVR_STARTING_CHANNEL=$6")
+ printf '%s\n' TAG=latest HOST_PORT=7780 PLUTO_PORT=7777 PLUTO_CODE=local CDVR_STARTING_CHANNEL=#
+ sed -i /=#/d /tmp/pluto-for-channels.env
+ /config/portainerstack.sh pluto-for-channels
+ stackName=pluto-for-channels
+ portainerHost=192.168.7.109
+ [[ -n 9443 ]]
+ portainerPort=9443
+ curl -s -o /dev/null http://192.168.7.109:9000
+ portainerURL='http://192.168.7.109:9000/api/stacks?type=2&method=string&endpointId=2'
+ portainerToken=ptr_cEynBkrDDAVla3ifj6hYaPQ4kXVIdVvxzpT/n7NtN4I=
+ cp /config/pluto-for-channels.yaml /tmp
+ stackFile=/tmp/pluto-for-channels.yaml
+ envFile=/tmp/pluto-for-channels.env
++ grep DVR_SHARE= /tmp/pluto-for-channels.env
++ awk -F= '{print $2}'
++ grep -v /
+ dockerVolume=
++ grep VOL_EXTERNAL= /tmp/pluto-for-channels.env
++ grep -v '#'
++ awk -F= '{print $2}'
+ volumeExternal=
++ grep VOL_NAME= /tmp/pluto-for-channels.env
++ grep -v '#'
++ awk -F= '{print $2}'
+ volumeName=
++ grep NETWORK_MODE= /tmp/pluto-for-channels.env
++ grep -v '#'
++ awk -F= '{print $2}'
+ networkMode=
++ grep DEVICES= /tmp/pluto-for-channels.env
++ grep -v '#'
++ awk -F= '{print $2}'
+ transcoderDevice=
++ grep CDVR_CONTAINER= /tmp/pluto-for-channels.env
++ grep -v '#'
++ awk -F= '{print $2}'
+ stackNumber=
+ [[ -n '' ]]
+ [[ -n '' ]]
+ [[ -n '' ]]
+ [[ -n '' ]]
++ sed 's/\\/\\\\/g' /tmp/pluto-for-channels.yaml
++ sed 's/"/\\"/g'
++ awk '{printf "%s\\n", $0}'
+ stackContent='version: '\''3.9'\''\nservices:\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/pluto-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/pluto-for-channels\n pluto-for-channels:\n image: ghcr.io/jgomez177/pluto-for-channels:${TAG}\n container_name: pluto-for-channels\n ports:\n - ${HOST_PORT}:${PLUTO_PORT} # Use the same port number the container is using, or optionally change it if the port is already in use on your host\n environment:\n - PLUTO_PORT=${PLUTO_PORT}\n - PLUTO_CODE=${PLUTO_CODE} # ALLOWED_COUNTRY_CODES: us_east - United States East Coast, us_west - United States West Coast, local - Local IP address Geolocation, ca - Canada, uk - United Kingdom\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 \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": "7780"},'
+ IFS==
+ read -r key value
+ stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7780"},{"name": "PLUTO_PORT", "value": "7777"},'
+ IFS==
+ read -r key value
+ stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7780"},{"name": "PLUTO_PORT", "value": "7777"},{"name": "PLUTO_CODE", "value": "local"},'
+ IFS==
+ read -r key value
+ stackEnvVars='[{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7780"},{"name": "PLUTO_PORT", "value": "7777"},{"name": "PLUTO_CODE", "value": "local"}]'
++ cat
+ stackJSON='{
"Name": "pluto-for-channels",
"SwarmID": "",
"StackFileContent": "version: '\''3.9'\''\nservices:\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/pluto-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/pluto-for-channels\n pluto-for-channels:\n image: ghcr.io/jgomez177/pluto-for-channels:${TAG}\n container_name: pluto-for-channels\n ports:\n - ${HOST_PORT}:${PLUTO_PORT} # Use the same port number the container is using, or optionally change it if the port is already in use on your host\n environment:\n - PLUTO_PORT=${PLUTO_PORT}\n - PLUTO_CODE=${PLUTO_CODE} # ALLOWED_COUNTRY_CODES: us_east - United States East Coast, us_west - United States West Coast, local - Local IP address Geolocation, ca - Canada, uk - United Kingdom\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 \n",
"Env": [{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7780"},{"name": "PLUTO_PORT", "value": "7777"},{"name": "PLUTO_CODE", "value": "local"}]
}'
+ echo 'JSON response from http://192.168.7.109:9000/api/stacks?type=2&method=string&endpointId=2:'
++ curl -k -X POST -H 'Content-Type: application/json' -H 'X-API-Key: ptr_cEynBkrDDAVla3ifj6hYaPQ4kXVIdVvxzpT/n7NtN4I=' -d '{
"Name": "pluto-for-channels",
"SwarmID": "",
"StackFileContent": "version: '\''3.9'\''\nservices:\n # GitHub home for this project with setup instructions: https://github.com/jgomez177/pluto-for-channels\n # Docker container home for this project: https://ghcr.io/jgomez177/pluto-for-channels\n pluto-for-channels:\n image: ghcr.io/jgomez177/pluto-for-channels:${TAG}\n container_name: pluto-for-channels\n ports:\n - ${HOST_PORT}:${PLUTO_PORT} # Use the same port number the container is using, or optionally change it if the port is already in use on your host\n environment:\n - PLUTO_PORT=${PLUTO_PORT}\n - PLUTO_CODE=${PLUTO_CODE} # ALLOWED_COUNTRY_CODES: us_east - United States East Coast, us_west - United States West Coast, local - Local IP address Geolocation, ca - Canada, uk - United Kingdom\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 \n",
"Env": [{"name": "TAG", "value": "latest"},{"name": "HOST_PORT", "value": "7780"},{"name": "PLUTO_PORT", "value": "7777"},{"name": "PLUTO_CODE", "value": "local"}]
}' 'http://192.168.7.109:9000/api/stacks?type=2&method=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 1196 0 0 100 1196 0 583k --:--:-- --:--:-- --:--:-- 583k
+ portainerResponse=
+ [[ -z '' ]]
+ exit 1
+ [[ 1 == 1 ]]
+ exit 1
Just tested, and it deployed fine for me.
It looks like you only posted Standard Error. What was showing in Standard Output?
This part is weird, with no response from Portainer. I'll look at this tomorrow.
There should be 3 more lines that are part of Standard Output. Could you post those too please?