# 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 # Use the value from the 'TZ identifier' column TZ=Etc/UTC # Directory configuration. This .env file should be in /opt/docker, using the defaults below. # You MUST use absolute paths, otherwise each bind mount would be created relative to each compose file, and not # the current directory DOCKER_DIR=/opt/docker DOCKER_DATA_DIR=${DOCKER_DIR}/data DOCKER_APP_DIR=${DOCKER_DIR}/apps # The process user ID and group ID to use for applicable containers. # Run 'id' to see your UID and GID # On oracle, both these values should be set to 1001 # Ensure that any pre-existing folders within the DOCKER_DATA_DIR (i.e. folders that were included within the template repository) # have the correct permissions. # You can run # sudo chown $PUID:$PGID -R $DOCKER_DATA_DIR # replacing the variables with the actual values e.g sudo chown 1001:1001 -R /opt/docker/data PUID=1000 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. # # 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 # compose.yaml. e.g. you could remove the line '- gluetun/compose.yaml' and any services in that file (gluetun and gost) will not be included # 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 modify the domain used for specific services by editing the app specific hostname variables below. # If you have multiple domains, I would recommend providing a second domain here (e.g. 'DOMAIN2=example.io') and then editing the app specific hostname variables to use `DOMAIN2` instead of `DOMAIN`. # FOR DUCKDNS USERS: create only 1 record at duckdns e.g. example.duckdns.org and set the DOMAIN variable below to that value. You will access your apps via subdomains of it e.g. aiostreams.example.duckdns.org 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_APP_DIR}/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. # If you use DuckDNS, there isn't a need to create additional records, you only need one record created e.g. example.duckdns.org # If you use Afraid.org, it is recommended to manually set the specific domains below to the correct domains e.g. set AIOSTREAMS_HOSTNAME to aio.mooo.com # 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?} AIOLISTS_HOSTNAME=aiolists.${DOMAIN?} AIOSTREAMS_HOSTNAME=aiostreams.${DOMAIN} AIOSTREMIO_HOSTNAME=aiostremio.${DOMAIN} ANIME_KITSU_HOSTNAME=kitsu.${DOMAIN} ARCANE_HOSTNAME=arcane.${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} DEBRIDAV_HOSTNAME=debridav.${DOMAIN} DECYPHARR_HOSTNAME=decypharr.${DOMAIN} DOCKGE_HOSTNAME=dockge.${DOMAIN} DOZZLE_HOSTNAME=dozzle.${DOMAIN} EASYNEWS_PLUS_HOSTNAME=easynews-plus.${DOMAIN} EASYNEWS_PLUS_PLUS_HOSTNAME=easynews-plus-plus.${DOMAIN} HONEY_HOSTNAME=${DOMAIN} HUNTARR_HOSTNAME=huntarr.${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} REDLIB_HOSTNAME=redlib.${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} STREAMYSTATS_HOSTNAME=streamystats.${DOMAIN} STREMIO_ACCOUNT_BOOTSTRAPPER_HOSTNAME=stremio-account-bootstrapper.${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} YAMTRACK_HOSTNAME=yamtrack.${DOMAIN} ZILEAN_HOSTNAME=zilean.${DOMAIN} ZIPLINE_HOSTNAME=zipline.${DOMAIN} ZURG_HOSTNAME=zurg.${DOMAIN} # ==================================================== # DOCKER COMPOSE CONFIGURATION # ==================================================== # This is the name of the compose project. # Reference: https://docs.docker.com/compose/how-tos/environment-variables/envvars/#compose_project_name COMPOSE_PROJECT_NAME=aio # When set to true, any containers that are not defined within this compose file will be removed when the stack is stopped or removed. # Reference: https://docs.docker.com/compose/how-tos/environment-variables/envvars/#compose_remove_orphans COMPOSE_REMOVE_ORPHANS=true # Delegate building to bake for improved performance. COMPOSE_BAKE=true # Defining the location of the compose file. COMPOSE_FILE=${DOCKER_DIR}/compose.yaml # Whether to change the name of the network that all containers run on or to connect to an external network. # Reference: https://docs.docker.com/compose/how-tos/networking/#use-a-pre-existing-network DOCKER_NETWORK=aio_network DOCKER_NETWORK_EXTERNAL=false