template.yaml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. ---
  2. kind: compose
  3. schema: "1.1"
  4. metadata:
  5. name: Traefik
  6. description: >
  7. Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.
  8. This template sets up Traefik with automatic HTTPS using Let's Encrypt and can be integrated with Authentik for SSO.
  9. Project: https://traefik.io/
  10. Documentation: https://doc.traefik.io/traefik/
  11. version: v3.5.3
  12. author: "Christian Lempa"
  13. date: "2025-10-02"
  14. tags:
  15. - reverse-proxy
  16. - load-balancer
  17. next_steps: |
  18. 1. Start Traefik:
  19. docker compose up -d
  20. spec:
  21. general:
  22. title: "General"
  23. required: true
  24. vars:
  25. service_name:
  26. default: "traefik"
  27. container_name:
  28. default: "traefik"
  29. container_hostname:
  30. default: "traefik"
  31. ports:
  32. needs: []
  33. vars:
  34. ports_http:
  35. type: "int"
  36. description: "HTTP port (external)"
  37. default: 80
  38. extra: "Maps to entrypoint 'web' (port 80)"
  39. ports_https:
  40. type: "int"
  41. description: "HTTPS port (external)"
  42. default: 443
  43. extra: "Maps to entrypoint 'websecure' (port 443)"
  44. ports_dashboard:
  45. type: "int"
  46. description: "Dashboard port (external)"
  47. default: 8080
  48. extra: "Only used when dashboard is enabled"
  49. traefik:
  50. title: "Settings"
  51. needs: []
  52. vars:
  53. traefik_network:
  54. type: "str"
  55. description: "Traefik network name"
  56. default: "traefik"
  57. extra: "Network that Traefik uses to connect to services"
  58. traefik_network_external:
  59. type: "bool"
  60. description: "Use existing Docker network (external)"
  61. default: false
  62. traefik_entrypoint:
  63. type: "str"
  64. description: "HTTP entrypoint (non-TLS)"
  65. default: "web"
  66. dashboard_enabled:
  67. type: "bool"
  68. description: "Enable Traefik dashboard"
  69. default: false
  70. extra: "WARNING: Don't use in production!"
  71. accesslog_enabled:
  72. type: "bool"
  73. description: "Enable Traefik access log"
  74. default: false
  75. prometheus_enabled:
  76. type: "bool"
  77. description: "Enable Prometheus metrics"
  78. default: false
  79. extra: "Exposes metrics on internal port 9090 (not publicly exposed)"
  80. traefik_tls:
  81. title: "TLS Settings"
  82. needs: []
  83. vars:
  84. traefik_tls_enabled:
  85. type: "bool"
  86. description: "Enable HTTPS/TLS with ACME"
  87. default: false
  88. traefik_tls_entrypoint:
  89. type: "str"
  90. description: "TLS entrypoint"
  91. default: "websecure"
  92. traefik_tls_certresolver:
  93. type: "str"
  94. description: "Traefik certificate resolver name"
  95. default: "cloudflare"
  96. traefik_tls_acme_provider:
  97. type: "enum"
  98. description: "ACME DNS challenge provider"
  99. default: "cloudflare"
  100. options:
  101. - "cloudflare"
  102. extra: "DNS provider for domain validation"
  103. traefik_tls_acme_token:
  104. type: "str"
  105. description: "DNS provider API token"
  106. sensitive: true
  107. traefik_tls_acme_email:
  108. type: "str"
  109. description: "Email address for ACME (Let's Encrypt) registration"
  110. default: "admin@example.com"
  111. extra: "Required for Let's Encrypt certificate requests"
  112. traefik_tls_redirect:
  113. type: "bool"
  114. description: "Redirect all HTTP traffic to HTTPS"
  115. default: true
  116. traefik_tls_min_version:
  117. type: "enum"
  118. description: "Minimum TLS version"
  119. default: "VersionTLS12"
  120. options:
  121. - "VersionTLS12"
  122. - "VersionTLS13"
  123. extra: "TLS 1.2 is recommended for compatibility, TLS 1.3 for maximum security"
  124. traefik_tls_secure_ciphers:
  125. type: "bool"
  126. description: "Enable strict cipher suites (recommended)"
  127. default: true
  128. extra: "Enforces modern, secure cipher suites"
  129. traefik_tls_skipverify:
  130. type: "bool"
  131. description: "Skip TLS verification for backend servers"
  132. default: false
  133. extra: "WARNING: Only enable for self-signed certificates in trusted environments"
  134. swarm:
  135. needs: []
  136. vars:
  137. traefik_tls_acme_secret_name:
  138. type: "str"
  139. description: "Docker Swarm secret name for API token"
  140. default: "cloudflare_api_token"
  141. authentik:
  142. title: Authentik Middleware
  143. description: Enable Authentik SSO integration for Traefik
  144. vars:
  145. authentik_outpost_url:
  146. type: "url"
  147. description: "Authentik outpost URL (e.g., http://authentik-outpost:9000)"
  148. default: "http://authentik-outpost:9000"
  149. traefik_authentik_middleware_name:
  150. type: "str"
  151. description: "Name of the Authentik middleware"
  152. default: "authentik"
  153. extra: "Reference this in router labels as '{name}@file'"