Created
September 6, 2020 15:25
-
-
Save Celant/d16505033006b7a064c82665cf40854d to your computer and use it in GitHub Desktop.
This file contains hidden or 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