diff options
author | Elizabeth Hunt <me@liz.coffee> | 2025-03-16 21:23:16 -0700 |
---|---|---|
committer | Elizabeth Hunt <me@liz.coffee> | 2025-03-16 21:23:16 -0700 |
commit | 654694f9276cd9c30a7f2690f9336cf63a0172ef (patch) | |
tree | 12e4e8ec000478c982152e56d327afdef26a3b6a /playbooks/roles/traefik/templates/stacks | |
parent | fb7e6890d8516618fa3baec0edf84048e2b6601d (diff) | |
download | infra-654694f9276cd9c30a7f2690f9336cf63a0172ef.tar.gz infra-654694f9276cd9c30a7f2690f9336cf63a0172ef.zip |
a good starting point for traefik
Diffstat (limited to 'playbooks/roles/traefik/templates/stacks')
-rw-r--r-- | playbooks/roles/traefik/templates/stacks/docker-compose.yml | 39 | ||||
-rw-r--r-- | playbooks/roles/traefik/templates/stacks/traefik.yml | 35 |
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 |