feat!: a few (important) changes

- move core configuratiion (authelia, traefik) to main .env
- move all hostname definitions to main .env
- add cloudflare ddns to automatically create DNS records
- automatically determine stremio addon hostnames for authelia using predefined hostname environment variables
- give all services a profile, including the previously implicit "default" services. Instead provide an explicit "required" profile that contains traefik and authelia. Allowing you to restart a specific profile without including the previous default services and also allowing you to have more control.
This commit is contained in:
Viren070
2025-04-18 20:14:28 +01:00
parent 7d54f12edc
commit ec66655997
57 changed files with 215 additions and 187 deletions
+133 -41
View File
@@ -1,5 +1,5 @@
# This file is used to store the common configuration that applies to either most containers or
# configuration for the compose project itself.
# This file is used to store the core configuration for this template. Filling this .env in is the minimum requirement to get the template up and running.
# It will set up Traefik and Authelia
# The timezone to use, find your timezone database name from
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
@@ -7,11 +7,11 @@
TZ=Etc/UTC
# Directory configuration. This .env file should be in $DOCKER_APP_DIR/.env
# You MUST use absolute paths, otherwise each bind mount would be created relative to each compose file, and not
# the current directory
DOCKER_DATA_DIR=/opt/docker/data
DOCKER_APP_DIR=/opt/docker/apps
# The process user ID and group ID to use for applicable containers.
# Run 'id' to see your UID and GID
# Ensure that any pre-existing folders within the DOCKER_DATA_DIR (i.e. folders that were included within the template repository)
@@ -26,37 +26,26 @@ PGID=1000
# =========================================================
# PROFILE CONFIGURATION
# =========================================================
# This compose project is split up into profiles to allow you to only run the services you want to use.
# Every single service in this project has its own profile, there are also profiles for a group of services.
# There is a 'required' profile that contains services that are considered required and you should not remove this
# profile. This profile contains authelia and traefik. These two services are the core of the template as traefik
# allows external access while authelia provides authentication.
# From there, you can add other apps by adding the relevant profile to the COMPOSE_PROFILES variable below.
# e.g. If you wanted to add aiostreams and mediaflow proxy, you would add the 'aiostreams' and 'mediaflow' profiles to the COMPOSE_PROFILES variable.
# like so: COMPOSE_PROFILES="required,aiostreams,mediaflow"
# You can also add the 'all' profile which will include every service in the template.
# This can be useful if you prefer to manually edit the root compose.yaml file to remove services from the include list or removing the profiles.
#
# As this compose.yaml is split up into profiles, you can choose which services you want to run by using profiles.
# If you only run
# docker compose up -d
# it will only start the default profile.
#
# If you only want to use the default profile, you can leave the COMPOSE_PROFILES variable empty.
# This will only include some basic services used for monitoring and managing the other services and server management.
# This is useful if you aren't interested in any of the additional services I have included in this template.
#
# If you want to make use of the additional profiles, you can do one of the following:
#
# You should set the profiles that you want to use by setting the COMPOSE_PROFILES variable below using a comma separated list.
# e.g. COMPOSE_PROFILES="stremio,seanime"
#
# You can also use the --profile flag to specify which profile you want to use when running the compose file, but this will need to be specified
# each time, even when you want to compose down the containers.
#
# Note: For the profiles you are using, it is REQUIRED for you to fill in every environment variable that is needed by that profile.
# You can edit the compose.yaml to remove a service from a profile by just removing the profile from the profiles list for that service
# e.g. profiles: ["stremio", "all"] -> profiles: ["all"]
# Now, when you use the --profile flag with stremio, that service will not be started.
# If you remove the profiles list altogether, the service will always be started, regardless of the profile(s) you use or do not use
#
# Find a list of the available profiles and the services they include at: https://guides.viren070.me/selfhosting/template
# You can also look at the compose.yaml file to see which services are included in each profile.
#
# TL;DR, each folder in the apps directory is a profile.
# And additional profiles are as follows: stremio, indexers, debrid_media_server
# A final profile - all - is provided that includes every service in the template.
COMPOSE_PROFILES="all"
# If you set the COMPOSE_PROFILES variable here, all future 'docker compose' commands will abide by this variable.
# You can, however, override this variable by using the --profile flag with docker compose commands.
# This is useful when you want to run commands for a specific service e.g. restarting mediafusion only with docker compose --profile mediafusion restart
# That command will only restart mediafusion and its related services (scheduler, browserless, redis, mongo)
COMPOSE_PROFILES="required"
# Other than modifying the profiles, you may also look at the compose.yaml file in the root of $DOCKER_APP_DIR
# This file 'includes' all the other compose.yaml files. You can remove a specific file from the list to remove that from the final
@@ -64,6 +53,116 @@ COMPOSE_PROFILES="all"
# in the compose.
# Ensure that you don't remove files that other included files may rely on.
# ============================================================
# TRAEFIK
# ============================================================
# Traefik is the reverse proxy which provides external access to our apps.
# Email provided to Let's Encrypt for notifications
LETSENCRYPT_EMAIL=
# The domain name to use for all services that are going to be exposed with Traefik.
# This will be the default domain used for all services that are exposed with Traefik.
# You can override this by setting a 'DOMAIN' variable in the .env file for that service.
DOMAIN=example.com
# =========================================================
# AUTHELIA
# =========================================================
# Authelia provides authentication for our apps. It supports access control policies, passkeys, webauthn and 2FA.
# These should all be different random strings of at least 64 characters.
# You can use the following command to generate them:
# echo "$(openssl rand -base64 64 | tr -d '=/' | tr -d '\n')"
AUTHELIA_SESSION_SECRET=""
AUTHELIA_STORAGE_ENCRYPTION_KEY=""
AUTHELIA_JWT_SECRET=""
# You can find additional configuration for Authelia in Authelia's .env file which will also
# tell you how to add users
# Currently there is only one user (user1 with password 'password') and it has access to everything.
# If you would like to configure access control policies, you will need to edit the access_control key
# in the ${DOCKER_DATA_DIR}/data/authelia/config/configuration.yml file.
# ==========================================================
# CLOUDFLARE DDNS
# ==========================================================
# If you would like to use the Cloudflare DDNS service to automatically create the DNS A/AAAA records for your services,
# you must:
# - Be using your own domain (This will NOT work with services like Afraid.org and DuckDNS).
# - Have a Cloudflare account and have your domain added to it
# - Have your domain set to use Cloudflare's nameservers.
# - Add 'cloudflare-ddns' to the 'COMPOSE_PROFILES' variable above. (or use the 'all' profile)
# Then, obtain a cloudflare API token at (https://dash.cloudflare.com/profile/api-tokens) using the 'Edit zone DNS' template and
# provide it here.
CLOUDFLARE_API_TOKEN=
# WARNING: if you do not want to use Cloudflare DDNS, you must make sure to manually add the DNS A records for each subdomain you choose to use.
# The required configuration for this .env is now done, you can add other services to the COMPOSE_PROFILES variable above.
# Some apps will require additional configuration in their own .env files - which will be located in the same directory as their compose.yaml file in the app's folder
# You can optionally also edit the subdomains below
# These values are the subdomains that Traefik will use to route traffic to the services.
# You can modify these values to suit your needs, but ensure that they are unique and do not conflict with other services.
ADDON_MANAGER_HOSTNAME=addon-manager.${DOMAIN?}
AIOSTREAMS_HOSTNAME=aiostreams.${DOMAIN}
AIOSTREMIO_HOSTNAME=aiostremio.${DOMAIN}
AUTHELIA_HOSTNAME=auth.${DOMAIN}
AUTOSYNC_HOSTNAME=autosync.${DOMAIN}
BAZARR_HOSTNAME=bazarr.${DOMAIN}
BAZARR4K_HOSTNAME=4k.bazarr.${DOMAIN}
BESZEL_HOSTNAME=beszel.${DOMAIN}
COMET_HOSTNAME=comet.${DOMAIN}
DASHDOT_HOSTNAME=dash.${DOMAIN}
DOCKGE_HOSTNAME=dockge.${DOMAIN}
DOZZLE_HOSTNAME=dozzle.${DOMAIN}
EASYNEWS_PLUS_HOSTNAME=easynews-plus.${DOMAIN}
HONEY_HOSTNAME=${DOMAIN}
JACKETT_HOSTNAME=jackett.${DOMAIN}
JACKETTIO_HOSTNAME=jackettio.${DOMAIN}
JELLYFIN_HOSTNAME=jellyfin.${DOMAIN}
JELLYSEER_HOSTNAME=jellyseer.${DOMAIN}
LIBRESPEED_HOSTNAME=speedtest.${DOMAIN}
MEDIAFLOW_PROXY_HOSTNAME=mediaflow-proxy.${DOMAIN}
MEDIAFUSION_HOSTNAME=mediafusion.${DOMAIN}
MINECRAFT_HOSTNAME=mc.${DOMAIN}
NZBHYDRA2_HOSTNAME=nzbhydra2.${DOMAIN}
OMG_TV_STREMIO_ADDON_HOSTNAME=omg-tv-addon.${DOMAIN}
OVERSEERR_HOSTNAME=overseerr.${DOMAIN}
PLAUSIBLE_HOSTNAME=plausible.${DOMAIN}
PLEX_HOSTNAME=plex.${DOMAIN}
PORTAINER_HOSTNAME=portainer.${DOMAIN}
PROWLARR_HOSTNAME=prowlarr.${DOMAIN}
RADARR_HOSTNAME=radarr.${DOMAIN}
RADARR4K_HOSTNAME=4k.radarr.${DOMAIN}
RADARRANIME_HOSTNAME=anime.radarr.${DOMAIN}
SEANIME_HOSTNAME=seanime.${DOMAIN}
SEARXNG_HOSTNAME=searxng.${DOMAIN}
SONARR_HOSTNAME=sonarr.${DOMAIN}
SONARR4K_HOSTNAME=4k.sonarr.${DOMAIN}
SONARRANIME_HOSTNAME=anime.sonarr.${DOMAIN}
SPEEDTEST_TRACKER_HOSTNAME=speedtest-tracker.${DOMAIN}
STREMIO_CATALOG_PROVIDERS_HOSTNAME=stremio-catalogues.${DOMAIN}
STREMIO_JACKETT_HOSTNAME=stremio-jackett.${DOMAIN}
STREMIO_SERVER_HOSTNAME=stremio-server.${DOMAIN}
STREMIO_TRAKT_ADDON_HOSTNAME=stremio-trakt.${DOMAIN}
STREMTHRU_HOSTNAME=stremthru.${DOMAIN}
TAUTULLI_HOSTNAME=tautulli.${DOMAIN}
TMDB_ADDON_HOSTNAME=tmdb.${DOMAIN}
TORBOX_MANAGER_HOSTNAME=tbm.${DOMAIN}
TRAEFIK_HOSTNAME=traefik.${DOMAIN}
UPTIME_KUMA_HOSTNAME=status.${DOMAIN}
VAULTWARDEN_HOSTNAME=vaultwarden.${DOMAIN}
ZILEAN_HOSTNAME=zilean.${DOMAIN}
ZIPLINE_HOSTNAME=zipline.${DOMAIN}
ZURG_HOSTNAME=zurg.${DOMAIN}
# This is the list of all the domains for which Cloudflare DDNS will create A/AAAA records for.
DOMAINS=${ADDON_MANAGER_HOSTNAME},${AIOSTREAMS_HOSTNAME},${AIOSTREMIO_HOSTNAME},${AUTHELIA_HOSTNAME},${AUTOSYNC_HOSTNAME},${BAZARR_HOSTNAME},${BAZARR4K_HOSTNAME},${BESZEL_HOSTNAME},${COMET_HOSTNAME},${DASHDOT_HOSTNAME},${DOCKGE_HOSTNAME},${DOZZLE_HOSTNAME},${EASYNEWS_PLUS_HOSTNAME},${HONEY_HOSTNAME},${JACKETT_HOSTNAME},${JACKETTIO_HOSTNAME},${JELLYFIN_HOSTNAME},${JELLYSEER_HOSTNAME},${LIBRESPEED_HOSTNAME},${MEDIAFLOW_PROXY_HOSTNAME},${MEDIAFUSION_HOSTNAME},${MINECRAFT_HOSTNAME},${NZBHYDRA2_HOSTNAME},${OMG_TV_STREMIO_ADDON_HOSTNAME},${OVERSEERR_HOSTNAME},${PLAUSIBLE_HOSTNAME},${PLEX_HOSTNAME},${PORTAINER_HOSTNAME},${PROWLARR_HOSTNAME},${RADARR_HOSTNAME},${RADARR4K_HOSTNAME},${RADARRANIME_HOSTNAME},${SEANIME_HOSTNAME},${SEARXNG_HOSTNAME},${SONARR_HOSTNAME},${SONARR4K_HOSTNAME},${SONARRANIME_HOSTNAME},${SPEEDTEST_TRACKER_HOSTNAME},${STREMIO_CATALOG_PROVIDERS_HOSTNAME},${STREMIO_JACKETT_HOSTNAME},${STREMIO_SERVER_HOSTNAME},${STREMIO_TRAKT_ADDON_HOSTNAME},${STREMTHRU_HOSTNAME},${TAUTULLI_HOSTNAME},${TMDB_ADDON_HOSTNAME},${TORBOX_MANAGER_HOSTNAME},${TRAEFIK_HOSTNAME},${UPTIME_KUMA_HOSTNAME},${VAULTWARDEN_HOSTNAME},${ZILEAN_HOSTNAME},${ZURG_HOSTNAME}
# ====================================================
# DOCKER COMPOSE CONFIGURATION
# ====================================================
@@ -79,10 +178,3 @@ COMPOSE_BAKE=true
# Reference: https://docs.docker.com/compose/how-tos/networking/#use-a-pre-existing-network
DOCKER_NETWORK=aio_network
DOCKER_NETWORK_EXTERNAL=false
# Now, you need to fill in the other .env files within each folder for the apps you are using.
# You must, at least, fill out the .env in the default profile.
# This includes: authelia, dash, dozzle, flame, honey, traefik, uptime kuma, watchtower
# As mentioned before, you can remove the relevant line in the root compose if you don't want to use some of these.
# e.g. you can get rid of/comment out the '- flame/compose.yaml' line if you don't want to use flame.
-1
View File
@@ -1 +0,0 @@
ADDON_MANAGER_HOSTNAME=
-3
View File
@@ -1,7 +1,6 @@
# ---------------------------------------------------------
# AIOSTREMIO
# ---------------------------------------------------------
# Profiles: all, stremio
#
# The AIOSTREMIO_ADMIN_USERNAME and AIOSTREMIO_ADMIN_PASSWORD are the credentials that you will use to access the AIOStremio dashboard.
#
@@ -13,8 +12,6 @@
# The DEBRID_API_KEY is the API key for the debrid service you want to use by default.
# You can also set addon specific debrid API keys through the config.json file.
# ---------------------------------------------------------
AIOSTREMIO_HOSTNAME=
ADMIN_USERNAME=
ADMIN_PASSWORD=
MEDIAFLOW_API_PASSWORD=
+5 -21
View File
@@ -19,23 +19,9 @@
# Note: Due to the way Stremio addons work, they cannot be protected by Authelia.
# This is because the addons need to be publicly accessible in order for Stremio (and other stremio addon clients) to be able to access them.
# Your domain without the protocol (e.g. example.com)
DOMAIN=
# The display name for WebAuthn that shows in the browser.
AUTHELIA_WEBAUTHN_DISPLAY_NAME="Authelia"
# These should all be different random strings of at least 64 characters.
# You can use the following command to generate them:
# echo "$(openssl rand -base64 64 | tr -d '=/' | tr -d '\n')"
AUTHELIA_SESSION_SECRET=""
AUTHELIA_STORAGE_ENCRYPTION_KEY=""
AUTHELIA_JWT_SECRET=""
# The subdomain that Authelia uses.
# This is the subdomain that users are redirected to when they need to authenticate.
AUTHELIA_SUBDOMAIN=auth
# The valid users for Authelia are stored in the users.yml file.
# This is located in `${DOCKER_DATA_DIR}/data/authelia/config/users.yml`
# You must add your users to this file in order to be able to access secured services.
@@ -45,10 +31,8 @@ AUTHELIA_SUBDOMAIN=auth
# You can run this command to view the file, replacing ${DOCKER_DATA_DIR} with its actual value:
# cat ${DOCKER_DATA_DIR}/data/authelia/config/notification.txt
# To protect your Stremio addon configure pages, set the value below to a list of subdomains of your stremio addons separated by a |
# Any subdomains that match the below will only have specific pages protected by Authelia (e.g. /configure). The resources that are protected
# will work for all the addons in this template, and will protect the pages used to configure the addon while leaving the core addon unprotected,
# allowing apps to use the addon.
# so DO NOT include subdomains for your other apps here, as it would mean those other apps would not have all resources protected by Authelia.
# If you aren't using any stremio addons, you can set this to a random string that won't match any subdomains.
STREMIO_ADDON_SUBDOMAINS=aio|aiostremio|comet|easynews|mediafusion|jackettio|stremio-jackett|stremthru|omgtv|stremio-catalogues|stremio-trakt
# A list of domains to apply page specific rules to.
# Although we can't fully protect Stremio addons, we can still add authentication to specific pages like the configuration pages.
# All the domains within this comma separated list will have specific pages protected with Authelia.
# Do NOT include non-stremio addon domains here. It would mean that those services would not be fully protected, or in most cases not protected at all.
STREMIO_ADDON_HOSTNAMES=${AIOSTREAMS_HOSTNAME},${AIOSTREMIO_HOSTNAME},${COMET_HOSTNAME},${EASYNEWS_PLUS_HOSTNAME},${MEDIAFUSION_HOSTNAME},${JACKETTIO_HOSTNAME},${STREMIO_JACKETT_HOSTNAME},${STREMTHRU_HOSTNAME},${OMG_TV_STREMIO_ADDON_HOSTNAME},${STREMIO_CATALOG_PROVIDERS_HOSTNAME},${STREMIO_TRAKT_ADDON_HOSTNAME},${TMDB_ADDON_HOSTNAME}
+15 -3
View File
@@ -9,14 +9,14 @@ services:
X_AUTHELIA_CONFIG_FILTERS: template
TEMPLATE_AUTHELIA_SESSION_SECRET: ${AUTHELIA_SESSION_SECRET?}
TEMPLATE_DOMAIN: ${DOMAIN?}
TEMPLATE_AUTHELIA_SUBDOMAIN: ${AUTHELIA_SUBDOMAIN?}
TEMPLATE_AUTHELIA_HOSTNAME: ${AUTHELIA_HOSTNAME?}
TEMPLATE_AUTHELIA_STORAGE_ENCRYPTION_KEY: ${AUTHELIA_STORAGE_ENCRYPTION_KEY?}
TEMPLATE_AUTHELIA_WEBAUTHN_DISPLAY_NAME: ${AUTHELIA_WEBAUTHN_DISPLAY_NAME?}
TEMPLATE_AUTHELIA_JWT_SECRET: ${AUTHELIA_JWT_SECRET?}
TEMPLATE_STREMIO_ADDON_SUBDOMAINS: ${STREMIO_ADDON_SUBDOMAINS?}
TEMPLATE_STREMIO_ADDON_HOSTNAMES: ${STREMIO_ADDON_HOSTNAMES?}
labels:
- "traefik.enable=true"
- "traefik.http.routers.authelia.rule=Host(`${AUTHELIA_SUBDOMAIN?}.${DOMAIN}`)"
- "traefik.http.routers.authelia.rule=Host(`${AUTHELIA_HOSTNAME?}`)"
- "traefik.http.routers.authelia.entryPoints=websecure"
- "traefik.http.routers.authelia.tls.certresolver=letsencrypt"
- "traefik.http.services.authelia.loadbalancer.server.port=9091"
@@ -30,6 +30,10 @@ services:
condition: service_healthy
authelia_postgres:
condition: service_healthy
profiles:
- authelia
- required
- all
authelia_redis:
image: redis:latest
@@ -43,6 +47,10 @@ services:
interval: 10s
timeout: 5s
retries: 5
profiles:
- authelia
- required
- all
authelia_postgres:
image: postgres:17-alpine
@@ -60,3 +68,7 @@ services:
interval: 20s
timeout: 5s
retries: 5
profiles:
- authelia
- required
- all
-10
View File
@@ -1,10 +0,0 @@
# AutoSync allows you to sync your libraries across multiple instances of Sonarr and Radarr.
# It also functions as an autoscan for your media servers, as it can send a scan to your media servers when a new file is added to the library
# through Sonarr/Radarr.
#
#
# However, you need to configure the config.yaml file in ${DOCKER_DATA_DIR}/data/autosync/config.yaml
# This can be done after starting up your sonarr/radarr instances.
#
# You can alternatively use the web interface to configure it.
AUTOSYNC_HOSTNAME=
-2
View File
@@ -1,2 +0,0 @@
BAZARR_HOSTNAME=
BAZARR4K_HOSTNAME=
+1 -4
View File
@@ -1,8 +1,5 @@
# Beszel is a tool for monitoring status (CPU, RAM, Disk, Network) of your VPS in detail.
BESZEL_HOSTNAME=
# For beszel to work correctly, you first need to start the hub only.
# Do this by running:
# Do this by running (you must already have traefik and authelia running):
# docker compose up -d beszel
# After the hub is up, you need to go to the web interface and click '+ Add System' in the top right corner.
+20
View File
@@ -0,0 +1,20 @@
services:
cloudflare-ddns:
image: favonia/cloudflare-ddns:1
container_name: cloudflare-ddns
restart: unless-stopped
user: "${PUID}:${PGID}"
network_mode: host
read_only: true
cap_drop: [all]
security_opt: [no-new-privileges:true]
environment:
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
# Your Cloudflare API token
- DOMAINS=${DOMAINS}
# Your domains (separated by commas)
- PROXIED=false
# Tell Cloudflare to cache webpages and hide your IP (optional)
profiles:
- cloudflare-ddns
- all
-6
View File
@@ -7,12 +7,6 @@
# ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ #
#=================================================#
# =============================== #
# Traefik Configuration #
# =============================== #
# The domain to use for Comet.
COMET_HOSTNAME=
# ============================== #
# Stremio Addon Configuration #
# ============================== #
+1
View File
@@ -9,6 +9,7 @@ include:
- bazarr/compose.yaml
- beszel/compose.yaml
- byparr/compose.yaml
- cloudflare-ddns/compose.yaml
- comet/compose.yaml
- dash/compose.yaml
- dockge/compose.yaml
-2
View File
@@ -4,8 +4,6 @@
# Dash Dot is a dashboard that you can use to monitor your VPS. It provides information about the CPU, RAM, Disk, and Network usage.
# You will be able to access the dashboard at https://${DASHDOT_HOSTNAME}
# ---------------------------------------------------------
# e.g. dash.example.com
DASHDOT_HOSTNAME=
# This is the title of the page that shows up in the browser tab
DASHDOT_PAGE_TITLE=dash.
# Whether you want your domain name to show up in the dashboard
+3
View File
@@ -17,3 +17,6 @@ services:
- "traefik.http.routers.dash.entrypoints=websecure"
- "traefik.http.routers.dash.tls.certresolver=letsencrypt"
- "traefik.http.routers.dash.middlewares=authelia@docker"
profiles:
- dash
- all
-9
View File
@@ -1,9 +0,0 @@
# Dockge is a management interface for Docker compose applications.
#
# Note that with the way this template is setup, dockge will not work for running compose files.
# It detects the individual compose files and tries to run them as a separate compose project
# But our compose.yaml file is a single compose project that includes all the other compose files.
# Dockge does not detect this single compose project and tries to run each of the included compose files as a separate project.
#
# You should only use dockge for editing the compose.yaml files and the terminal.
DOCKGE_HOSTNAME=
-9
View File
@@ -1,9 +0,0 @@
# ---------------------------------------------------------
# DOZZLE
# ---------------------------------------------------------
# Dozzle is a log viewer for Docker. It is used to view the logs of the containers.
# This will be helpful for debugging purposes.
# You will be able to access the logs at https://${DOZZLE_HOSTNAME}
# ---------------------------------------------------------
DOZZLE_HOSTNAME=
+3
View File
@@ -22,3 +22,6 @@ services:
timeout: 30s
retries: 5
start_period: 30s
profiles:
- dozzle
- all
-1
View File
@@ -1 +0,0 @@
EASYNEWS_PLUS_HOSTNAME=
-5
View File
@@ -1,5 +0,0 @@
# Honey is one of the start page services included in this template. The other is flame. I recommend honey.
# The domain to access honey at. I set the hostname for my start page to the root of my domain (e.g. example.com)
# but you can set it to a subdomain if you want.
HONEY_HOSTNAME=
+3
View File
@@ -15,3 +15,6 @@ services:
- "traefik.http.routers.honey.entrypoints=websecure"
- "traefik.http.routers.honey.tls.certresolver=letsencrypt"
- "traefik.http.routers.honey.middlewares=authelia@docker"
profiles:
- honey
- all
-1
View File
@@ -1 +0,0 @@
JACKETT_HOSTNAME=
-2
View File
@@ -1,5 +1,3 @@
JACKETTIO_HOSTNAME=
# Jackett instance details. If you haven't run your instance yet, you can leave these blank.
# Once jackett is running you can find the API key in the web UI at the top right corner of the page.
JACKETT_URL=http://jackett:9117
-1
View File
@@ -1 +0,0 @@
JELLYFIN_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
JELLYSEER_HOSTNAME=
-1
View File
@@ -1,2 +1 @@
LIBRESPEED_HOSTNAME=
LIBRESPEED_TITLE=LibreSpeed
+4 -2
View File
@@ -1,5 +1,7 @@
MEDIAFLOW_HOSTNAME=
API_PASSWORD=
# Whether to use a proxy or not.
# You can use http://warp:8080 for warp and http://gluetun:8080 for gluetun.
PROXY_URL=http://warp:1080
# Whether to route ALL traffic through the proxy.
# ALL_PROXY=true
TRANSPORT_ROUTES={ "https://torrentio.strem.fun": { "proxy": true } }
+1 -1
View File
@@ -9,7 +9,7 @@ services:
- .env
labels:
- "traefik.enable=true"
- "traefik.http.routers.mediaflow.rule=Host(`${MEDIAFLOW_HOSTNAME?}`)"
- "traefik.http.routers.mediaflow.rule=Host(`${MEDIAFLOW_PROXY_HOSTNAME?}`)"
- "traefik.http.routers.mediaflow.entrypoints=websecure"
- "traefik.http.routers.mediaflow.tls.certresolver=letsencrypt"
- "traefik.http.services.mediaflow.loadbalancer.server.port=8888"
+1 -2
View File
@@ -13,11 +13,10 @@
MEDIAFUSION_HOSTNAME=
# ========================================================
# CORE APPLICATION SETTINGS
# ========================================================
HOST_URL=https://${MEDIAFUSION_HOSTNAME}
HOST_URL=https://${MEDIAFUSION_HOSTNAME?}
POSTER_HOST_URL=https://${MEDIAFUSION_HOSTNAME}
# # openssl rand -hex 16
SECRET_KEY=
-1
View File
@@ -1 +0,0 @@
NZBHYDRA2_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
OMG_TV_STREMIO_ADDON_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
OVERSEERR_HOSTNAME=
-1
View File
@@ -7,7 +7,6 @@
# openssl rand -base64 48
# ---------------------------------------------------------
PLAUSIBLE_HOSTNAME=
PLAUSIBLE_SECRET_KEY_BASE=
# When you first run the container, it will be stuck on a crash loop due to some permission issues as a result of using bind mounts.
-2
View File
@@ -1,5 +1,3 @@
PLEX_HOSTNAME=
# Claim token for Plex. You can get it from https://www.plex.tv/claim
# It is only valid for 5 minutes, so after generating one, you must set it here and start your container.
# For the inital setup, you may need to have port 32400 open to access the web interface through the server IP, rather
-1
View File
@@ -1 +0,0 @@
PROWLARR_HOSTNAME=
-3
View File
@@ -1,3 +0,0 @@
RADARR_HOSTNAME=
RADARR4K_HOSTNAME=
RADARRANIME_HOSTNAME=
+6 -14
View File
@@ -1,17 +1,9 @@
# ---------------------------------------------------------
# SEANIME
# ---------------------------------------------------------
# Profiles: seanime, all
# Protected by authelia.
#
# IMPORTANT: Once you have the container running, you need to edit Seanime's config.toml file in order to set the correct host.
# Run the following command to do this.
# sudo sed -i 's/127.0.0.1/0.0.0.0/' ./data/seanime/config.toml
# Then, restart the container by running `sudo docker restart seanime
# Seanime requires no extra environment variables.
# However, after running the container, you will have to edit the host within the config.toml file.
# As otherwise, it only binds to localhost and will not be accessible.
#
# You can do this by running the following command:
# sudo sed -i 's/127.0.0.1/0.0.0.0/' ${DOCKER_DATA_DIR}/seanime/config.toml
# Note: If you are planning on using this for local media, you will not be able to use an external player
# as we have set up a password for seanime.
# ---------------------------------------------------------
SEANIME_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
SEARXNG_HOSTNAME=
-3
View File
@@ -1,3 +0,0 @@
SONARR_HOSTNAME=
SONARR4K_HOSTNAME=
SONARRANIME_HOSTNAME=
-1
View File
@@ -1,4 +1,3 @@
SPEEDTEST_TRACKER_HOSTNAME=
# Run this command to generate one, include the base64 prefix:
# echo -n 'base64:'; openssl rand -base64 32;
APP_KEY=""
-2
View File
@@ -1,5 +1,3 @@
STREMIO_CATALOG_PROVIDERS_HOSTNAME=
# We need to obtain a Trakt Client ID and secret in order for the addons to work.
# To obtain these credentials:
# 1. Create an account/Log in on Trakt.tv/ (https://trakt.tv).
-1
View File
@@ -1 +0,0 @@
STREMIO_JACKETT_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
STREMIO_SERVER_HOSTNAME=
-3
View File
@@ -1,6 +1,3 @@
STREMIO_TRAKT_ADDON_HOSTNAME=
# We need to obtain a Trakt Client ID and secret in order for the addons to work.
# To obtain these credentials:
# 1. Create an account/Log in on Trakt.tv/ (https://trakt.tv).
-1
View File
@@ -1 +0,0 @@
STREMTHRU_HOSTNAME=
-1
View File
@@ -1 +0,0 @@
TAUTULLI_HOSTNAME=
-1
View File
@@ -1,4 +1,3 @@
TMDB_ADDON_HOSTNAME=
# Get your API key from https://www.themoviedb.org/settings/api
TMDB_API_KEY=
# Get your API key from https://fanart.tv/get-an-api-key/
-1
View File
@@ -1 +0,0 @@
TBM_HOSTNAME=
+1 -1
View File
@@ -49,7 +49,7 @@ services:
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.tbm.rule=Host(`${TBM_HOSTNAME?}`)"
- "traefik.http.routers.tbm.rule=Host(`${TORBOX_MANAGER_HOSTNAME?}`)"
- "traefik.http.routers.tbm.entrypoints=websecure"
- "traefik.http.routers.tbm.tls.certresolver=letsencrypt"
- "traefik.http.routers.tbm.middlewares=authelia@docker"
-3
View File
@@ -1,5 +1,2 @@
# Email provided to Let's Encrypt for notifications
LETSENCRYPT_EMAIL=
TRAEFIK_HOSTNAME=
# https://www.authelia.com/integration/proxies/traefik/#trusted-proxies
TRUSTED_IPS=192.168.1.1
+4
View File
@@ -60,3 +60,7 @@ services:
depends_on:
authelia:
condition: service_healthy
profiles:
- traefik
- required
- all
-1
View File
@@ -1 +0,0 @@
UPTIME_KUMA_HOSTNAME=
+3
View File
@@ -17,3 +17,6 @@ services:
volumes:
- ${DOCKER_DATA_DIR}/uptime-kuma:/app/data
- /var/run/docker.sock:/var/run/docker.sock
profiles:
- uptime-kuma
- all
+1 -2
View File
@@ -1,5 +1,4 @@
VAULTWARDEN_HOSTNAME=
VAULTWARDEN_ADMIN_TOKEN=
# Whether to allow signups or not. Set to true to allow signups, false to disable signups.
# You can set it to false after you have created your account.
VAULTWARDEN_SIGNUPS_ALLOWED=true
VAULTWARDEN_SIGNUPS_ALLOWED=true
+3
View File
@@ -30,3 +30,6 @@ services:
{{- end -}}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
profiles:
- watchtower
- all
-1
View File
@@ -1 +0,0 @@
ZILEAN_HOSTNAME=
+1 -2
View File
@@ -12,7 +12,6 @@
# Most of the configuration for Zipline is done through the web interface.
#
# Within the server settings
# Set the 'Default domain' under 'Core' to the value you set for ZIPLINE_HOSTNAME
# Set the 'Default domain' under 'Core' to the value you set for ZIPLINE_HOSTNAME in the root .env which is zipline.${DOMAIN} by default
# Also enable Return HTTPS URLs
ZIPLINE_HOSTNAME=
ZIPLINE_CORE_SECRET=
-3
View File
@@ -16,6 +16,3 @@ ZURG_CONFIG_VERSION=v0.9
# To pull from a private repo, you can run the following command after creating a github token (classic) with the read:packages scope:
# echo "${GITHUB_TOKEN}" | docker login ghcr.io -u "${GITHUB_USERNAME}" --password-stdin && docker pull ghcr.io/debridmediamanager/zurg:${ZURG_VERSION}
# (replace ${GITHUB_TOKEN} and ${GITHUB_USERNAME} with your github token and username respectively, and ${ZURG_VERSION} with the version you want to pull)
ZURG_HOSTNAME=
+6 -6
View File
@@ -720,18 +720,18 @@ access_control:
default_policy: 'deny'
rules:
## Rules for stremio addon subdomains
## Protect certain pages (e.g /configure) only
## but leave api routes unprotected so apps can use them.
- domain_regex: '^({{ env "TEMPLATE_STREMIO_ADDON_SUBDOMAINS" }}).{{ env "TEMPLATE_DOMAIN" }}$'
## Apply page specific protection to stremio addons after escaping dots and replacing commans with pipes in the
## comma separated list of hostnames defined in the environment variable TEMPLATE_STREMIO_ADDON_HOSTNAMES.
## This ensures that addons are still usable while protecting important pages.
- domain_regex: '^({{ env "TEMPLATE_STREMIO_ADDON_HOSTNAMES" | replace "," "|" | replace "." "\\." }})$'
resources:
- '.*?/configure($|/.*$|\?.*$)' # rule for prtecting any resource that has the component somewhere in the path
- '.*?/(stremio|sidekick|admin|watch)($|\?.*$)' # rule for protecting any resource that ends with the component.
- '^/$' # rule for protecting the root path
policy: 'two_factor'
- domain_regex: '^({{ env "TEMPLATE_STREMIO_ADDON_SUBDOMAINS" }}).{{ env "TEMPLATE_DOMAIN" }}$'
## ensure other resources for stremio addons bypass authentication
- domain_regex: '^({{ env "TEMPLATE_STREMIO_ADDON_HOSTNAMES" | replace "," "|" | replace "." "\\." }})$'
policy: 'bypass'
- domain: '*.{{ env "TEMPLATE_DOMAIN" }}'