I've just updated my docker-compose examples, in OliveTin-for-Channels, for the many excellent container projects that are suitable for use with Channels -- via the WebUI for Docker -- Portainer. I thought I'd post them here as well, for anyone not using OliveTin yet.
The idea with the way these yamls are structured, is that you shouldn't need to do ANY editing of the yaml itself, all installation specific values should be set via the environment variables in that section of Portainer-Stacks:
In alphabetical order:
ADBTuner
version: '3.9'
services:
# GitHub home for this project with setup instructions: Caution! This project is not open source, and is not available on GitHub
# Docker Hub home for this project: https://hub.docker.com/u/turtletank99
adbtuner:
image: turtletank99/adbtuner:${TAG}
container_name: adbtuner
dns_search: ${DOMAIN} # Change to the name of your LAN's domain, which is usually local or localdomain
init: true
ports:
- ${HOST_PORT}:5592 # Use the same port number the container is using, or optionally change it if the port is already in use on your host
volumes:
- adbtuner:/app/.config
restart: unless-stopped
volumes:
adbtuner:
name: ${HOST_VOLUME}
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
DOMAIN=localdomain
HOST_PORT=5592
HOST_VOLUME=adbtuner_config
ah4c (formerly AndroidHDMI-for-Channels)
version: '3.9'
services:
# 2024.10.30
# GitHub home for this project with setup instructions: https://github.com/sullrich/ah4c
# Docker Hub home for this project: https://hub.docker.com/repository/docker/bnhf/ah4c
ah4c:
image: bnhf/ah4c:${TAG}
container_name: ah4c
hostname: ah4c
dns_search: ${DOMAIN} # Specify the name of your LAN's domain, usually local or localdomain
ports:
- ${ADBS_PORT}:5037 # Port used by adb-server
- ${HOST_PORT}:7654 # Port used by this ah4c proxy
- ${WSCR_PORT}:8000 # Port used by ws-scrcpy
environment:
- IPADDRESS=${IPADDRESS} # Hostname or IP address of this ah4c extension to be used in M3U file (also add port number if not in M3U)
- NUMBER_TUNERS=${NUMBER_TUNERS} # Number of tuners you'd like defined 1, 2, 3, 4, 5, 6, 7, 8 or 9 supported
- TUNER1_IP=${TUNER1_IP} # Streaming device #1 with adb port in the form hostname:port or ip:port
- TUNER2_IP=${TUNER2_IP} # Streaming device #2 with adb port in the form hostname:port or ip:port
- TUNER3_IP=${TUNER3_IP} # Streaming device #3 with adb port in the form hostname:port or ip:port
- TUNER4_IP=${TUNER4_IP} # Streaming device #4 with adb port in the form hostname:port or ip:port
- TUNER5_IP=${TUNER5_IP} # Streaming device #5 with adb port in the form hostname:port or ip:port
- TUNER6_IP=${TUNER6_IP} # Streaming device #6 with adb port in the form hostname:port or ip:port
- TUNER7_IP=${TUNER7_IP} # Streaming device #7 with adb port in the form hostname:port or ip:port
- TUNER8_IP=${TUNER8_IP} # Streaming device #8 with adb port in the form hostname:port or ip:port
- TUNER9_IP=${TUNER9_IP} # Streaming device #9 with adb port in the form hostname:port or ip:port
- ENCODER1_URL=${ENCODER1_URL} # Full URL for tuner #1 in the form http://hostname/stream or http://ip/stream
- ENCODER2_URL=${ENCODER2_URL} # Full URL for tuner #2 in the form http://hostname/stream or http://ip/stream
- ENCODER3_URL=${ENCODER3_URL} # Full URL for tuner #3 in the form http://hostname/stream or http://ip/stream
- ENCODER4_URL=${ENCODER4_URL} # Full URL for tuner #4 in the form http://hostname/stream or http://ip/stream
- ENCODER5_URL=${ENCODER5_URL} # Full URL for tuner #5 in the form http://hostname/stream or http://ip/stream
- ENCODER6_URL=${ENCODER6_URL} # Full URL for tuner #6 in the form http://hostname/stream or http://ip/stream
- ENCODER7_URL=${ENCODER7_URL} # Full URL for tuner #7 in the form http://hostname/stream or http://ip/stream
- ENCODER8_URL=${ENCODER8_URL} # Full URL for tuner #8 in the form http://hostname/stream or http://ip/stream
- ENCODER9_URL=${ENCODER9_URL} # Full URL for tuner #9 in the form http://hostname/stream or http://ip/stream
- STREAMER_APP=${STREAMER_APP} # Streaming device name and streaming app you're using in the form scripts/streamer/app (use lowercase with slashes between as shown)
- CHANNELSIP=${CHANNELSIP} # Hostname or IP address of the Channels DVR server itself
- ALERT_SMTP_SERVER=${ALERT_SMTP_SERVER} # The domainname:port of the SMTP server you'll be using like smtp.gmail.com:587. This is for sending ah4c alerts if tuning fails.
- ALERT_AUTH_SERVER=${ALERT_AUTH_SERVER} # The auth server for the e-mail you'll be using like smtp.gmail.com
- ALERT_EMAIL_FROM=${ALERT_EMAIL_FROM} # The e-mail address you'd like your ah4c failure alert e-mails to show as being from.
- ALERT_EMAIL_PASS=${ALERT_EMAIL_PASS} # Gmail and Yahoo both support the creation of app-specific e-mail passwords, and this is the way to go! It's NOT recommended to use your everyday e-mail password.
- ALERT_EMAIL_TO=${ALERT_EMAIL_TO} # The e-mail address you'd like your alert e-mails sent to.
#- ALERT_WEBHOOK_URL=""
- LIVETV_ATTEMPTS=${LIVETV_ATTEMPTS} # For FireTV Live Guide tuning only, set maximum number of attempts at finding the desired channel
- CREATE_M3US=${CREATE_M3US} # Set to true to create device-specific M3Us for use with Amazon Prime Premium channels -- requires a FireTV device
- UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # Set to true if you'd like the sample scripts and STREAMER_APP scripts updated whether they exist or not
- UPDATE_M3US=${UPDATE_M3US} # Set to true if you'd like the sample m3us updated whether they exist or not
- TZ=${TZ} # Your local timezone in Linux "tz" format
- SPEED_MODE=${SPEED_MODE} # Set to false if you'd like the target streaming app to be closed after each tuning cycle (limited script support).
- KEEP_WATCHING=${KEEP_WATCHING} # In supported scripts, set the delay before resending a tuning deeplink to prevent "Are you still watching?" type messages. Examples: Use 4h for 4 hours or 240m for 240 minutes.
volumes:
- ${HOST_DIR}/ah4c/scripts:/opt/scripts # pre/stop/bmitune.sh scripts will be stored in this bound host directory under streamer/app
- ${HOST_DIR}/ah4c/m3u:/opt/m3u # m3u files will be stored here and hosted at http://<hostname or ip>:7654/m3u for use in Channels DVR - Custom Channels settings
- ${HOST_DIR}/ah4c/adb:/root/.android # Persistent data directory for adb keys
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
DOMAIN=localdomain tailxxxxx.ts.net
ADBS_PORT=5037
HOST_PORT=7654
SCRC_PORT=7655
IPADDRESS=htpc6:7654
NUMBER_TUNERS=5
TUNER1_IP=firestick-rack1:5555
ENCODER1_URL=http://encoder_48007/0.ts
TUNER2_IP=firestick-rack2:5555
ENCODER2_URL=http://encoder_48007/4.ts
TUNER3_IP=firestick-rack3:5555
ENCODER3_URL=http://encoder_48007/8.ts
TUNER4_IP=firestick-rack4:5555
ENCODER4_URL=http://encoder_48007/12.ts
TUNER5_IP=firestick-travel2:5555
ENCODER5_URL=http://encoder_23393/0.ts
STREAMER_APP=scripts/firetv/dtvdeeplinks
CHANNELSIP=media-server6
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_AUTH_SERVER=smtp.gmail.com
[email protected]
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
[email protected]
UPDATE_SCRIPTS=true
UPDATE_M3US=true
TZ=US/Mountain
SPEED_MODE=false
KEEP_WATCHING=4h
HOST_DIR=/data
Channels DVR
version: '3.9'
services:
# 2024.09.15
# Docker Hub home for this project: https://hub.docker.com/r/fancybits/channels-dvr
channels-dvr:
image: fancybits/channels-dvr:${TAG}
container_name: channels-dvr
#devices:
#- /dev/dri:/dev/dri
ports:
- ${HOST_PORT}:${CHANNELS_PORT}
environment:
- CHANNELS_PORT=${CHANNELS_PORT}
- TZ=${TZ}
volumes:
- ${HOST_DIR}/channels-dvr:/channels-dvr
- ${DVR_SHARE}:${DVR_CONTAINER_DIR}
#network_mode: host
restart: unless-stopped
#volumes: # use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /channels-dvr inside the container
#channels-dvr:
#external: ${VOL_EXTERNAL}
#name: ${VOL_NAME}
TAG=tve
HOST_PORT=8089
CHANNELS_PORT=8089
TZ=America/Denver
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
DVR_CONTAINER_DIR=/shares/DVR
cc4c (ChromeCapture-for-Channels)
version: '3.9'
services:
cc4c:
image: fancybits/chrome-capture-for-channels:${TAG}
container_name: cc4c
command:
- sh
- -c
- |
Xvfb :99 -screen 0 1920x1080x16 &
x11vnc -display :99 -forever &
sed -i '/videoBitsPerSecond/c\ videoBitsPerSecond: process.env.VIDEO,' main.js;
sed -i '/audioBitsPerSecond/c\ audioBitsPerSecond: process.env.AUDIO,' main.js;
exec node main.js
#devices:
#- /dev/dri:/dev/dri # Uncomment for Intel Quick Sync (GPU) access
ports:
- ${HOST_PORT}:5589 # cc4c proxy port
- ${HOST_VNC_PORT}:5900 # VNC port for entering credentials
environment:
- VIDEO=${VIDEO}
- AUDIO=${AUDIO}
- TZ=${TZ} # Add your timezone in the Environment variables section with "name" set to TZ and "value" to your local timezone
volumes:
- cc4c:/home/chrome # Creates persistent Docker Volume in /var/lib/docker/volumes for Chrome data and main.js
restart: unless-stopped
volumes:
cc4c:
name: ${HOST_VOLUME}
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=5589
HOST_VNC_PORT=5900
VIDEO=9500000
AUDIO=192000
TZ=US/Mountain
HOST_VOLUME=cc4c_config
EPlusTV
version: '3.9'
services:
# 2024.09.12
# GitHub home for this project with setup instructions: https://github.com/m0ngr31/EPlusTV
# Docker Hub home for this project: https://hub.docker.com/r/m0ngr31/eplustv
eplustv:
image: m0ngr31/eplustv:${TAG}
container_name: eplustv
ports:
- ${HOST_PORT}:${PORT} # For use with Portainer this port is being mapped to 8185, as Portainer uses port 8000
environment:
- START_CHANNEL=${START_CHANNEL} # What the first channel number should be.
- NUM_OF_CHANNELS=${NUM_OF_CHANNELS} # How many channels to create? This is dependent on the networks you are using. A good number to start with is >= 150 if you are using ESPN+.
- LINEAR_CHANNELS=${LINEAR_CHANNELS} # Break out dedicated linear channels.
- PROXY_SEGMENTS=${PROXY_SEGMENTS} # Proxy keyed *.ts files.
- PUID=${PUID} # Current user ID. Use if you have permission issues. Needs to be combined with PGID.
- PGID=${PGID} # Current group ID. Use if you have permission issues. Needs to be combined with PUID.
- PORT=${PORT} # Port the API will be served on. You can set this if it conflicts with another service in your environment.
- ESPNPLUS=${ESPNPLUS} # Set to false if you only want events that come from your TV provider.
- ESPN=${ESPN} # ESPN: Set if your TV provider supports it.
- ESPN2=${ESPN2} # ESPN2: Set if your TV provider supports it.
- ESPN3=${ESPN3} # ESPN3: Set if your TV provider supports it.
- ESPNU=${ESPNU} # ESPNU: Set if your TV provider supports it.
- SEC=${SEC} # SEC Network: Set if your TV provider supports it.
- SECPLUS=${SECPLUS} # SEC Network+: Set if your TV provider supports it.
- ACCN=${ACCN} # ACCN: Set if your TV provider supports it.
- ACCNX=${ACCNX} # ACCNX: Set if your TV provider supports it.
- LONGHORN=${LONGHORN} # Longhorn Network: Set if your TV provider supports it.
- ESPNEWS=${ESPNEWS} # ESPNews: Set if your TV provider supports it.
- ESPN_PPV=${ESPN_PPV} # PPV: Set if you have purchased PPV events.
- FOXSPORTS=${FOXSPORTS} # Set if your TV provider supports it.
- FOXSPORTS_ALLOW_REPLAYS=${FOXSPORTS_ALLOW_REPLAYS} # If you would like to schedule events that aren't live.
- MAX_RESOLUTION=${MAX_RESOLUTION} # Max resolution to use. Valid options are UHD/HDR, UHD/SDR, 1080p, 720p, and 540p (Some providers don't offer 4K or 1080p and will attempt to play the highest framerate available for selected resolution).
- FOX_ONLY_4K=${FOX_ONLY_4K} # Only grab 4K events.
- PARAMOUNTPLUS=${PARAMOUNTPLUS} # Set if you would like CBS Sports events.
- CBSSPORTSHQ=${CBSSPORTSHQ} # Set if you would like the CBS Sports HQ channel (only available with LINEAR_CHANNELS).
- GOLAZO=${GOLAZO} # Set if you would like the Golazo Network channel (only available with LINEAR_CHANNELS).
- NFLPLUS=${NFLPLUS} # Set if you would like NFL+ events.
- NFLNETWORK=${NFLNETWORK} # Set if you would like the NFL Network channel (only available with LINEAR_CHANNELS).
- NFLREDZONE=${NFLREDZONE} # Set if you would like NFL RedZone (have to have NFL+ Premium).
- B1GPLUS=${B1GPLUS} # Set if you would like to use B1G+.
- B1GPLUS_USER=${B1GPLUS_USER} # B1G+ Username.
- B1GPLUS_PASS=${B1GPLUS_PASS} # B1G+ Password.
- MSGPLUS=${MSGPLUS} # Set if you would like to use MSG+
- MSGPLUS_USER=${MSGPLUS_USER} # MSG+ Username.
- MSGPLUS_PASS=${MSGPLUS_PASS} # MSG+ Password.
- FLOSPORTS=${FLOSPORTS} # Set if you would like FloSports events.
- MTNWEST=${MTNWEST} # Set if you would like Mountain West events.
- MLBTV=${MLBTV} # Set if you would like to use MLB.tv.
- MLBTV_USER=${MLBTV_USER} # MLB.tv Username.
- MLBTV_PASS=${MLBTV_PASS} # MLB.tv Password.
- MLBTV_ONLY_FREE=${MLBTV_ONLY_FREE} # Only schedule free games.
volumes:
- eplustv:/app/config
restart: unless-stopped
volumes:
eplustv:
name: ${HOST_VOLUME}
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=8185
START_CHANNEL=1
NUM_OF_CHANNELS=150
LINEAR_CHANNELS=false
PROXY_SEGMENTS=false
PUID=1000
PGID=1000
PORT=8000
ESPNPLUS=true
ESPN=false
ESPN2=false
ESPN3=false
ESPNU=false
SEC=false
SECPLUS=false
ACCN=false
ACCNX=false
LONGHORN=false
ESPNEWS=false
ESPN_PPV=false
FOXSPORTS=false
FOXSPORTS_ALLOW_REPLAYS=false
MAX_RESOLUTION=UHD/SDR
FOX_ONLY_4K=false
PARAMOUNTPLUS=false
CBSSPORTSHQ=false
GOLAZO=false
NFLPLUS=false
NFLNETWORK=false
NFLREDZONE=false
B1GPLUS=false
B1GPLUS_USER=false
B1GPLUS_PASS=false
MSGPLUS=false
MSGPLUS_USER=false
MSGPLUS_PASS=false
FLOSPORTS=false
MTNWEST=false
MLBTV=false
MLBTV_USER=false
MLBTV_PASS=false
MLBTV_ONLY_FREE=false
HOST_VOLUME=eplustv_config
FileBot
version: '3.9'
services:
filebot:
image: jlesage/filebot:${TAG}
container_name: filebot
ports:
- ${HOST_PORT}:5800 # The container port number (to the right of the colon) needs to be left as is. Set the environment variable to the same, or change it if there's a conflict.
environment:
- DARK_MODE=${DARK_MODE} # 0=off, 1=on
volumes:
- ${HOST_DIR}/filebot:/config:rw # Add the parent directory on your Docker host you'd like to use
- ${DVR_SHARE}:/storage:rw # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share.
restart: unless-stopped
#volumes: # use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /storage inside the container
#channels-dvr:
#external: true
TAG=latest
HOST_PORT=5800
DARK_MODE=1
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
FrndlyTV-for-Channels
version: '3.9'
services:
# GitHub home for this project: https://github.com/matthuisman/frndlytv-for-channels
# Matt Huisman's webpage for this project: https://www.matthuisman.nz/2021/11/frndly-tv-for-channels.html
# Docker Hub home for this project: https://hub.docker.com/r/matthuisman/frndlytv-for-channels
frndlytv-for-channels:
image: matthuisman/frndlytv-for-channels:${TAG}
container_name: frndlytv-for-channels
ports:
- ${HOST_PORT}:80
environment:
- IP=${IP} # For Geo-locating FrndlyTV to a different area
- USERNAME=${USERNAME} # FrndlyTV username (the email you used to sign-up)
- PASSWORD=${PASSWORD} # FrndlyTV password (the password you chose when you signed-up)
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=8183
IP=<yourrealorfakeipforgeolocation>
USERNAME=<yourfrndlytvusername>
PASSWORD=<yourfrndlytvpassword>
MediaInfo
version: '3.9'
services:
mediainfo:
image: jlesage/mediainfo:${TAG} # The version of the container you'd like to run. Typically "latest".
container_name: mediainfo
ports:
- ${HOST_PORT}:5800 # The container port number (to the right of the colon) needs to be left as is. Set the environment variable to the same, or change it if there's a conflict.
environment:
- DARK_MODE=${DARK_MODE} # 0=off, 1=on.
volumes:
- ${HOST_DIR}/mediainfo:/config:rw # Add the parent directory on your Docker host you'd like to use.
- ${DVR_SHARE}:/storage:ro # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share.
restart: unless-stopped
#volumes: # use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /storage inside the container.
#channels-dvr:
#external: ${VOL_EXTERNAL}
#name: ${VOL_NAME}
TAG=latest
HOST_PORT=5801
DARK_MODE=1
HOST_DIR=/data
DVR_SHARE=/mnt/dvr
MLB.tv-for-Channels
version: '3.9'
services:
channels-baseball:
image: matty8199/channels-baseball:${TAG}
container_name: channels-baseball
ports:
- ${HOST_PORT}:8080
environment:
- APP_URL=${APP_URL} # the other required environment var is APP_URL, which needs to be set to your server's IP and port 8080. so, for example, if you're running this on IP 192.168.1.100, then that env should be set as follows: APP_URL=http://192.168.1.100:8080
# if you have another service on your machine at port 8080, you can change this port - just make sure you change it in all applicable locations (both in your docker run command / docker-compose config, as well as in the channels m3u config).
- LOG_LEVEL=${LOG_LEVEL} # exactly what you'd expect: defines how much information the logs will show. i would set this to warning initially to avoid a huge log file, but we may need to adjust if there are any issues that i need more detailed logs on.
- MLB_USERNAME=${MLB_USERNAME} # Your MLB.tv username. the MLB_USERNAME and MLB_PASSWORD env vars above are both obviously required. put your valid MLB credentials into these two slots.
- MLB_PASSWORD=${MLB_PASSWORD} # Your MLB.tv password.
- MLB_BITRATE=${MLB_BITRATE} # the default bitrate / video quality, defaults to 720p @ 60 fps (5600). available options are (just enter the number only in the env section of the docker-compose file): 5600 (720p @ 60 fps), 3500 (720p), 2500 (540p), 1800 (504p), 1200 (360p), 800 (288p), 514 (216p), 192 (180p).
# all options are in Kbps (ie. 5600 = 5600K) and are 30 fps unless otherwise specified. the following example would default to 720p, 30fps: MLB_BITRATE=3500
- MLB_PLAYLIST_FIRST_CHANNEL=${MLB_PLAYLIST_FIRST_CHANNEL} # the first channel in the playlist (i.e. the channel number where your MLB section will start in the guide). defaults to 20000, unless you specify otherwise. in my example, i used 777 because i wanted an easy triple tap number to get to the beginning of the list.
- MLB_TEAM_ORDER=${MLB_TEAM_ORDER} # the order you want the teams to appear in the guide (will start from the first channel variable and increment one at a time in the order you specify here). if there are teams that are blacked out in your area and you want to exclude those teams, you can just remove them from the list here.
# the MLB Big Inning feed can be added by including MLB as a team short code somewhere in this list (remove MLB from the list if you don't want the Big Inning feed included).
- MLB_TIMEZONE=${MLB_TIMEZONE} # i almost wanted to say this is required, but technically it's not. if you don't set this, things should still work as far as watching games...but the guide data will be way off. if you don't specify a timezone here, the app will default to UTC.
# example USA timezone values for this variable (just enter the America/xxx or Pacific/xxx part of the timezone below into the env spot in the docker-compose file, leave out the parenthetical timezone name):
# America/New_York (eastern), America/Chicago (central), America/Denver (mountain w/ DST), America/Phoenix (mountain standard, no DST), America/Los_Angeles (pacific), America/Anchorage (alaska), Pacific/Honolulu (hawaii),
- MLB_SHOW_TV_FEEDS=${MLB_SHOW_TV_FEEDS} # these two environment variables can be set to true or false to turn the TV and/or radio feeds on or off
- MLB_SHOW_RADIO_FEEDS=${MLB_SHOW_RADIO_FEED}
volumes:
- storage_app:/var/www/html/storage/app
- storage_logs:/var/www/html/storage/logs
restart: unless-stopped
volumes:
storage_app:
name: ${HOST_VOLUME_APP}
storage_logs:
name: ${HOST_VOLUME_LOGS}
TAG=latest
HOST_PORT=8080
APP_URL=http://server.ip.goes.here:8080
LOG_LEVEL=warning
MLB_USERNAME=
MLB_PASSWORD=
MLB_BITRATE=5600
MLB_PLAYLIST_FIRST_CHANNEL=777
MLB_TEAM_ORDER=NYM,SDP,PIT,LAA,ATL,MIA,PHI,WAS,CHC,CIN,MIL,STL,ARI,COL,LAD,SFG,BAL,BOS,NYY,TBR,TOR,CWS,CLE,DET,KCR,MIN,HOU,OAK,SEA,TEX,MLB
MLB_TIMEZONE=America/Los_Angeles
MLB_SHOW_TV_FEEDS=true
MLB_SHOW_RADIO_FEEDS=false
HOST_VOLUME_APP=MLBTV_APP
HOST_VOLUME_LOGS=MLBTV_LOGS
OliveTin-for-Channels
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
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
Organizr
version: '3.9'
services:
organizr:
image: organizr/organizr:${TAG}
container_name: organizr
hostname: organizr
ports:
- ${HOST_PORT}:80
environment:
- PUID=nobody
- PGID=nobody
- TZ=${TZ}
volumes:
- ${HOST_DIR}/organizr:/config
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=80
TZ=US/Mountain
HOST_DIR=/data
Plex-for-Channels
version: '3.9'
services:
# GitHub home for this project with setup instructions: https://github.com/jgomez177/plex-for-channels
# Docker container home for this project: https://ghcr.io/jgomez177/plex-for-channels
plex-for-channels:
image: ghcr.io/jgomez177/plex-for-channels:${TAG}
container_name: plex-for-channels
ports:
- ${HOST_PORT}:${PLEX_PORT}
environment:
- PLEX_PORT=${PLEX_PORT}
- PLEX_CODE=${PLEX_CODE}
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7779
PLEX_PORT=7777
PLEX_CODE=local
Pluto-for-Channels (jonmaddox)
version: '3.9'
services:
# GitHub home for this project: https://github.com/maddox/pluto-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/jonmaddox/pluto-for-channels
pluto-for-channels:
image: jonmaddox/pluto-for-channels:${TAG}
container_name: pluto-for-channels
ports:
- ${HOST_PORT}:80
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=8184
Pluto-for-Channels (joagomez)
version: '3.9'
services:
# GitHub home for this project with setup instructions: https://github.com/jgomez177/pluto-for-channels
# Docker container home for this project: https://ghcr.io/jgomez177/pluto-for-channels
pluto-for-channels:
image: ghcr.io/jgomez177/pluto-for-channels:${TAG}
container_name: pluto-for-channels
ports:
- ${HOST_PORT}:${PLUTO_PORT} # Use the same port number the container is using, or optionally change it if the port is already in use on your host
environment:
- PLUTO_PORT=${PLUTO_PORT}
- PLUTO_CODE=${PLUTO_CODE} # ALLOWED_COUNTRY_CODES: us_east - United States East Coast, us_west - United States West Coast, local - Local IP address Geolocation, ca - Canada, uk - United Kingdom,
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7779
PLUTO_PORT=7777
PLUTO_CODE=local,us_west,us_east,ca,uk
Samsung-TVPlus-for-Channels
version: '3.9'
services:
# 2024.08.31
# GitHub home for this project: https://github.com/matthuisman/samsung-tvplus-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/matthuisman/samsung-tvplus-for-channels
samsung-tvplus-for-channels:
image: matthuisman/samsung-tvplus-for-channels:${TAG}
container_name: samsung-tvplus-for-channels
ports:
- ${HOST_PORT}:80 # Use the same port number the container is using, or optionally change it if the port is already in use on your host
environment:
- REGIONS=${REGIONS} # Comma separated list of regions to use. us,kr,it,in,gb,fr,es,de,ch,ca,at or all supported.
- TZ=${TZ} # Add your local timezone in standard linux format. E.G. US/Eastern, US/Central, US/Mountain, US/Pacific, etc
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=8182
REGIONS=us
TZ=US/Mountain
Stirr-for-Channels
version: '3.9'
services:
# GitHub home for this project with setup instructions: https://github.com/robbiet480/stirr-for-channels
# Docker Hub home for this project: https://hub.docker.com/r/robbiet480/stirr-for-channels
stirr-for-channels:
image: robbiet480/stirr-for-channels:${TAG}
container_name: stirr-for-channels
ports:
- ${HOST_PORT}:80 # Use the same port number the container is using, or optionally change it if the port is already in use on your host
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=8181
Stream-Link-Manager-for-Channels
version: '3.9'
services:
# 2024.09.12
# GitHub home for this project with setup instructions: https://github.com/babsonnexus/stream-link-manager-for-channels
# Docker container home for this project: https://ghcr.io/babsonnexus/stream-link-manager-for-channels
slm:
image: ghcr.io/babsonnexus/stream-link-manager-for-channels:${TAG:-latest}
container_name: slm
ports:
- ${SLM_PORT:-5000}:5000
environment:
- TZ=${TIMEZONE:-UTC}
volumes:
- slm_files:/app/program_files
- ${CHANNELS_FOLDER}:/app/channels_folder
restart: unless-stopped
volumes:
slm_files:
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
SLM_PORT=5000
TIMEZONE=US/Mountain
CHANNELS_FOLDER=/mnt/dvr
Tailscale
version: '3.9'
services:
tailscale:
image: tailscale/tailscale:${TAG}
container_name: tailscaled
cap_add:
- NET_ADMIN
- NET_RAW
environment:
#- TS_HOSTNAME=${TS_HOSTNAME} # Usually not necessary for your hostname to be the same name on the tailscale network
#- TS_AUTHKEY=${TS_AUTHKEY} # Generate auth keys here: https://login.tailscale.com/admin/settings/keys
#- TS_AUTH_ONCE=${TS_AUTH_ONCE}
#- TS_ROUTES=${TS_ROUTES} # Creates a subnet router for Tailscale. Use your subnet's CIDR in the form: 192.168.1.0/24
#- TS_ACCEPT_DNS=${TS_ACCEPT_DNS} # Set to false for Pi-hole Docker setups
- TS_SOCKET=${TS_SOCKET}
- TS_EXTRA_ARGS=${TS_EXTRA_ARGS} # Add any other supported arguments in the docker commandline style: e.g. --advertise-exit-node
- TS_STATE_DIR=${TS_STATE_DIR} # Required to create a persistent container state that will survive reboots
volumes:
- ${HOST_DIR}:/var/lib # Creates a tailscale directory under /data for persistence
- /dev/net/tun:/dev/net/tun
network_mode: host
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
TS_SOCKET=/var/run/tailscale/tailscaled.sock
TS_EXTRA_ARGS=--accept-routes
TS_STATE_DIR=/var/lib/tailscale
HOST_DIR=/data
Tubi-for-Channels
version: '3.9'
services:
# GitHub home for this project with setup instructions: https://github.com/jgomez177/tubi-for-channels
# Docker container home for this project: https://ghcr.io/jgomez177/tubi-for-channels
tubi-for-channels:
image: ghcr.io/jgomez177/tubi-for-channels:${TAG}
container_name: tubi-for-channels
ports:
- ${HOST_PORT}:${TUBI_PORT}
environment:
- TUBI_PORT=${TUBI_PORT}
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7778
TUBI_PORT=7777
VLC-Bridge-Fubo
version: '3.9'
services:
vlc-bridge-fubo:
image: registry.gitlab.com/yankees4life/vlc-bridge-fubo:${TAG}
container_name: vlc-bridge-fubo
ports:
- ${HOST_PORT}:7777 # Use the same port number the container is using, or optionally change it if the port is already in use on your host
environment:
- FUBO_USER=${FUBO_USER}
- FUBO_PASS=${FUBO_PASS}
volumes:
- vlc-bridge-fubo:/app/Config
restart: unless-stopped
volumes:
vlc-bridge-fubo:
name: ${HOST_VOLUME} # This project will store its data in /var/lib/docker/volumes/${HOST_VOLUME}. <project-name_config> is a good name choice.
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7777
FUBO_USER=<yourfubousername>
FUBO_PASS=<yourfubopassword>
HOST_VOLUME=vlc-bridge-fubo_config
VLC-Bridge-PBS
version: '3.9'
services:
vlc-bridge-pbs:
image: registry.gitlab.com/miibeez/vlc-bridge-pbs:${TAG}
container_name: vlc-bridge-pbs
ports:
- ${HOST_PORT}:7777
environment:
- TZ=${TZ}
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7777
TZ=US/Mountain
VLC-Bridge-UK
version: '3.9'
services:
vlc-bridge-uk:
image: registry.gitlab.com/miibeez/vlc-bridge-uk:${TAG}
container_name: vlc-bridge-uk
ports:
- ${HOST_PORT}:7777
environment:
- ITV_USER=${ITV_USER}
- ITV_PASS=${ITV_PASS}
restart: unless-stopped
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
HOST_PORT=7777
ITV_USER=<youritvusername>
ITV_PASS=<youritvpassword>
Watchtower (for bulk container updating)
version: '3.9'
services:
# 2024.09.05
# GitHub home for this project: https://github.com/containrrr/watchtower
# Setup instructions: https://containrrr.dev/watchtower/
watchtower:
image: containrrr/watchtower:${TAG} # typically latest -- tags should be used on all containers for Watchtower compatibility
container_name: watchtower
environment:
- PATH=${PATH} # typically /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- WATCHTOWER_RUN_ONCE=${WATCHTOWER_RUN_ONCE} # Set to true for run once mode
labels:
- 'com.centurylinklabs.watchtower.enable=true'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# Default Environment variables can be found below under stderr -- copy and paste into Portainer-Stacks Environment variables section in Advanced mode
TAG=latest
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
WATCHTOWER_RUN_ONCE=true
All of these examples are available via this OliveTin Action as well:
via this pull-down:
with results shown, as usual, in the log under stdout (the docker-compose itself) and stderr (environment variable samples for use in that section of Portainer-Stacks -- copy and paste using "Advanced mode"):