Project One-Click: Need help installing on Synology NAS

Man, I just want to say the "elapsed time, maybe two minutes" in the OP is one of the most infuriating things I've ever read. After spending days trying to get this working on my Synology NAS, I think I'm giving up. I just know I've got things screwed up with the volumes/paths, but I can't figure it out.

Have you run the OliveTin Post-Install Healthcheck? If so, could you post the results here? Also, if you search this thread, and the OliveTin thread, I think you'll find some specific posts relative to paths on Synology NAS devices.

It's actually OliveTin that I can't get installed, but it mentions that both are so simple to install that I'm going crazy here.

I'm happy to help, but I'll need some specifics of where you're having issues. Are you seeing errors in the Portainer logs when you spin-up OliveTin, or are you unable to launch the container at all?

If you're not able to launch the container, could you post your environment variables here please (with sensitive data redacted)?

Thanks, I would really appreciate it. I can't get it to even launch OliveTin successfully. So maybe I'm posting in the wrong thread, but they seem pretty tightly correlated. My environment variables have been modified so much that I probably have a complete mess. This is what I am currently trying:

TAG=latest
DOMAIN=tailxxxxx.ts.net
HOST_PORT=1337
CHANNELS_DVR_HOST=local-server
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=/homes/xxxxxxxx/video/DVR
DVR_SHARE=/homes/xxxxxxxx/video/DVR
LOGS_SHARE=/homes/xxxxxxxx/video/DVR/Logs
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host

And this is the error I get:
Container olivetin Starting Error response from daemon: driver failed programming external connectivity on endpoint static-file-server (c9545b2929d18d2b9a92c6feddaa12c7a3dc76a901db2467578da136bf9ca910): Error starting userland proxy: listen tcp4 0.0.0.0:8080: bind: address already in use

So this error tells us that the port we're trying to use for the static-file-server part of the stack is already being used on your server. I'd suggest trying port 8081, so set HOST_SFS_PORT=8081.

And then I have a few questions:

Do you use Tailscale? If so, set this to your actual Tailscale domain name, and if not substitute in the domain name you use for your LAN. This is often local or localdomain.

Is your Synology server named local-server, and if so, can your reach your Channels DVR via `http://local-server:8089. If not, change that value to the IP address of your Synology server (assuming this is where you have Channels DVR installed, of course).

Is Portainer running on a different machine than Channels DVR? If not, you need to use the correct hostname (must be resolvable like local-server above), or just use the IP address. If Portainer and Channels DVR are running on your Synology NAS, PORTAINER_HOST and CHANNELS_DVR_HOST should be set to the same value (IP address is easiest if you're unsure if hostnames work on your local network).

Let's get the above straightened out first, and then we can work on the paths you're using, once we get OliveTin running.

On my Synology NAS I have my NAS RAID in a storage pool with a volume defined named volume1. So my share environment variables in OliveTin look like this:

HOST_DIR=/volume1/data
DVR_SHARE=/volume1/ChannelsDVR
LOGS_SHARE=/var/packages/ChannelsDVR/target/channels-dvr

/volume1/data is where I store my container configuration files. The data folder contains a folder called olivetin and that is where it stores it's config files.

Channels is installed on the NAS using the official Channels container from Package Manager.
My Channels installation is at /volume1/ChannelsDVR and DVR_SHARE points there.
The LOGS_SHARE env variable needs to point to where the Channels container puts it's log files /var/packages/ChannelsDVR/target/channels-dvr

Maybe this info might help your install issues @dea321

Thanks so much. I finally got olivetin to deploy. Now I'm lost again. Ha! I don't even know how to get to a UI from there. I feel like I've read every post in both of these threads and I'm not retaining any of the info. I really appreciate people being patient with me and trying to help though!

I guess I wasn't as successful as I had thought:

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


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


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

http://<hostname or IP of your Docker host>:1337

Are you able to reach the Channels DVR WebUI, using a browser, at this URL?

Yes, that IP works fine to get to the Channels DVR WebUI.

Hmmm... Why don't you try using localhost as the value for both CHANNELS_DVR_HOST and PORTAINER_HOST and let's see if that works better for you.

That didn't work either.

Checking that your selected Channels DVR server (localhost: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
curl: (7) Failed to connect to localhost port 8089: Connection refused
HTTP Status: 000
Effective URL: http://localhost:8089/

Worth a shot, but you should go back to using the IP.

I believe Synology has a ping function in its Network Tools. Can you try to ping 192.168.4.20 from the Synology WebUI?

What URL do you use to access Portainer?

I've been using 192.168.4.20:9443

@dea321 My best guess at this point is there's a firewall rule in place on your Synology, that's not allowing Docker containers to communicate with host ports -- but this is very much a guess. Numerous people have successfully installed OliveTin on Synology systems -- and I don't recall anything like this coming up.

@chDVRuser is one of our resident experts on Synology, so maybe he'll have some ideas. Or, @cyoungers does anything come to mind for you as far as how Docker is setup out-of-the-box on Synology that might be causing a simple curl of the Channels DVR port to fail -- from inside a container to the host?

Thanks for all your help @bnhf. I did get a little closer to having it work anyway. And yes, that seems to be where I'm stumped as far as communicating between the docker containers and the host. I guess I'll keep on reading here. I am fairly certain that I don't have any firewall running on the NAS.

@dea321 could you post your Portainer compose file and environment variables for OliveTin? Mine look like this:

Compose:

Summary
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-server2
    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 a docker volume named channels-dvr, with CIFS or NFS, to bind to /mnt/${HOST_DIR}-${HOST_PORT} inside the container. Set ${HOST_DIR} to channels-dvr (HOST_DIR=channels-dvr) in this example.
  #channels-dvr:
    #external: true
  #channels-dvr-logs:
    #external: true


Environment variables:

Summary
TAG=latest
DOMAIN=tailXXXX.ts.net
HOST_PORT=1337
CHANNELS_DVR_HOST=192.168.0.11
CHANNELS_DVR_PORT=8089
CHANNELS_DVR2_HOST=
CHANNELS_DVR2_PORT=
CHANNELS_CLIENTS=apple-tv
ALERT_SMTP_SERVER=smtp.gmail.com:587
[email protected]
ALERT_EMAIL_PASS=PASSWORD
[email protected]
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Pacific
HOST_DIR=/volume1/data
DVR_SHARE=/volume1/ChannelsDVR
LOGS_SHARE=/var/packages/ChannelsDVR/target/channels-dvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=TOKEN-STRING
PORTAINER_HOST=cjynas

Perhaps comparing mine to yours might show a difference.