Project One-Click: Need help installing on Synology NAS

This is what I have currently:

version: '3.9'
services:
  olivetin: # This docker-compose requires little or no editing. Set the Environment variables section of Portainer.
    # GitHub home for this project: https://github.com/bnhf/OliveTin.
    # Docker container home for this project with setup instructions: https://hub.docker.com/repository/docker/bnhf/olivetin.
    image: bnhf/olivetin:${TAG} # Add the tag like latest or test to the environment variables below.
    container_name: olivetin
    hostname: olivetin
    dns_search: ${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
    environment:
      - CHANNELS_DVR=${CHANNELS_DVR_HOST}:${CHANNELS_DVR_PORT} # Add your Channels DVR server in the form CHANNELS_DVR_HOST=<hostname or ip> and CHANNELS_DVR_PORT=<port>.
      #- CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR2_HOST}:${CHANNELS_DVR2_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} # Set this to true to update config.yaml.
      - UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # 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} # Hostname or IP of the Docker host you're running Portainer on.
    volumes:
      - ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use.
      - ${DVR_SHARE}:/${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}:/${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.
      #- ${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}:/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.
    restart: unless-stopped

  static-file-server:
    image: halverneus/static-file-server:latest
    container_name: static-file-server
    dns_search: ${DOMAIN}
    ports:
      - ${HOST_SFS_PORT}:8081
    environment:
      - FOLDER=${FOLDER}
    volumes:
      - ${HOST_DIR}/olivetin/data:${FOLDER}
    restart: unless-stopped

#volumes: # Use this section if you've setup docker volumes named channels-dvr and channels-dvr-logs, with CIFS or NFS, to bind to /mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT} and  /mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_logs inside the container. Set DVR_SHARE=channels-dvr and LOGS_SHARE=channels-dvr-logs in this example.
  #channels-dvr:
    #external: true
  #channels-dvr-logs:
    #external: true


TAG=latest
DOMAIN=local
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.4.20
CHANNELS_DVR_PORT=8089
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=smtp.gmail.com:587
[email protected]
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
[email protected]
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Central
HOST_DIR=/volume1/homes/xxxxxx/video/DVR
DVR_SHARE=/volume1/homes/xxxxxx/video/DVR
LOGS_SHARE=/volume1/homes/xxxxxx/video/DVR/Logs
HOST_SFS_PORT=8081
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxx
PORTAINER_HOST=192.168.4.20

@cyoungers Although the paths above may still be wrong, that shouldn't prevent access from the OliveTin container to Channels DVR on port 8089. I think this has to be something with Synology, and specifically Docker related. Firewall seems most likely, but maybe something else related to Synology security?

1 Like

@dea321 Could you take a look at your Synology Control Panel and confirm whether or not your firewall is active, and if it is, try disabling it and running the OliveTin Healthcheck again?

Firewall seems to be off in DSM Control Panel.

@dea321 Could you post your Portainer-Log for the OliveTin container from startup? I'd suggest stopping the stack, then restarting it, followed by immediately going to the Quick Action button to view/download the log for the OliveTin container. I'd like to see if there are any errors in there.

My firewall is disabled too. I assume that if you tried a curl command to your ChannelsDVR is would fail. When I try it to do that it works.

Summary

I'll give it a shot. I'm a serious noob working with portainer.

You may need to scrub a few sensitive data items in the log, so check it before you post. Feel free to PM it to me for extra security if you like.

I don't see any sensitive info here. But I also don't see anything interesting to me.

No existing /config/plex-for-channels.yaml found or UPDATE_YAMLS set to true
No existing /config/pluto-for-channels.env found or UPDATE_YAMLS set to true
No existing /config/pluto-for-channels.yaml found or UPDATE_YAMLS set to true
No existing /config/pluto.env found or UPDATE_YAMLS set to true
No existing /config/pluto.yaml found or UPDATE_YAMLS set to true
No existing /config/samsung-tvplus-for-channels.env found or UPDATE_YAMLS set to true
No existing /config/samsung-tvplus-for-channels.yaml found or UPDATE_YAMLS set to true
No existing /config/stirr-for-channels.env found or UPDATE_YAMLS set to true
No existing /config/stirr-for-channels.yaml found or UPDATE_YAMLS set to true
No existing /config/tailscale.env found or UPDATE_YAMLS set to true
No existing /config/tailscale.yaml found or UPDATE_YAMLS set to true
No existing /config/tubi-for-channels.env found or UPDATE_YAMLS set to true
No existing /config/tubi-for-channels.yaml found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-fubo.env found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-fubo.yaml found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-pbs.env found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-pbs.yaml found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-uk.env found or UPDATE_YAMLS set to true
No existing /config/vlc-bridge-uk.yaml found or UPDATE_YAMLS set to true
No existing /config/watchtower.env found or UPDATE_YAMLS set to true
No existing /config/watchtower.yaml found or UPDATE_YAMLS set to true
No existing /config/adbtuner.sh found or UPDATE_SCRIPTS set to true
No existing /config/ah4c.sh found or UPDATE_SCRIPTS set to true
No existing /config/cc4c.sh found or UPDATE_SCRIPTS set to true
No existing /config/ccextractor.sh found or UPDATE_SCRIPTS set to true
No existing /config/cdvr_movie_library_to_csv.py found or UPDATE_SCRIPTS set to true
No existing /config/cdvr_movie_library_to_csv.sh found or UPDATE_SCRIPTS set to true
No existing /config/cdvrhelperbookmarklet.sh found or UPDATE_SCRIPTS set to true
No existing /config/channels_dvr_monitor_channels.py found or UPDATE_SCRIPTS set to true
No existing /config/channels_dvr_monitor_channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/channels_to_csv.py found or UPDATE_SCRIPTS set to true
No existing /config/channels_to_csv.sh found or UPDATE_SCRIPTS set to true
No existing /config/channels_to_csv_awk.sh found or UPDATE_SCRIPTS set to true
No existing /config/comskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/comskipini.sh found or UPDATE_SCRIPTS set to true
No existing /config/deletelogs.sh found or UPDATE_SCRIPTS set to true
No existing /config/dockercompose.sh found or UPDATE_SCRIPTS set to true
No existing /config/edlstrip.sh found or UPDATE_SCRIPTS set to true
No existing /config/eplustv.sh found or UPDATE_SCRIPTS set to true
No existing /config/fifopipe_containerside.sh found or UPDATE_SCRIPTS set to true
No existing /config/fifopipe_hostside.sh found or UPDATE_SCRIPTS set to true
No existing /config/filebot.sh found or UPDATE_SCRIPTS set to true
No existing /config/fix_thumbnails.rb found or UPDATE_SCRIPTS set to true
No existing /config/fix_thumbnails.sh found or UPDATE_SCRIPTS set to true
No existing /config/foreground.sh found or UPDATE_SCRIPTS set to true
No existing /config/frndlytv-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/generatem3u.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck_stack.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck_wsl.sh found or UPDATE_SCRIPTS set to true
No existing /config/ical_2_xmltv.py found or UPDATE_SCRIPTS set to true
No existing /config/ical_2_xmltv.sh found or UPDATE_SCRIPTS set to true
No existing /config/listcomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/llc2metadata.sh found or UPDATE_SCRIPTS set to true
No existing /config/logalerter.sh found or UPDATE_SCRIPTS set to true
No existing /config/logalerts.sh found or UPDATE_SCRIPTS set to true
No existing /config/logfilter.sh found or UPDATE_SCRIPTS set to true
No existing /config/manualrecordings.sh found or UPDATE_SCRIPTS set to true
No existing /config/markforrerecord.sh found or UPDATE_SCRIPTS set to true
No existing /config/marknocommercials.sh found or UPDATE_SCRIPTS set to true
No existing /config/mediainfo.sh found or UPDATE_SCRIPTS set to true
No existing /config/mlb.tv-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/notifications.sh found or UPDATE_SCRIPTS set to true
No existing /config/organizr.sh found or UPDATE_SCRIPTS set to true
No existing /config/pingcdvr.sh found or UPDATE_SCRIPTS set to true
No existing /config/playonedl.sh found or UPDATE_SCRIPTS set to true
No existing /config/plex-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/plexiptv.sh found or UPDATE_SCRIPTS set to true
No existing /config/plextoken.sh found or UPDATE_SCRIPTS set to true
No existing /config/pluto-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/pluto.sh found or UPDATE_SCRIPTS set to true
No existing /config/portainerstack.sh found or UPDATE_SCRIPTS set to true
No existing /config/removecomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/restartshutdown.sh found or UPDATE_SCRIPTS set to true
No existing /config/samsung-tvplus-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/scanlocalcontent.sh found or UPDATE_SCRIPTS set to true
No existing /config/setcomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/stationid.sh found or UPDATE_SCRIPTS set to true
No existing /config/stirr-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/tailscale.sh found or UPDATE_SCRIPTS set to true
No existing /config/tubi-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/updateyamldate.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-fubo.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-pbs.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-uk.sh found or UPDATE_SCRIPTS set to true
No existing /config/watchtower.sh found or UPDATE_SCRIPTS set to true
----------------------------------------
Checking for .running files that don't match with currently defined DVRs...
ls: cannot access '*.running': No such file or directory
level="info" msg="OliveTin initializing" commit="1d446ac" date="2024-04-09T08:26:18Z" version="2024.04.09"
level="debug" msg="Value of -configdir flag" value="."
level="info" msg="Setting log level to info"
level="info" msg="OliveTin initialization complete"
level="info" msg="OliveTin started" configDir="/config"
level="info" msg="Starting REST API" address="localhost:1339"
level="info" msg="Installation ID" content="535de588-3507-4783-95ec-2386fafd9698" from="/config/installation-id.txt"
level="info" msg="Starting WebUI server" address="localhost:1340"
level="info" msg="Found the webui directory" dir="/var/www/olivetin/"
level="info" msg="Starting single HTTP frontend" address="0.0.0.0:1337"
level="info" msg="Update check complete" NewVersion="legacy-update-check\n"

@dea321 it looks like it it not seeing your /config folder.

volumes:
      - ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use.

Did you create a folder in your NAS called olivetin that is in the directory set in the env variable {HOST_DIR} ?

If you're running Channels DVR using the Synology Package, you should be able to access it using another PC on your network at http://192.168.4.20:8089/

If that works, using that same PC, try pinging 192.168.4.20 using commandline ping 192.168.4.20
Does it respond?

Here's my results from a Windows PC on my network

M:\>ping 192.168.1.4

Pinging 192.168.1.4 with 32 bytes of data:
Reply from 192.168.1.4: bytes=32 time=1ms TTL=64
Reply from 192.168.1.4: bytes=32 time=1ms TTL=64
Reply from 192.168.1.4: bytes=32 time=1ms TTL=64
Reply from 192.168.1.4: bytes=32 time=1ms TTL=64

Ping statistics for 192.168.1.4:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 1ms, Average = 1ms

Then try using commandline curl
curl -v http://192.168.4.20:8089/

Here's my results from a Windows PC on my network

M:\>curl -v http://192.168.1.4:8089/
*   Trying 192.168.1.4:8089...
* Connected to 192.168.1.4 (192.168.1.4) port 8089
> GET / HTTP/1.1
> Host: 192.168.1.4:8089
> User-Agent: curl/8.7.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Length: 1276
< Content-Type: text/html
< X-Channels-Dvr-Identifier: <REDACTED>
< Date: Fri, 21 Jun 2024 01:23:44 GMT
<
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="stylesheet" href="/bundle.css">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>Channels</title>
  </head>
  <body>
    <div id="content"></div>
    <div id="modal-wrapper"></div>
    <div id="modal"></div>
    <script async type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>
    <script type="text/javascript" src="/bundle.js"></script>
    <script>
      if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
          console.log('Service worker registration succeeded:', registration)
        }, function(error) {
          console.log('Service worker registration failed:', error)
        })
      }
    </script>
  </body>
</html>
* Request completely sent off
* Connection #0 to host 192.168.1.4 left intact

@dea321

OK, so I decided to spin-up a DSM 7.2 VM to see if any issues have crept into OliveTin -- and the good news is that the answer is no, everything continues to work as expected.

I did find one error in the Docker Compose you're using, that I'm guessing you introduced somewhere along the line. The volumes section should look like this:

    volumes:
      - ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use.
      - ${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}:/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.
      #- ${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}:/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.

I believe you inadvertently edited the part to the right of the : on the ${DVR_SHARE} and ${LOGS_SHARE} lines, and removed the /mnt from the path name in the container.

Also you changed port number in the static-file-server section of the stack from :8080 (which is the port number inside the container), to 8081 -- you should have changed the HOST_SFS_PORT environment variable to 8081. Generally speaking, with the way I've setup these docker composes, you shouldn't be changing anything in the compose -- everything is done in the environment section.

I believe if you fix the above, everything in the OliveTin Healthcheck should pass except for the first test of your Channels DVR URL, which will likely still fail until we figure out what's going on with that.

@dea321

Expanding a bit on the above, here's what I installed after creating the DSM 7.2 VM:

Channels DVR, following the instructions here:

Portainer, following this online guide:

OliveTin, using this Docker Compose:

 version: '3.9'
services:
  olivetin: # This docker-compose requires little or no editing. Set the Environment variables section of Portainer.
    # GitHub home for this project: https://github.com/bnhf/OliveTin.
    # Docker container home for this project with setup instructions: https://hub.docker.com/repository/docker/bnhf/olivetin.
    image: bnhf/olivetin:${TAG} # Add the tag like latest or test to the environment variables below.
    container_name: olivetin
    hostname: olivetin
    dns_search: ${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
    environment:
      - CHANNELS_DVR=${CHANNELS_DVR_HOST}:${CHANNELS_DVR_PORT} # Add your Channels DVR server in the form CHANNELS_DVR_HOST=<hostname or ip> and CHANNELS_DVR_PORT=<port>.
      #- CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR2_HOST}:${CHANNELS_DVR2_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} # Set this to true to update config.yaml.
      - UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # 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} # Hostname or IP of the Docker host you're running Portainer on.
    volumes:
      - ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use.
      - ${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}:/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.
      #- ${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}:/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.
    restart: unless-stopped

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

#volumes: # Use this section if you've setup docker volumes named channels-dvr and channels-dvr-logs, with CIFS or NFS, to bind to /mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT} and  /mnt/${CHANNELS_DVR_HOST}-${CHANNELS_DVR_PORT}_logs inside the container. Set DVR_SHARE=channels-dvr and LOGS_SHARE=channels-dvr-logs in this example.
  #channels-dvr:
    #external: true
  #channels-dvr-logs:
    #external: true

And these environment variables:

TAG=latest
DOMAIN=localdomain
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.110.57
CHANNELS_DVR_PORT=8089
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=smtp.gmail.com:587
[email protected]
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
[email protected]
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Central
HOST_DIR=/volume1/docker
DVR_SHARE=/volume1/ChannelsDVR
LOGS_SHARE=/var/packages/ChannelsDVR/target/channels-dvr
HOST_SFS_PORT=8081
FOLDER=/web
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=192.168.110.57

OliveTin Post-Install Healthcheck:

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

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

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

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

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

total 0
d--------- 1 root   root   72 Jun 20 19:18 .
drwxr-xr-x 1 root   root   86 Jun 20 20:07 ..
drwxrwxrwx 1 root   root    8 Jun 20 19:17 @eaDir
drwx------ 1 242120 242120 44 Jun 20 19:18 Database
drwx------ 1 242120 242120 12 Jun 20 19:18 Images
drwx------ 1 242120 242120 28 Jun 20 19:18 Imports
drwx------ 1 242120 242120  0 Jun 20 19:18 Streaming

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

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

total 4
drwxr-xr-x 1 242120 242120  50 Jun 20 19:18 .
drwxr-xr-x 1 root   root    86 Jun 20 20:07 ..
drwxr-xr-x 1 242120 242120 120 Jun 20 19:18 2024.05.07.1442
drwxr-xr-x 1 242120 242120 436 Jun 20 19:51 data
lrwxrwxrwx 1 242120 242120  15 Jun 20 19:18 latest -> 2024.05.07.1442

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

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

HOSTNAME=olivetin
CHANNELS_DVR=192.168.110.57:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
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.110.57

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

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.25.0.3	olivetin

Then I used Project One-Click to install the FrndlyTV container:

Figuring out the paths on Synology takes a moment, but can be found by looking in File Station, and by creating any needed directories in existing shared folders:

Much like you have to create a folder called portainer in the docker directory, you'll need to create a directory called olivetin, and then in the olivetin directory one called data. This is unique to Synology, all other Linux distros I've worked with allow Docker to create the directories it needs.

1 Like

True that you need to create the /volume1/docker/olivetin directory, but you don't need to create the data subdirectory in it. OliveTin for Channels will create that.

Actually, because this is a stack and we're launching two containers, the spin-up will fail if the directory specified in the static-file-server part of the stack doesn't already exist. This didn't used to be true in early OliveTin stacks, before the second container was added, but it's definitely the case now.

Now that I have a Synology VM, I may try to figure out why Docker doesn't create needed directories on DSM -- maybe there's a simple fix.

2 Likes

@dea321

Another cross-check that things are going according to plan, is to check the directory on your Synology you've bound to the OliveTin data directory (/config). You should see something like this in File Station:

When you and @chDVRuser walked me through this process a few months ago, I found out that I needed to create both the /olivetin and /olivetin/data subdirectory by using Synology File Station.

1 Like

He's correct that since he added the static file server to the stack you have to do that.
I started using it before that was added.

I appreciate you all helping me out here. Things seem to have improved, but I just can't connect to the DVR server still for some reason. My folder setup looks correct in File Station now, I believe. And I can still ping the IP address 192.168.4.20 just fine from my Windows PC on the same network as the NAS. I can also get to the Channels DVR Web UI at 192.168.4.20:8089 using that same PC. But there seems to be an issue just between the docker container and the host, and I am struggling to see where. I did verify that Firewall was turned off in the Synology Control Panel. I even toggled it on and back off just in case. But still no luck connecting.

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

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

Checking that your selected Channels DVR server (192.168.4.20: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
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:04 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0
curl: (28) Connection timed out after 5000 milliseconds
HTTP Status: 000
Effective URL: http://192.168.4.20:8089/

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

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

total 0
drwxrwxrwx 1 1026 root    100 Jun 20 12:44 .
drwxr-xr-x 1 root root     78 Jun 20 23:09 ..
drwxrwxrwx 1 1026 root   1320 Jun 20 13:44 Database
drwxrwxrwx 1 1026 root  67204 Jun 20 09:00 Images
drwxrwxrwx 1 1026 root     28 Mar 17  2022 Imports
drwxrwxrwx 1 1026 root     32 Jun 28  2020 Logs
drwxrwxrwx 1 1026 root   1706 Dec 17  2023 Movies
drwxrwxrwx 1 1026 root  12636 Jun 20 15:00 Streaming
drwxrwxrwx 1 1026 root    734 Jun 17 23:37 TV
drwxrwxrwx 1 1026 users  4176 Jun 20 22:58 olivetin

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

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

total 4
drwxr-xr-x 1 242120 242120  80 Jun 20 12:42 .
drwxr-xr-x 1 root   root    78 Jun 20 23:09 ..
drwxr-xr-x 1 242120 242120 120 Jun 20 12:41 2024.05.07.1442
drwxr-xr-x 1 242120 242120 154 Jun 20 12:42 2024.06.17.1525
drwxr-xr-x 1 242120 242120 694 Jun 20 20:27 data
lrwxrwxrwx 1 242120 242120  15 Jun 20 12:42 latest -> 2024.06.17.1525

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

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

HOSTNAME=olivetin
CHANNELS_DVR=192.168.4.20:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
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.4.20

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

Here's the contents of /etc/resolv.conf from inside the container:

search local
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
192.168.64.2	olivetin

Making progress, but we need to figure out why curl isn't working. Please try executing the following from a Command Prompt on your Windows machine:

curl 192.168.4.20:8089

And, you should see something like this: