Created
September 6, 2020 15:25
-
-
Save Celant/d16505033006b7a064c82665cf40854d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "3.6" | |
services: | |
deluge: | |
image: "linuxserver/deluge" | |
container_name: "deluge" | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
volumes: | |
- ${USERDIR}/docker/deluge:/config | |
- ${USERDIR}/media/Downloads/completed:/downloads | |
- ${USERDIR}/media/Downloads/incomplete:/incomplete-downloads | |
- ${USERDIR}/docker/shared:/shared | |
networks: | |
- traefik_proxy | |
restart: always | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.deluge.rule=Host(`deluge.${DOMAINNAME}`)" | |
- "traefik.http.routers.deluge.entrypoints=websecure" | |
- "traefik.http.routers.deluge.tls=true" | |
- "traefik.http.routers.deluge.tls.certresolver=leresolver" | |
- "traefik.http.routers.deluge.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.deluge.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.deluge.loadbalancer.server.port=8112" | |
- "traefik.docker.network=docker_traefik_proxy" | |
radarr: | |
image: "linuxserver/radarr:latest" | |
container_name: "radarr" | |
volumes: | |
- ${USERDIR}/docker/radarr:/config | |
- ${USERDIR}/media/Downloads/completed:/downloads | |
- ${USERDIR}/media/Movies:/movies | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.radarr.rule=Host(`radarr.${DOMAINNAME}`)" | |
- "traefik.http.routers.radarr.entrypoints=websecure" | |
- "traefik.http.routers.radarr.tls=true" | |
- "traefik.http.routers.radarr.tls.certresolver=leresolver" | |
- "traefik.http.routers.radarr.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.radarr.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.radarr.loadbalancer.server.port=7878" | |
- "traefik.docker.network=docker_traefik_proxy" | |
sonarr: | |
image: "linuxserver/sonarr" | |
container_name: "sonarr" | |
volumes: | |
- ${USERDIR}/docker/sonarr:/config | |
- ${USERDIR}/media/Downloads/completed:/downloads | |
- ${USERDIR}/media/TVShows:/tv | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.sonarr.rule=Host(`sonarr.${DOMAINNAME}`)" | |
- "traefik.http.routers.sonarr.entrypoints=websecure" | |
- "traefik.http.routers.sonarr.tls=true" | |
- "traefik.http.routers.sonarr.tls.certresolver=leresolver" | |
- "traefik.http.routers.sonarr.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.sonarr.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.sonarr.loadbalancer.server.port=8989" | |
- "traefik.docker.network=docker_traefik_proxy" | |
jackett: | |
image: "linuxserver/jackett" | |
container_name: "jackett" | |
volumes: | |
- ${USERDIR}/docker/jackett:/config | |
- ${USERDIR}/media/Downloads/completed:/downloads | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.jackett.rule=Host(`jackett.${DOMAINNAME}`)" | |
- "traefik.http.routers.jackett.entrypoints=websecure" | |
- "traefik.http.routers.jackett.tls=true" | |
- "traefik.http.routers.jackett.tls.certresolver=leresolver" | |
- "traefik.http.routers.jackett.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.jackett.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.jackett.loadbalancer.server.port=9117" | |
- "traefik.docker.network=docker_traefik_proxy" | |
tautulli: | |
image: "tautulli/tautulli" | |
container_name: "tautulli" | |
volumes: | |
- ${USERDIR}/docker/tautulli:/config | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
- "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Logs:/plex_logs:ro" | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- internal | |
- traefik_proxy | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.tautulli.rule=Host(`tautulli.${DOMAINNAME}`)" | |
- "traefik.http.routers.tautulli.entrypoints=websecure" | |
- "traefik.http.routers.tautulli.tls=true" | |
- "traefik.http.routers.tautulli.tls.certresolver=leresolver" | |
- "traefik.http.routers.tautulli.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.tautulli.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.tautulli.loadbalancer.server.port=8181" | |
- "traefik.docker.network=docker_traefik_proxy" | |
ombi: | |
image: "linuxserver/ombi" | |
container_name: "ombi" | |
volumes: | |
- ${USERDIR}/docker/ombi:/config | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
- internal | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.ombi.rule=Host(`ombi.${DOMAINNAME}`) || Host(`requests.${DOMAINNAME}`)" | |
- "traefik.http.routers.ombi.entrypoints=websecure" | |
- "traefik.http.routers.ombi.tls=true" | |
- "traefik.http.routers.ombi.tls.certresolver=leresolver" | |
- "traefik.http.routers.ombi.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.ombi.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.ombi.loadbalancer.server.port=3579" | |
- "traefik.docker.network=docker_traefik_proxy" | |
speedtest: | |
build: | |
context: /opt/docker/speedtest/source | |
container_name: "speedtest" | |
volumes: | |
- ${USERDIR}/docker/speedtest:/database | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
- MODE=standalone | |
- TITLE=Plex Speed Diagnostic | |
- TELEMETRY=true | |
- ENABLE_ID_OBFUSCATION=true | |
- PASSWORD=letmein | |
- EMAIL="me@celant.co.uk" | |
networks: | |
- traefik_proxy | |
- internal | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.speedtest.rule=Host(`speedtest.${DOMAINNAME}`)" | |
- "traefik.http.routers.speedtest.entrypoints=websecure" | |
- "traefik.http.routers.speedtest.tls=true" | |
- "traefik.http.routers.speedtest.tls.certresolver=leresolver" | |
- "traefik.http.routers.speedtest.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.speedtest.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.services.speedtest.loadbalancer.server.port=80" | |
- "traefik.docker.network=docker_traefik_proxy" | |
influxdb: | |
image: "influxdb:latest" | |
container_name: "influxdb" | |
user: ${PUID} | |
volumes: | |
- ${USERDIR}/docker/influxdb:/var/lib/influxdb | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- internal | |
telegraf: | |
image: "telegraf:alpine" | |
container_name: "telegraf" | |
user: ${PUID} | |
volumes: | |
- ${USERDIR}/docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro | |
- "/:/hostfs:ro" | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- HOST_MOUNT_PREFIX=/hostfs | |
- HOST_PROC=/hostfs/proc | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- internal | |
depends_on: | |
- influxdb | |
varken: | |
image: "boerderij/varken:latest" | |
container_name: "varken" | |
volumes: | |
- ${USERDIR}/docker/varken:/config | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- internal | |
- default | |
depends_on: | |
- influxdb | |
grafana: | |
image: "grafana/grafana" | |
container_name: "grafana" | |
user: ${PUID} | |
volumes: | |
- ${USERDIR}/docker/grafana:/config | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
restart: always | |
environment: | |
- GF_PATHS_DATA=/config/data | |
- GF_PATHS_LOGS=/config/logs | |
- GF_PATHS_PLUGINS=/config/plugins | |
- GF_PATHS_CONFIG=/config/grafana.ini | |
- GF_INSTALL_PLUGINS=grafana-piechart-panel,grafana-worldmap-panel | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
- internal | |
depends_on: | |
- influxdb | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.grafana.rule=Host(`grafana.${DOMAINNAME}`) || Host(`grafana.celant.co.uk`)" | |
- "traefik.http.routers.grafana.entrypoints=websecure" | |
- "traefik.http.routers.grafana.tls=true" | |
- "traefik.http.routers.grafana.tls.certresolver=leresolver" | |
- "traefik.http.routers.grafana.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.grafana.tls.domains[0].sans=*.${DOMAINNAME}, grafana.celant.co.uk" | |
- "traefik.http.services.grafana.loadbalancer.server.port=3000" | |
- "traefik.docker.network=docker_traefik_proxy" | |
nginx_direct: | |
image: "nginxinc/nginx-unprivileged:alpine" | |
user: ${PUID} | |
container_name: "nginx_direct" | |
volumes: | |
- ${USERDIR}/docker/nginx_direct:/etc/nginx/conf.d | |
- "/opt/media:/usr/share/nginx/html" | |
- "/etc/localtime:/etc/localtime:ro" | |
- ${USERDIR}/docker/shared:/shared | |
environment: | |
- TZ=${TZ} | |
networks: | |
- traefik_proxy | |
restart: always | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.direct.rule=Host(`direct.${DOMAINNAME}`)" | |
- "traefik.http.routers.direct.entrypoints=websecure" | |
- "traefik.http.routers.direct.tls=true" | |
- "traefik.http.routers.direct.tls.certresolver=leresolver" | |
- "traefik.http.routers.direct.tls.domains[0].main=direct.${DOMAINNAME}" | |
- "traefik.http.services.direct.loadbalancer.server.port=8080" | |
- "traefik.docker.network=docker_traefik_proxy" | |
traefik: | |
hostname: traefik | |
image: traefik:latest | |
container_name: traefik | |
restart: always | |
domainname: ${DOMAINNAME} | |
command: | |
- "--log.level=DEBUG" | |
- "--api" | |
- "--providers.docker" | |
- "--providers.docker.endpoint=unix:///var/run/docker.sock" | |
- "--providers.docker.exposedbydefault=false" | |
- "--providers.file.filename=/etc/traefik/rules.toml" | |
- "--entrypoints.web.address=:80" | |
- "--entrypoints.websecure.address=:443" | |
- "--certificatesresolvers.leresolver.acme.dnschallenge=true" | |
- "--certificatesresolvers.leresolver.acme.dnschallenge.provider=cloudflare" | |
# - "--certificatesresolvers.leresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" | |
- "--certificatesresolvers.leresolver.acme.email=me@celant.co.uk" | |
- "--certificatesresolvers.leresolver.acme.storage=/etc/traefik/acme/acme.json" | |
networks: | |
- default | |
- traefik_proxy | |
- internal | |
ports: | |
- "80:80" | |
- "443:443" | |
environment: | |
- CF_API_EMAIL=${CLOUDFLARE_EMAIL} | |
- CF_API_KEY=${CLOUDFLARE_API_KEY} | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.traefik.rule=Host(`traefik.${DOMAINNAME}`)" | |
- "traefik.http.routers.traefik.service=api@internal" | |
- "traefik.http.routers.traefik.tls.certresolver=leresolver" | |
- "traefik.http.routers.traefik.tls.domains[0].main=${DOMAINNAME}" | |
- "traefik.http.routers.traefik.tls.domains[0].sans=*.${DOMAINNAME}" | |
- "traefik.http.routers.traefik.entrypoints=websecure" | |
- "traefik.http.routers.traefik.middlewares=authtraefik" | |
- "traefik.http.middlewares.authtraefik.basicauth.users=${BASIC_AUTH}" | |
# global redirect to https | |
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" | |
- "traefik.http.routers.http-catchall.entrypoints=web" | |
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https" | |
# middleware redirect | |
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock:ro | |
- ${USERDIR}/docker/traefik:/etc/traefik | |
- ${USERDIR}/docker/shared:/shared | |
networks: | |
traefik_proxy: | |
driver: bridge | |
internal: | |
driver: bridge | |
internal: true | |
default: | |
driver: bridge |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment