-
-
Save earendildev/312627d8de7c2b33cd4e16d4be0513d5 to your computer and use it in GitHub Desktop.
Traefik - Portainer - etc. Require to create an environment file to store variables, esp for Ouroboros
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
# Follow | |
# https://geek-cookbook.funkypenguin.co.nz | |
# for an updated version | |
version: '3.7' | |
services: | |
traefik_v2.0: | |
image: 'traefik:2.2' | |
container_name: traefik_v2 | |
hostname: traefik_v2 | |
ports: | |
- '443:443' | |
- '80:80' | |
- '8080:8080' | |
volumes: | |
- '/var/run/docker.sock:/var/run/docker.sock' | |
- 'letsencrypt:/letsencrypt' | |
- '.\traefik_v2\rules.yml:/rules.yml' | |
env_file: | |
- .env | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.traefik.entrypoints=web | |
- traefik.http.routers.traefik.rule=Host(`traefik.localhost`) | |
- traefik.http.services.traefik.loadbalancer.server.port=8080 | |
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https | |
- 'traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)' | |
- traefik.http.routers.redirs.entrypoints=web | |
- traefik.http.routers.redirs.middlewares=redirect-to-https | |
environment: | |
- 'CLOUDFLARE_EMAIL=${EMAIL}' | |
- 'CLOUDFLARE_API_KEY=${API_KEY}' | |
- com.ouroboros.enable=true | |
- TZ=${TZ} | |
command: | |
- '--log.level=DEBUG' | |
- '--log.format=json' | |
- '--global.checkNewVersion=true' | |
- '--global.sendAnonymousUsage=false' | |
- '--entryPoints.web.address=:80' | |
- '--entryPoints.web-secure.address=:443' | |
- '--api' | |
- '--api.debug' | |
- '--api.insecure' | |
- '--api.dashboard' | |
- '--ping' | |
- '--providers.docker.exposedByDefault=false' | |
- '--providers.docker.watch=true' | |
- '--providers.file.filename=/rules.yml' | |
- '--providers.file.watch=true' | |
- '--certificatesresolvers.basic.acme.tlschallenge=true' | |
- '--certificatesresolvers.basic.acme.email=${EMAIL}' | |
- '--certificatesresolvers.basic.acme.storage=/letsencrypt/acme.json' | |
fauth: | |
image: thomseddon/traefik-forward-auth | |
container_name: fauth | |
hostname: fauth | |
restart: unless-stopped | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- LOG_LEVEL=debug | |
- 'PROVIDERS_GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}' | |
- 'PROVIDERS_GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}' | |
- 'SECRET=${OAUTH_SECRET}' | |
- INSECURE_COOKIE=false | |
- 'WHITELIST=${EMAIL}' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.middlewares.fauth.forwardauth.trustForwardHeader=true | |
- traefik.http.services.fauth.loadbalancer.server.port=4181 | |
- traefik.http.middlewares.fauth.forwardauth.address=http://fauth:4181 | |
- traefik.http.middlewares.fauth.forwardauth.authResponseHeaders=X-Forwarded-User | |
portainer: | |
image: 'portainer/portainer-ce:latest' | |
container_name: portainer | |
hostname: portainer | |
env_file: | |
- .env | |
environment: | |
- com.ouroboros.enable=true | |
- TZ=${TZ} | |
volumes: | |
- '.\Portainer:/data' | |
- '/var/run/docker.sock:/var/run/docker.sock' | |
ports: | |
- '9000:9000' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.portainer.entrypoints=web | |
- 'traefik.http.routers.portainer.rule=Host(`portainer.${ZONE}`)' | |
- traefik.http.routers.portainer_https.entrypoints=web-secure | |
- 'traefik.http.routers.portainer_https.rule=Host(`portainer.${ZONE}`)' | |
- traefik.http.routers.portainer_https.tls=true | |
- traefik.http.routers.portainer_https.tls.certresolver=basic | |
- traefik.http.services.portainer.loadbalancer.server.port=9000 | |
- traefik.http.routers.portainer_https.middlewares=fauth | |
restart: unless-stopped | |
organizr: | |
image: 'linuxserver/organizr:latest' | |
container_name: organizr | |
hostname: organizr | |
environment: | |
- PUID=1000 | |
- PGID=1000 | |
- TZ=Europe/Bucharest | |
- com.ouroboros.enable=true | |
restart: unless-stopped | |
volumes: | |
- '.\organizr:/config' | |
ports: | |
- '9983:80' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.organizr.entrypoints=web | |
- 'traefik.http.routers.organizr.rule=Host(`organizr.${ZONE}`)' | |
- traefik.http.routers.organizr_https.entrypoints=web-secure | |
- 'traefik.http.routers.organizr_https.rule=Host(`organizr.${ZONE}`)' | |
- traefik.http.routers.organizr_https.tls=true | |
- traefik.http.routers.organizr_https.tls.certresolver=basic | |
- traefik.http.services.organizr.loadbalancer.server.port=80 | |
- traefik.http.routers.organizr_https.middlewares=fauth | |
kitana: | |
image: pannal/kitana | |
container_name: kitana | |
hostname: kitana | |
restart: unless-stopped | |
environment: | |
- TZ=Europe/Bucharest | |
- com.ouroboros.enable=true | |
volumes: | |
- '.\kitana:/app/data' | |
ports: | |
- '31337:31337' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.kitana.entrypoints=web | |
- 'traefik.http.routers.kitana.rule=Host(`kitana.${ZONE}`)' | |
- traefik.http.routers.kitana_https.entrypoints=web-secure | |
- 'traefik.http.routers.kitana_https.rule=Host(`kitana.${ZONE}`)' | |
- traefik.http.routers.kitana_https.tls=true | |
- traefik.http.routers.kitana_https.tls.certresolver=basic | |
- traefik.http.services.kitana.loadbalancer.server.port=31337 | |
- traefik.http.routers.kitana_https.middlewares=fauth | |
command: '-B 0.0.0.0:31337 -P' | |
bazarr: | |
image: 'linuxserver/bazarr:latest' | |
container_name: bazarr | |
hostname: bazarr | |
volumes: | |
- '.\bazarr\config:/config' | |
- 'F:\Download\TvSeries\:/series/' | |
- 'F:\Download\Action:/action/' | |
ports: | |
- '6767:6767' | |
environment: | |
- TZ=Europe/Bucharest | |
restart: unless-stopped | |
env_file: | |
- .env | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.bazarr.entrypoints=web | |
- 'traefik.http.routers.bazarr.rule=Host(`bazarr.${ZONE}`)' | |
- traefik.http.routers.bazarr_https.entrypoints=web-secure | |
- 'traefik.http.routers.bazarr_https.rule=Host(`bazarr.${ZONE}`)' | |
- traefik.http.routers.bazarr_https.tls=true | |
- traefik.http.routers.bazarr_https.tls.certresolver=basic | |
- traefik.http.services.bazarr.loadbalancer.server.port=6767 | |
influxdb-telegraf: | |
image: 'influxdb:latest' | |
container_name: influxdb-telegraf | |
hostname: influxdb-telegraf | |
volumes: | |
- '.\influxdb-telegraf:/var/lib/influxdb' | |
ports: | |
- '8086:8086' | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.influxdb-telegraf.entrypoints=web | |
- traefik.http.routers.influxdb-telegraf.rule=Host(`influxdb-telegraf.localhost`) | |
- traefik.http.services.influxdb-telegraf.loadbalancer.server.port=8086 | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
- INFLUXDB_DATA_QUERY_LOG_EANBLED=false | |
- INFLUXDB_REPORTING_DISABLED=true | |
- INFLUXDB_LOGGING_FORMAT=json | |
- INFLUXDB_LOGGING_SUPPRESS_LOGO=true | |
- INFLUXDB_HTTP_LOG_ENABLED=false | |
grafana: | |
image: 'grafana/grafana:latest' | |
container_name: grafana | |
hostname: grafana | |
ports: | |
- '3000:3000' | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
volumes: | |
- '.\grafana:/var/lib/grafana' | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.grafana.entrypoints=web | |
- 'traefik.http.routers.grafana.rule=Host(`grafana.${ZONE}`)' | |
- traefik.http.routers.grafana_https.entrypoints=web-secure | |
- 'traefik.http.routers.grafana_https.rule=Host(`grafana.${ZONE}`)' | |
- traefik.http.routers.grafana_https.tls=true | |
- traefik.http.routers.grafana_https.tls.certresolver=basic | |
- traefik.http.services.grafana.loadbalancer.server.port=3000 | |
- traefik.http.routers.grafana_https.middlewares=fauth | |
chronograf: | |
image: 'chronograf:latest' | |
container_name: chronograf | |
hostname: chronograf | |
ports: | |
- '8888:8888' | |
volumes: | |
- '.\chonograf:/var/lib/chronograf' | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.chronograf.entrypoints=web | |
- traefik.http.routers.chronograf.rule=Host(`chronograf.localhost`) | |
- traefik.http.services.chronograf.loadbalancer.server.port=8888 | |
tautulli: | |
image: 'linuxserver/tautulli:latest' | |
container_name: tautulli | |
hostname: tautulli | |
volumes: | |
- '.\tautulli\config:/config' | |
- '.\tautulli\config\logs:/logs' | |
- 'C:\Users\iosif\AppData\Local\Plex Media Server\Logs:/plex-logs/' | |
ports: | |
- '8181:8181' | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.tautulli.entrypoints=web | |
- 'traefik.http.routers.tautulli.rule=Host(`tautulli.${ZONE}`)' | |
- traefik.http.routers.tautulli_https.entrypoints=web-secure | |
- 'traefik.http.routers.tautulli_https.rule=Host(`tautulli.${ZONE}`)' | |
- traefik.http.routers.tautulli_https.tls=true | |
- traefik.http.routers.tautulli_https.tls.certresolver=basic | |
- traefik.http.services.tautulli.loadbalancer.server.port=8181 | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
cloudflare-ddns: | |
image: 'oznu/cloudflare-ddns:latest' | |
container_name: cloudflare-ddns | |
hostname: cloudflare-ddns | |
env_file: | |
- .env | |
environment: | |
- 'EMAIL=${EMAIL}' | |
- 'API_KEY=${API_KEY}' | |
- 'ZONE=${ZONE}' | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
ombi: | |
image: 'linuxserver/ombi:latest' | |
container_name: ombi | |
hostname: ombi | |
ports: | |
- '3579:3579' | |
env_file: | |
- .env | |
environment: | |
- 'TZ=${TZ}' | |
- com.ouroboros.enable=true | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
# - traefik.http.routers.ombi.entrypoints=web | |
# - 'traefik.http.routers.ombi.rule=Host(`ombi.${ZONE}`)' | |
- traefik.http.routers.ombi_https.entrypoints=web-secure | |
- 'traefik.http.routers.ombi_https.rule=Host(`ombi.${ZONE}`)' | |
- traefik.http.routers.ombi_https.tls=true | |
- traefik.http.routers.ombi_https.tls.certresolver=basic | |
- traefik.http.services.ombi.loadbalancer.server.port=3579 | |
- traefik.http.routers.ombi_https.middlewares=fauth | |
volumes: | |
- '.\ombi\config:/config' | |
heimdall: | |
image: 'linuxserver/heimdall:latest' | |
container_name: heimdall | |
hostname: heimdall | |
restart: unless-stopped | |
environment: | |
- PUID=1000 | |
- PGID=1000 | |
- TZ=Europe/Bucharest | |
- com.ouroboros.enable=true | |
volumes: | |
- '.\heimdall:/config' | |
ports: | |
- '32843:443' | |
- '32880:80' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
- traefik.http.routers.heimdall.entrypoints=web | |
- 'traefik.http.routers.heimdall.rule=Host(`heimdall.${ZONE}`)' | |
- traefik.http.routers.heimdall_https.entrypoints=web-secure | |
- 'traefik.http.routers.heimdall_https.rule=Host(`heimdall.${ZONE}`)' | |
- traefik.http.routers.heimdall_https.tls=true | |
- traefik.http.routers.heimdall_https.tls.certresolver=basic | |
- traefik.http.services.heimdall.loadbalancer.server.port=80 | |
- traefik.http.routers.heimdall_https.middlewares=fauth | |
ouroboros: | |
image: 'pyouroboros/ouroboros:latest' | |
container_name: ouroboros | |
hostname: ouroboros | |
restart: unless-stopped | |
environment: | |
- CLEANUP=true | |
- INTERVAL=300 | |
- LOG_LEVEL=debug | |
- SELF_UPDATE=true | |
- DOCKER_TLS_VERIFY=false | |
- LATEST=true | |
- TZ=Europe/Bucharest | |
- LABEL_ENABLE=true | |
- 'NOTIFIERS="mailto://[email protected]"' | |
volumes: | |
- '/var/run/docker.sock:/var/run/docker.sock' | |
- '.\ouroboros\logs:/var/lib/docker/containers' | |
links: | |
- 'influxdb-telegraf:influxdb-telegraf' | |
piholeinflux: | |
image: registry.gitlab.com/janw/pi-hole-influx | |
container_name: piholeinflux | |
hostname: piholeinflux | |
restart: unless-stopped | |
labels: | |
- com.ouroboros.enable=true | |
environment: | |
- PIHOLE_INFLUXDB_HOST="influxdb-telegraf" | |
- PIHOLE_INFLUXDB_PORT="8086" | |
- PIHOLE_INFLUXDB_USERNAME="pihole" | |
- PIHOLE_INFLUXDB_PASSWORD="pihole" | |
- PIHOLE_INFLUXDB_DATABASE="pihole" | |
- 'PIHOLE_INSTANCES="pihole=http://192.168.0.53/admin/api.php"' | |
dashmachine: | |
image: rmountjoy/dashmachine | |
container_name: dashmachine | |
hostname: dashmachine | |
restart: unless-stopped | |
environment: | |
- 'TZ=${TZ}' | |
labels: | |
- com.ouroboros.enable=true | |
- traefik.enable=true | |
# - traefik.http.routers.dashmachine.entrypoints=web | |
# - 'traefik.http.routers.dashmachine.rule=Host(`dash.${ZONE}`)' | |
- traefik.http.routers.dashmachine_https.entrypoints=web-secure | |
- 'traefik.http.routers.dashmachine_https.rule=Host(`dash.${ZONE}`)' | |
- traefik.http.routers.dashmachine_https.tls=true | |
- traefik.http.routers.dashmachine_https.tls.certresolver=basic | |
- traefik.http.services.dashmachine.loadbalancer.server.port=5000 | |
- traefik.http.routers.dashmachine_https.middlewares=fauth | |
ports: | |
- '5000:5000' | |
volumes: | |
- '.\dashmachine:/dashmachine/dashmachine/user_data' | |
volumes: | |
letsencrypt: null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment