Skip to content

Instantly share code, notes, and snippets.

@earendildev
Forked from IosifZ/docker-compose.yml
Last active September 7, 2022 04:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save earendildev/312627d8de7c2b33cd4e16d4be0513d5 to your computer and use it in GitHub Desktop.
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
# 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@gmail.com"'
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