OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

Thanks. That enabled me to stop the TWiT process. I don't recall ever changing the healthchecks_io field, but putting "https://hc-ping.com/your_custom_uuid" in there let me run it without error, and then a page refresh confirmed it worked. Thanks!

Olivetin worked great on my old synology nas but for some reason I can't get it to work on my new model. Unfortunately I deleted the stack in portainer that I had been using after it wouldn't initially work, but I think I set it up how it was before and it still isn't working.

Everything works up until I run the check/try to do anything and I get this.

EDIT:
I had to check to affirm my own sanity and yes, the nas can ping itself from itself.

Try using the Docker internal gateway as your IP address, and see if that makes a difference. So, instead of 192.168.1.2, use 172.17.0.1. This assumes CDVR is running on the same Synology NAS as OliveTin.

That was it! Thank you!

I tried to do a new stack in Portainer extension in Docker the stack option is no longer there any help would be appreciated to fix it I am running on Macos.

Thanks

The Portainer extension, installed through Docker Desktop, is not the full version. Uninstall that, then from Terminal:

docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    cr.portainer.io/portainer/portainer-ce:latest

Thanks

Are you not able to put a decimal channel in the manual recording? It shows up red in the box. @bnhf

Pretty sure I fixed that. What version of OliveTin are you running?

Version: 2023.03.25

Sorry, I meant what version of OliveTin-for-Channels are you running. Looks like you're well behind the latest though. I'm guessing yours doesn't even include Project One-Click, or show a date in the upper left corner:

screenshot-channels0-2024_10_20-14_15_29

Verified using channel numbers containing decimals was fixed some time back -- so update to latest please.

EDIT: Make sure you're using the latest Docker Compose and environment variables, a shown in Post #1 in this thread.

New bnhf/olivetin:latest (aka bnhf/olivetin:2024.10.20) pushed today opening up an interesting new area for OliveTin, which is the ability to interact with Docker on the host computer. So, for those of you inclined to dream-up new OliveTin Actions, this means that anything Docker-related you find yourself doing from the command line can now be an Action!

The first new Action to take advantage of this is for ah4c users. This Action will query the adb device status of one or more ah4c containers, and send an e-mail alert if any devices are shown as "unauthorized" or in any state other than the desired "connected" (which for whatever reason is listed as "device" when executing an "adb devices").

screenshot-htpc6-2024_10_20-16_25_18

When updating to this new version of OliveTin, the latest OliveTin-for-Channels compose is required (2024.10.20), which adds a date to the compose (all of my composes will eventually be dated -- as they are updated) and passes the Docker socket to OliveTin (updated in Post #1, but here for convenience also). No changes have been made to env vars (assuming you're already up-to-date on those):

version: '3.9'
services:
  olivetin: # This docker-compose requires little or no editing. Set the Environment variables section of Portainer.
    # 2024.10.20
    # 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.
      - /var/run/docker.sock:/var/run/docker.sock
    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

Sample env vars:

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
[email protected]
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
[email protected]
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Mountain
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
LOGS_SHARE=/mnt/channelsdvr
HOST_SFS_PORT=8080
FOLDER=/web
PORTAINER_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PORTAINER_HOST=docker-host

I have the new stack deployed but for some reason I can't access the dashboard from my bookmarked like I used to before?

You probably need to clear your browser's cache. Clearing just "images" should do it.

I'm on an M1 Mac mini running the latest version of Portainer, and Docker Desktop, which includes Compose, but the version # shown is a different format.

Will this work, or do I need to upgrade that component seperately?

I see what I wrote isn't as clear as it could be -- I just meant you need to use the latest OliveTin compose, which is dated 2024.10.20.

I have tried that and went on another computer to access it and still nothing. I think I must have not setup something correctly when I went to go update. I wonder if I should just start over and rebuild it all. I am really just needing the manual recordings section.

When I clicked on the published port is 1337:1337 and it goes to 0.0.0.0:1337 and when I go to the ip address of my portainer it goes nowhere as well with that port.

Checking for .running files that don't match with currently defined DVRs...
ls: cannot access '*.running': No such file or directory
level="debug" msg="Value of -configdir flag" value="."
level="error" msg="Config file error at startup. While parsing config: yaml: line 13: mapping values are not allowed in this context"
level="info" msg="OliveTin initializing" commit="1d446ac" date="2024-04-09T08:26:18Z" version="2024.04.09"

Go ahead and post the compose you're using, and the env vars, and I'll take a look. Redact the ALERT_EMAIL_PASSWORD and PORTAINER_TOKEN, if you've set either of those.

I took out the email and file server stuff because I feel like that just complicates things.

version: '3.9'
services:
  olivetin: # This docker-compose requires little or no editing. Set the Environment variables section of Portainer.
    # 2024.10.20
    # 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:
      - 1337: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.
      - 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.
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped
CHANNELS_DVR=XXX.XXX.XXX.XXX:8089
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
TZ=US/Central
TAG=latest
PORTAINER_TOKEN=
PORTAINER_HOST=XXX.XXX.XXX.XXX
DOMAIN=localdomain
HOST_DIR=/Volumes/4TB/olivetin-for-channels/data
DVR_SHARE=/Volumes/4TB/olivetin-for-channels/dvr
LOGS_SHARE=/Volumes/4TB/olivetin-for-channels/channelsdvr

If you look at the sample env vars in Post #1, you'll see these two values are separate now. Change to:

CHANNELS_DVR_HOST=XXX.XXX.XXX.XXX
CHANNELS_DVR_PORT=8089

That should sort you out...

1 Like