Need Help Installing OliveTin on a QNAP NAS with CDVR Running on a Windows PC

Finally cleaned out the Win 11 issues. I can see my shares but question if Olivetin/Portainer is seeing them. I now have the Win 11 PC with a keyboard and monitor...which makes things easier. I am fairly confident the Token is correct. Any suggestions?

From the QNAP command line, let's try:

docker volume inspect channels-dvr

Look for the Mountpoint value, then ls -la that path. It could be:

/var/lib/docker/volumes/channels-dvr/_data

If they look like the folders/files on your Windows PC we're in business, and you can try the above with channels-dvr-logs too.

Don't think I am there, yet. Think I need to mount the shares in Qnap.

[jchurch@JimCNAS ~]$ docker volume inspect channels-dvr
[
    {
        "CreatedAt": "2025-09-21T15:36:24-04:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr/_data",
        "Name": "channels-dvr",
        "Options": {},
        "Scope": "local"
    }
]
[jchurch@JimCNAS ~]$ docker volume inspect channels-dvr-logs
[
    {
        "CreatedAt": "2025-09-21T15:37:00-04:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr-logs/_data",
        "Name": "channels-dvr-logs",
        "Options": {},
        "Scope": "local"
    }

Portainer-Volumes takes care of that.

What did you get when you did an ls -la of the Mountpoints shown?

[]
[jchurch@JimCNAS ~]$ ls -la /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr-logs/_data
/bin/ls: cannot access /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr-logs/_data: Permission denied

[jchurch@JimCNAS ~]$ ls -la /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr/_data
/bin/ls: cannot access /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/channels-dvr/_data: Permission denied
[jchurch@JimCNAS ~]$

Try with sudo...

Will finish in AM. Seems mounting them in the NAS caused the issues. Will delete all and install clean.

Connecting a Windows network share to a Portainer container on a QNAP NAS involves two main steps: first,

mount the Windows shared folder to the QNAP NAS itself, and second, configure the Docker container in Portainer to use that mounted path as a volume.

Part 1: Mount the Windows share on your QNAP NAS

  1. Open HybridMount. On your QNAP NAS desktop, go to App Center or the Main Menu and launch HybridMount.
  2. Create a remote mount.
  • Click Create Remote Mount or the + icon.
  • Select Network Drive Mount and click Create.
  1. Specify the Windows shared folder details.
  • Server IP / Hostname: Enter the IP address or hostname of your Windows PC (e.g., 192.168.1.100).
  • Protocol: Select CIFS/SMB.
  • Authentication: Enter the username and password for a Windows user with access to the shared folder.
  • Destination Folder: Select a folder on your QNAP NAS to use as the mount point. Click Browse to find the Windows share and select a destination folder on your NAS.
  1. Create the mount. Click Create. HybridMount will attempt to mount the Windows shared folder. If successful, you will see it as a remote mount in File Station.

Part 2: Connect the mounted path to a Portainer container

You can add the mounted path as a volume when creating a new container or by editing an existing one.

Method 1: Using the Portainer interface

  1. Open Portainer and navigate to your local environment.
  2. Create or edit a container.
  • For a new container, click Add container.
  • For an existing one, go to Containers, select the container, and click Duplicate/Edit.
  1. Configure volumes.
  • Scroll down to the Volumes section and click map additional volume.
  • Container: Enter the path where the shared files will be visible inside the container (e.g., /data).
  • Host: Enter the full path of the mount point on your QNAP NAS that you created in HybridMount (e.g., /share/CACHEDEV1_DATA/my-windows-share).
  1. Review and deploy. Check your other container settings, then click Deploy the container to apply the changes.

Looks reasonable. Creating a mount point on the OS, and then doing a binding of that directory is just another way to approach this.

I take it doing a sudo ls -la still didn't show any files from the Windows PC?

If you create the mounted directories using the above technique, all you'll need to do in the Environment variables section of the OliveTin stack is replace channels-dvr and channels-dvr-logs with the full paths for the mounts. You can ignore all those other Portainer instructions...

Getting closer. Let me know next steps. Just got back to this.... I appreciate your feedback.

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

OliveTin Container Version 2025.09.21
OliveTin Docker Compose Version 2025.08.25

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

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

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

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

total 8
drwxrwxrwx 2 root root 4096 Sep 20 02:00 .
drwxr-xr-x 1 root root 4096 Sep 23 18:48 ..
drwxrwxrwx 2 root root    0 Sep 23 07:42 Database
drwxrwxrwx 2 root root    0 Sep 23 17:01 Images
drwxrwxrwx 2 root root    0 Oct 14  2023 Imports
drwxrwxrwx 2 root root    0 Mar  2  2025 Logs
drwxrwxrwx 2 root root    0 Sep 23 07:00 Metadata
drwxrwxrwx 2 root root    0 Sep  1 08:16 Movies
drwxrwxrwx 2 root root    0 Sep  1 08:16 Streaming
drwxrwxrwx 2 root root    0 Sep  6 15:00 TV

Docker reports your current DVR_SHARE setting as...
/share/channels-dvr

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

Channels reports this path as...
D:\DVR

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

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

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

total 12
drwxrwxrwx 2 root root 4096 Sep 23 18:22 .
drwxr-xr-x 1 root root 4096 Sep 23 18:48 ..
drwxrwxrwx 2 root root    0 Sep  7 02:00 2025.09.07.0359
drwxrwxrwx 2 root root    0 Sep  8 02:00 2025.09.08.0201
drwxrwxrwx 2 root root    0 Sep 11 02:00 2025.09.10.2024
drwxrwxrwx 2 root root    0 Sep 13 02:00 2025.09.12.1628
drwxrwxrwx 2 root root    0 Sep 17 02:00 2025.09.17.0514
drwxrwxrwx 2 root root    0 Sep 18 02:00 2025.09.18.0418
-rwxrwxrwx 1 root root  829 Sep 20 02:00 Channels DVR Server.lnk
drwxrwxrwx 2 root root    0 Sep 23 18:17 data
drwxrwxrwx 2 root root    0 Sep 20 02:00 latest

Docker reports your current LOGS_SHARE setting as...
/share/channels-dvr-logs

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 
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.1.62:8089
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.1.42
PORTAINER_PORT=9443
PORTAINER_ENV=2

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

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 JIM_OFFICE
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [10.0.3.1]
# Overrides: [nameservers 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.29.4.2	olivetin

Good morning,
Healthcheck above looks good. However, I have noticed the volumes are unused. Here's a screenshot.

Still an important issue with your healthcheck. OliveTin-for-Channels is unable to reach Portainer. If you're confident your token is correct, then let's check a couple of things:

Exec into the olivetin container (using the Quick Actions for that purpose on the Portainer-Containers page) and run:

ping -c 3 192.168.1.42

Also run:

curl -I 192.168.1.42:9000

Please post the results of each here.

You can delete those unused volumes.

So you ended up using a hybrid mount in the QNAP OS, and then used those paths as the values for DVR_SHARE and LOGS_SHARE -- is that right?

root@olivetin:/# ping -c 3 192.168.1.42
PING 192.168.1.42 (192.168.1.42) 56(84) bytes of data.
64 bytes from 192.168.1.42: icmp_seq=1 ttl=64 time=0.114 ms
64 bytes from 192.168.1.42: icmp_seq=2 ttl=64 time=0.140 ms
64 bytes from 192.168.1.42: icmp_seq=3 ttl=64 time=0.138 ms

--- 192.168.1.42 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2008ms
rtt min/avg/max/mdev = 0.114/0.130/0.140/0.011 ms
root@olivetin:/# curl -I 192.168.1.42:9000
curl: (7) Failed to connect to 192.168.1.42 port 9000: Connection refused
root@olivetin:/#

Yes.
DVR_SHARE=//share/channels-dvr
LOGS_SHARE=//share/channels-dvr-logs

Thanks

So, those two results suggest there's no problem with hairpinning, but Portainer isn't answering on 9000. The most likely reason for this would be a firewall. Does your QNAP have one up? If so, you need to open ports 9000 and 9443.

Ports were not blocked. Turned off firewall and still refused connection.

Checked ports on NAS, neither are used. Still reading on my side.

It would seem the QNAP NAS is preventing us from going around on the outside (perhaps not unlike its refusal to work with Portainer-Volumes), so we're going to take the inside route.

First, check this value in Portainer-Networks:

Assuming it's the standard 172.17.0.1, I want you to stop you OliveTin stack, and add the following just above restart: unless-stopped:

    extra_hosts:
      - host.docker.internal:${DOCKER_GATEWAY:-172.17.0.1} # host.docker.internal is generally not predefined on Linux hosts.

Then, in your env vars, change the value of PORTAINER_HOST to:

PORTAINER_HOST=host.docker.internal

Click Update the stack, and the run the healthcheck again.

Bridge isn't 172.17.0.1--
IPV4 Subnet - 10.0.3.0/24 IPV4 Gateway - 10.0.3.1

QNAP dances to its own beat, eh? So, still do the above just as shown, but add the following to the bottom of your list of env vars:

DOCKER_GATEWAY=10.0.3.1

And, don't forget to change the value of PORTAINER_HOST to host.docker.internal