in Docker Compose with `$`\n\n## Service Configuration\n- `loadbalancer.server.port` when container exposes multiple — Traefik can't guess\n- Health check: `healthcheck.path=/health` — removes unhealthy from rotation\n- Sticky sessions: `loadbalancer.sticky.cookie.name=srv_id` — for stateful apps\n\n## Common Mistakes\n- Router without entryPoint — defaults may not be what you expect\n- Forgetting `traefik.docker.network` with multiple networks — Traefik picks wrong one\n- ACME storage not persisted — certificates regenerated, hits rate limit\n- Dashboard exposed without auth — `api.insecure=true` is dangerous in production\n- PathPrefix without StripPrefix — backend receives full path, may 404\n- Services on different ports — each needs explicit port label\n\n## File Provider\n- `watch=true` for hot reload — otherwise restart Traefik on changes\n- Can coexist with Docker provider — useful for external services\n- Define routers, services, middlewares in YAML — same concepts as labels\n\n## Debugging\n- `--log.level=DEBUG` for troubleshooting — verbose but helpful\n- Dashboard shows routers, services, middlewares — verify configuration\n- `--api.insecure=true` for local dev only — secure with auth in production\n","licenseDocuments":[]}}
L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Déploiement et opérations · SKILL.md

Traefik

Traefik

Avoid common Traefik mistakes — router priority, TLS configuration, Docker labels syntax, and middleware ordering.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: Traefik slug: traefik version: 1.0.0 description: Avoid common Traefik mistakes — router priority, TLS configuration, Docker labels syntax, and middleware ordering. homepage: https://clawic.com/skills/traefik metadata: clawdbot: emoji: 🔀 os: - linux - darwin - win32 displayName: Traefik

Router Basics

  • Router must have rule AND service — missing either = not working
  • Rule priority: longer rules win by default — explicit priority to override
  • Host() is case-insensitive — Host(\example.com`)` matches Example.com
  • Multiple hosts: Host(\a.com`) || Host(`b.com`)` — OR logic

Docker Labels Syntax

  • Labels on container, not compose service level — deploy.labels for Swarm
  • Backticks for rules in Docker Compose — Host(\example.com`)` with escaping
  • Enable per-container: traefik.enable=true — if exposedByDefault=false
  • Service name auto-generated from container — or set explicitly with traefik.http.services.myservice.loadbalancer.server.port=80

TLS and Certificates

  • EntryPoint websecure needs TLS config — otherwise plain HTTP on 443
  • Let's Encrypt: certificatesResolvers.myresolver.acme.email required — registration fails without
  • HTTP challenge needs port 80 open — DNS challenge for wildcard or closed 80
  • tls=true on router activates TLS — tls.certresolver=myresolver for auto-cert
  • Staging ACME for testing — caServer to staging URL, avoids rate limits

EntryPoints

  • Define in static config — --entrypoints.web.address=:80
  • Redirect HTTP to HTTPS at entrypoint level — cleaner than per-router middleware
  • Router binds to entrypoint with entryPoints=web,websecure — comma-separated list

Middlewares

  • Chain order matters — first middleware wraps all following
  • Middleware defined once, used by many routers — middlewares=auth,compress
  • Common: stripPrefix, redirectScheme, basicAuth, rateLimit
  • BasicAuth: use htpasswd format — escape $ in Docker Compose with $

Service Configuration

  • loadbalancer.server.port when container exposes multiple — Traefik can't guess
  • Health check: healthcheck.path=/health — removes unhealthy from rotation
  • Sticky sessions: loadbalancer.sticky.cookie.name=srv_id — for stateful apps

Common Mistakes

  • Router without entryPoint — defaults may not be what you expect
  • Forgetting traefik.docker.network with multiple networks — Traefik picks wrong one
  • ACME storage not persisted — certificates regenerated, hits rate limit
  • Dashboard exposed without auth — api.insecure=true is dangerous in production
  • PathPrefix without StripPrefix — backend receives full path, may 404
  • Services on different ports — each needs explicit port label

File Provider

  • watch=true for hot reload — otherwise restart Traefik on changes
  • Can coexist with Docker provider — useful for external services
  • Define routers, services, middlewares in YAML — same concepts as labels

Debugging

  • --log.level=DEBUG for troubleshooting — verbose but helpful
  • Dashboard shows routers, services, middlewares — verify configuration
  • --api.insecure=true for local dev only — secure with auth in production
Skills enregistrées