Though it is possible to do this via the command line, I don't support it that way -- only via Portainer. There are enough variables with this kind of thing without dealing with all of the different ways it can be run. Given the "stack" nature of this project, and the multiple environment variables Portainer makes things easier -- and more cross-platform.
So, you've got Docker Desktop running, and have added the Portainer extension -- if I remember correctly. Now's the time time to fire-up Portainer's excellent WebUI, and paste in the following to Portainer-Stacks:
version: '3.9'
services:
olivetin:
image: bnhf/olivetin:${TAG} # Add the tag like latest or test to the environment variables below
container_name: 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:
- 1337:1337
environment:
- CHANNELS_DVR=${CHANNELS_DVR} # Add your Channels DVR server in the form hostname:port or ip:port
- CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR_ALTERNATES} # 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
- 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
volumes:
- ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use
- ${DVR_SHARE}:/mnt/local-server-8089 # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share
- ${DVR2_SHARE}:/mnt/remote-server-8089 # Note that these volume mounts should always be to /mnt/hostname-port or /mnt/ip-port (dash rather than a colon between)
restart: unless-stopped
static-file-server:
image: halverneus/static-file-server:latest
container_name: static-file-server
dns_search: ${DOMAIN}
ports:
- 8080: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/dvr inside the container
#channels-dvr:
#external: true
And then, in the environment section of Portainer -- in Advanced mode, paste in the following:
TAG=latest
DOMAIN=tailxxxxx.ts.net
CHANNELS_DVR=local-server:8089
CHANNELS_DVR_ALTERNATES=remote-server:8089
CHANNELS_CLIENTS=appletv4k-den firestick-bedroom
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Mountain
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
DVR2_SHARE=/mnt/dvr2
FOLDER=/web
You'll need to modify the environment variables to suit your environment, and tweak the "volumes" section ONLY of the docker-compose to your setup. Use the comments in the docker-compose to help you with the env vars.
Based on what you posted above, your environment variables might look something like this. Note that I'm assuming your LAN domain is localdomain, also hostnames can never have spaces -- so double-check those. And, you need to figure out the full path to your Channels DVR data directory (after the /mnt/c I put in):
TAG=latest
DOMAIN=localdomain
CHANNELS_DVR=http://xxx.xxx.xxx.xxx:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=TS4K1 TS4K2
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Eastern
HOST_DIR=/mnt/c/'Program Files'/Docker/Docker/Data
DVR_SHARE=/mnt/c/
DVR2_SHARE=
FOLDER=/web
And your Volumes section of the compose, should have this modification. The dash instead of a colon shown below is on-purpose, and required:
volumes:
- ${HOST_DIR}/olivetin:/config # Add the parent directory on your Docker you'd like to use
- ${DVR_SHARE}:/mnt/xxx.xxx.xxx.xxx-8089 # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share