Skip to content

Instantly share code, notes, and snippets.

@IosifZ
Last active January 28, 2024 13:52
Show Gist options
  • Save IosifZ/f85ce274e02692bea100aa0f75e422e9 to your computer and use it in GitHub Desktop.
Save IosifZ/f85ce274e02692bea100aa0f75e422e9 to your computer and use it in GitHub Desktop.
version: '3.7'
services:
traefik_v2.0:
image: 'traefik:2.0'
container_name: traefik_v2.0
hostname: traefik_v2.0
ports:
- '443:443'
- '80:80'
- '8080:8080'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- 'letsencrypt:/letsencrypt'
# - '.\traefik_v2\traefik.yml:/etc/traefik/traefik.yml'
- '.\traefik_v2\rules.yml:/rules.yml'
env_file:
- .env
restart: unless-stopped
# domainname: '${ZONE}'
labels:
- com.ouroboros.enable=true
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=web"
- "traefik.http.routers.traefik.rule=Host(`traefik.localhost`)"
# - "traefik.http.routers.traefik_https.entrypoints=web-secure"
# - "traefik.http.routers.traefik_https.rule=Host(`traefik.localhost`)"
# - "traefik.http.routers.traefik_https.tls.certresolver=basic"
# - "traefik.http.routers.traefik_https.service=api@internal"
# - "traefik.http.routers.traefik_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.traefik_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "traefik.http.middlewares.testHeader.headers.framedeny=true"
- "traefik.http.middlewares.testHeader.headers.sslredirect=true"
# middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
# global redirect to 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=Europe/Bucharest"
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'
# - '--certificatesresolvers.basic.acme.dnschallenge=true'
# - '--certificatesresolvers.basic.acme.dnschallenge.provider=cloudflare'
# - '--certificatesresolvers.basic.acme.dnsChallenge.resolvers=1.1.1.1'
# - '--certificatesresolvers.basic.acme.dnsChallenge.delayBeforeCheck=0'
# - '--certificatesresolvers.basic.acme.dnsChallenge.disablepropagationcheck=true'
# - '--certificatesResolvers.basic.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory'
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.frontend.passHostHeader=true
# - traefik.port=6767
- "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.routers.bazarr_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.bazarr_https.tls.domains[0].sans=${ZONE}"
- "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:
# - 'traefik.frontend.rule=Host:influxdb-telegraf.localhost'
# - traefik.backend=influxdb-telegraf
- 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.frontend.rule=Host:grafana.${ZONE}'
# - traefik.enable=true
# - traefik.port=3000
# - traefik.backend=grafana
- "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.routers.grafana_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.grafana_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
chronograf:
image: 'chronograf:latest'
container_name: chronograf
hostname: chronograf
ports:
- '8888:8888'
volumes:
- '.\chronograf:/var/lib/chronograf'
env_file:
- .env
environment:
- 'TZ=${TZ}'
- com.ouroboros.enable=true
restart: unless-stopped
labels:
- com.ouroboros.enable=true
# - 'traefik.frontend.rule=Host:chronograf.localhost'
# - traefik.backend=chronograf
- "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.frontend.passHostHeader=true
- "traefik.enable=true"
- "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.routers.tautulli_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.tautulli_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.tautulli.loadbalancer.server.port=8181"
# - "traefik.http.services.tautulli.loadbalancer.passhostheader=true"
env_file:
- .env
environment:
- TZ=Europe/Bucharest
- 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.frontend.rule=Host:ombi.${ZONE}'
# - traefik.frontend.passHostHeader=true
# - traefik.enable=true
# - traefik.port=3579
# - traefik.backend=ombi
- "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.routers.ombi_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.ombi_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.ombi.loadbalancer.server.port=3579"
# - "traefik.http.services.ombi.loadbalancer.passhostheader=true"
volumes:
- '.\ombi\config:/config'
portainer:
image: 'portainer/portainer:latest'
container_name: portainer
hostname: portainer
env_file:
- .env
environment:
- com.ouroboros.enable=true
- TZ=Europe/Bucharest
volumes:
- '.\Portainer:/data'
- '/var/run/docker.sock:/var/run/docker.sock'
ports:
- '9000:9000'
labels:
- com.ouroboros.enable=true
# - 'traefik.frontend.rule=Host:portainer.localhost'
# - traefik.backend=portainer
- "traefik.enable=true"
- "traefik.http.routers.portainer.entrypoints=web"
- "traefik.http.routers.portainer.rule=Host(`portainer.localhost`)"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
restart: unless-stopped
logarr:
image: 'monitorr/logarr:latest'
container_name: logarr
hostname: logarr
environment:
- TZ=Europe/Bucharest
- com.ouroboros.enable=true
restart: unless-stopped
volumes:
- '.\logarr\config:/config'
- 'C:\ProgramData\Sonarr\logs:/sonarr/'
- 'C:\ProgramData\Radarr\logs:/radarr/'
ports:
- '32773:80'
labels:
- com.ouroboros.enable=true
# - 'traefik.frontend.rule=Host:logarr.localhost'
# - traefik.backend=logarr
- "traefik.enable=true"
- "traefik.http.routers.logarr.entrypoints=web"
- "traefik.http.routers.logarr.rule=Host(`logarr.localhost`)"
- "traefik.http.services.logarr.loadbalancer.server.port=80"
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.frontend.rule=Host:organizr.${ZONE}'
# - traefik.backend=organizr
- "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.routers.organizr_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.organizr_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.organizr.loadbalancer.server.port=80"
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.frontend.rule=Host:heimdall.${ZONE}'
# - traefik.enable=true
# - traefik.backend=heimdall
- "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.routers.heimdall_https.tls.domains[0].main=*.${ZONE}"
# - "traefik.http.routers.heimdall_https.tls.domains[0].sans=${ZONE}"
- "traefik.http.services.heimdall.loadbalancer.server.port=80"
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://iosif.zamfirescu:[email protected]"'
# - DATA_EXPORT=influxdb
# - INFLUX_URL=influxdb-telegraf
# - INFLUX_PORT=8086
# - INFLUX_USERNAME=ouroboros
# - INFLUX_PASSWORD=ouroboros
# - INFLUX_DATABASE=ouroboros
# - INFLUX_SSL=false
# - INFLUX_VERIFY_SSL=false
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"'
filebeat:
image: 'docker.elastic.co/beats/filebeat:${ELK_VERSION}'
container_name: filebeat
hostname: filebeat
restart: unless-stopped
user: root
volumes:
- '.\filebeat\filebeat.yml:/usr/share/filebeat/filebeat.yml'
- '/var/lib/docker/:/var/lib/docker'
- '/var/run/docker.sock:/var/run/docker.sock'
- '.:/logs/'
command: '--strict.perms=false'
elasticsearch:
image: 'docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}'
container_name: elasticsearch
hostname: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- ELASTIC_PASSWORD=changeme
restart: unless-stopped
volumes:
- '.\elasticsearch\data\:/usr/share/elasticsearch/data'
ports:
- '9200:9200'
- '9300:9300'
kibana:
image: 'docker.elastic.co/kibana/kibana:${ELK_VERSION}'
container_name: kibana
hostname: kibana
restart: unless-stopped
labels:
# - 'traefik.frontend.rule=Host:kibana.localhost'
# - traefik.backend=kibana
- "traefik.enable=true"
- "traefik.http.routers.kibana.entrypoints=web"
- "traefik.http.routers.kibana.rule=Host(`kibana.localhost`)"
ports:
- '5601:5601'
links:
- 'elasticsearch:elasticsearch'
volumes:
letsencrypt:
# traefik:
# image: 'traefik:v1.7'
# container_name: traefik
# hostname: traefik
# ports:
# - '80:80'
# - '8080:8080'
# - '443:443'
# volumes:
# - '.\traefik:/etc/traefik'
# - '/var/run/docker.sock:/var/run/docker.sock'
# - '.\traefik\rules.toml:/etc/traefik/rules.toml'
# env_file:
# - .env
# restart: unless-stopped
# domainname: '${ZONE}'
# environment:
# - 'CF_API_EMAIL=${EMAIL}'
# - 'CF_API_KEY=${API_KEY}'
# - com.ouroboros.enable=true
# - TZ=Europe/Bucharest
# labels:
# - traefik.enable=true
# - traefik.backend=traefik
# - traefik.port=8080
# - traefik.frontend.headers.SSLRedirect=true
# - traefik.frontend.headers.STSSeconds=315360000
# - traefik.frontend.headers.browserXSSFilter=true
# - traefik.frontend.headers.contentTypeNosniff=true
# - traefik.frontend.headers.forceSTSHeader=true
# - traefik.frontend.headers.SSLHost=example.com
# - traefik.frontend.headers.STSIncludeSubdomains=true
# - traefik.frontend.headers.STSPreload=true
# - traefik.frontend.headers.frameDeny=true
# - traefik.frontend.passHostHeader=true
# - 'traefik.frontend.rule=Host:traefik.localhost'
# command: '--acme.storage=/acme.json'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment