Traefik: first steps If Ansible helped me declare the desired state of my machines, I still needed a simple, automatic way to route HTTP/HTTPS traffic to my various services (Docker, VMs, bare metal). After several recommendations, I dove into Traefik, a reverse proxy / ingress controller written in Go.
Why I chose Traefik Dynamic configuration: Traefik continuously queries its providers (Docker, Kubernetes, files…) and updates routes on the fly, no more nginx -s reload every time a container shows up. Built-in Let’s Encrypt: certificate generation and renewal without a homemade script. Clear dashboard: you can see routes, middlewares, and entry points in real time. Native Docker/K8s support: three labels are enough to expose a service. My first discoveries Quick install docker network create traefik docker compose -f traefik.yml up -d Static vs dynamic Static: ports, providers, ACME. Dynamic: routing rules, middlewares, certificates, changeable without a restart.
Docker labels Minimal example:
labels: - "traefik.enable=true" - "traefik.http.routers.blog.rule=Host(`blog.example.com`)" - "traefik.http.services.blog.loadbalancer.server.port=3000" Let’s Encrypt in 30 seconds A certresolver=le in the labels plus an email address, and Traefik handles the rest.
Middlewares HTTPS redirect, security headers, basic auth… declarable via YAML or a label.
...