64 lines
2.1 KiB
Django/Jinja
64 lines
2.1 KiB
Django/Jinja
networks:
|
|
traefik:
|
|
driver: overlay
|
|
attachable: true
|
|
name: traefik
|
|
|
|
secrets:
|
|
cf_dns_api_token:
|
|
file: "{{nfs_mount_path}}/traefik/secrets/cf-dns-api-token.secret"
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:v3.3
|
|
command:
|
|
- "--log.level=DEBUG"
|
|
- "--configFile=/data/config/traefik.yml"
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "{{traefik_admin_port}}:8080"
|
|
secrets:
|
|
- "cf_dns_api_token"
|
|
environment:
|
|
- "CLOUDFLARE_EMAIL={{cf_email}}"
|
|
- "CF_DNS_API_TOKEN_FILE=/run/secrets/cf_dns_api_token"
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- {{nfs_mount_path}}/traefik:/data
|
|
networks:
|
|
- traefik
|
|
deploy:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.api.rule=Host(`traefik.{{app_domain_name}}`)"
|
|
- "traefik.http.routers.api.entrypoints=websecure"
|
|
- "traefik.http.routers.api.service=api@internal"
|
|
- "traefik.http.routers.api.middlewares=auth"
|
|
- "traefik.http.routers.api.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.api.tls.domains[0].main=mnke.org"
|
|
- "traefik.http.routers.api.tls.domains[0].sans=*.mnke.org"
|
|
- "traefik.http.routers.api.tls.domains[1].main=stingray.mnke.org"
|
|
- "traefik.http.routers.api.tls.domains[1].sans=*.stingray.mnke.org"
|
|
- "traefik.http.middlewares.auth.basicauth.users={{traefik_htpasswd}}"
|
|
# Dummy service for Swarm port detection. The port can be any valid integer value.
|
|
- "traefik.http.services.dummy-svc.loadbalancer.server.port=9999"
|
|
mode: replicated
|
|
replicas: 1
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
|
|
whoami:
|
|
image: "traefik/whoami"
|
|
networks:
|
|
- traefik
|
|
deploy:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.whoami.rule=Host(`whoami.stingray.mnke.org`)"
|
|
- "traefik.http.routers.whoami.entrypoints=websecure"
|
|
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.whoami.loadbalancer.server.port=80"
|
|
- "traefik.swarm.network=traefik"
|
|
|