Skip to content

Instantly share code, notes, and snippets.

@Celant
Created September 6, 2020 15:25
Show Gist options
  • Save Celant/d16505033006b7a064c82665cf40854d to your computer and use it in GitHub Desktop.
Save Celant/d16505033006b7a064c82665cf40854d to your computer and use it in GitHub Desktop.
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