summaryrefslogtreecommitdiff
path: root/playbooks/roles/traefik/templates/stacks
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/roles/traefik/templates/stacks')
-rw-r--r--playbooks/roles/traefik/templates/stacks/docker-compose.yml39
-rw-r--r--playbooks/roles/traefik/templates/stacks/traefik.yml35
2 files changed, 74 insertions, 0 deletions
diff --git a/playbooks/roles/traefik/templates/stacks/docker-compose.yml b/playbooks/roles/traefik/templates/stacks/docker-compose.yml
new file mode 100644
index 0000000..4504af9
--- /dev/null
+++ b/playbooks/roles/traefik/templates/stacks/docker-compose.yml
@@ -0,0 +1,39 @@
+version: '3.8'
+services:
+ traefik:
+ image: traefik:v3
+ ports:
+ - 80:80
+ - 443:443
+ environment:
+ - TZ={{ timezone }}
+ - CF_API_EMAIL={{ cloudflare_email }}
+ - CF_DNS_API_TOKEN={{ cloudflare_dns_api_token }}
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock:ro
+ - {{ traefik_base }}/stacks/traefik.yml:/traefik.yml
+ - {{ traefik_base }}/volumes/certs:/certs
+ networks:
+ - proxy
+ deploy:
+ mode: global
+ placement:
+ constraints: [node.role == manager]
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.dashboard.rule=Host(`traefik.{{ traefik_domain }}`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard/`))
+ - traefik.http.routers.dashboard.service=api@internal
+ - traefik.http.routers.dashboard.tls=true
+ - traefik.http.routers.dashboard.tls.certresolver=letsencrypt
+ - traefik.http.routers.ping.rule=Host(`traefik.{{ traefik_domain }}`) && PathPrefix(`/ping`)
+ - traefik.http.routers.ping.service=ping@internal
+ - traefik.http.routers.ping.tls=true
+ - traefik.http.routers.ping.tls.certresolver=letsencrypt
+ - traefik.http.services.dashboard.loadbalancer.server.port=8080
+ - traefik.http.services.ping.loadbalancer.server.port=8080
+
+networks:
+ proxy:
+ name: proxy
+ driver: overlay
+ attachable: true
diff --git a/playbooks/roles/traefik/templates/stacks/traefik.yml b/playbooks/roles/traefik/templates/stacks/traefik.yml
new file mode 100644
index 0000000..a80c261
--- /dev/null
+++ b/playbooks/roles/traefik/templates/stacks/traefik.yml
@@ -0,0 +1,35 @@
+ping: {}
+accessLog: {}
+log:
+ level: DEBUG
+api:
+ dashboard: true
+ insecure: true
+ debug: false
+entryPoints:
+ web:
+ address: ":80"
+ http:
+ redirections:
+ entryPoint:
+ to: websecure
+ scheme: https
+ websecure:
+ address: ":443"
+serversTransport:
+ insecureSkipVerify: true
+providers:
+ swarm:
+ endpoint: "unix:///var/run/docker.sock"
+ exposedByDefault: false
+ network: proxy
+certificatesResolvers:
+ letsencrypt:
+ acme:
+ email: {{ certs_email }}
+ storage: /certs/acme.json
+ caServer: https://acme-v02.api.letsencrypt.org/directory
+ # caServer: https://acme-staging-v02.api.letsencrypt.org/directory # staging
+ dnsChallenge:
+ provider: cloudflare
+ delayBeforeCheck: 10