Traefik Docker Handleiding 2026: De Ultieme Reverse Proxy
Stel Traefik in met Docker voor automatische SSL, service discovery en load balancing. Complete handleiding voor moderne containerimplementaties.
Traefik Docker Handleiding: Automatische Reverse Proxy
Traefik is de cloud-native reverse proxy. Het ontdekt je Docker-containers en routeert automatisch verkeer naar ze — met gratis SSL-certificaten.
Wat is Traefik?
Traefik staat voor je services:
Internet → Traefik → Container A (app.domain.com)
→ Container B (api.domain.com)
→ Container C (admin.domain.com)
Belangrijkste functies:
- Auto-discovery — Detecteert nieuwe containers
- Auto-SSL — Let’s Encrypt integratie
- Load balancing — Meerdere containers per service
- Middleware — Authenticatie, snelheidsbeperking, headers
- Dashboard — Visueel serviceoverzicht
Waarom Traefik vs Nginx?
| Functie | Traefik | Nginx |
|---|---|---|
| Docker-integratie | Native | Handmatige configuratie |
| Auto SSL | Ingebouwd | Certbot nodig |
| Service discovery | Automatisch | Handmatig |
| Config herladen | Hot reload | Herstart vereist |
| Leercurve | Gemiddeld | Lager |
| Prestaties | Uitstekend | Uitstekend |
Traefik wint voor Docker-omgevingen. Nginx voor statische configuraties (zie onze Nginx reverse proxy handleiding).
VPS Vereisten
Traefik is lichtgewicht:
- 1 vCPU
- 512MB RAM (voor Traefik zelf)
- Poorten 80, 443
Je VPS-specificaties zijn afhankelijk van je services, niet van Traefik. Bekijk onze beste VPS voor Docker handleiding voor aanbevelingen over capaciteitsplanning.
Basisinstallatie
Stap 1: Netwerk Aanmaken
docker network create traefik-public
Stap 2: Traefik Configuratiemap Aanmaken
mkdir -p /opt/traefik
cd /opt/traefik
Stap 3: Docker Compose Aanmaken
# docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./acme.json:/acme.json
- ./config:/config:ro
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$xxxxx"
networks:
traefik-public:
external: true
Stap 4: Traefik Configuratie Aanmaken
# traefik.yml
api:
dashboard: true
insecure: false
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: traefik-public
file:
directory: /config
watch: true
certificatesResolvers:
letsencrypt:
acme:
email: you@yourdomain.com
storage: /acme.json
httpChallenge:
entryPoint: web
Stap 5: Certificaatopslag Aanmaken
touch acme.json
chmod 600 acme.json
mkdir config
Stap 6: Dashboard Wachtwoord Genereren
htpasswd -nb admin your-secure-password
# Uitvoer: admin:$apr1$...
# Gebruik dit in docker-compose.yml, verdubbel de $ tekens
Stap 7: Traefik Starten
docker compose up -d
Dashboard openen: https://traefik.yourdomain.com
Services Toevoegen
Voorbeeld: Nginx
# In een apart docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:alpine
container_name: nginx
restart: unless-stopped
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`www.yourdomain.com`)"
- "traefik.http.routers.nginx.entrypoints=websecure"
- "traefik.http.routers.nginx.tls.certresolver=letsencrypt"
networks:
traefik-public:
external: true
Dat is alles! Traefik ontdekt de container en:
- Routeert
www.yourdomain.comernaartoe - Haalt automatisch een SSL-certificaat op
- Verzorgt HTTPS-terminatie
Voorbeeld: Node.js App
services:
api:
build: .
container_name: api
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`api.yourdomain.com`)"
- "traefik.http.routers.api.entrypoints=websecure"
- "traefik.http.routers.api.tls.certresolver=letsencrypt"
- "traefik.http.services.api.loadbalancer.server.port=3000"
networks:
traefik-public:
external: true
Let op: loadbalancer.server.port specificeert de containerpoort.
Middleware
Basic Auth
labels:
- "traefik.http.middlewares.auth.basicauth.users=user:$$hashed$$password"
- "traefik.http.routers.admin.middlewares=auth"
Snelheidsbeperking
labels:
- "traefik.http.middlewares.ratelimit.ratelimit.average=100"
- "traefik.http.middlewares.ratelimit.ratelimit.burst=50"
- "traefik.http.routers.api.middlewares=ratelimit"
IP Whitelist
labels:
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=192.168.1.0/24,10.0.0.0/8"
- "traefik.http.routers.admin.middlewares=ipwhitelist"
Headers
labels:
- "traefik.http.middlewares.security.headers.stsSeconds=31536000"
- "traefik.http.middlewares.security.headers.stsIncludeSubdomains=true"
- "traefik.http.middlewares.security.headers.contentTypeNosniff=true"
- "traefik.http.middlewares.security.headers.frameDeny=true"
Doorverwijzing
labels:
- "traefik.http.middlewares.redirect.redirectregex.regex=^https://old.domain.com/(.*)"
- "traefik.http.middlewares.redirect.redirectregex.replacement=https://new.domain.com/$${1}"
Compressie
labels:
- "traefik.http.middlewares.compress.compress=true"
- "traefik.http.routers.web.middlewares=compress"
Meerdere Domeinen
Dezelfde Container
labels:
- "traefik.http.routers.web.rule=Host(`domain1.com`) || Host(`domain2.com`)"
Met Doorverwijzing
labels:
- "traefik.http.routers.www.rule=Host(`www.domain.com`)"
- "traefik.http.routers.www.middlewares=redirect-to-apex"
- "traefik.http.middlewares.redirect-to-apex.redirectregex.regex=^https://www\\.(.+)"
- "traefik.http.middlewares.redirect-to-apex.redirectregex.replacement=https://$${1}"
Load Balancing
Meerdere Containers
services:
api:
image: myapi
deploy:
replicas: 3
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`api.domain.com`)"
Traefik verdeelt automatisch de belasting over replica’s.
Sticky Sessions
labels:
- "traefik.http.services.api.loadbalancer.sticky.cookie=true"
- "traefik.http.services.api.loadbalancer.sticky.cookie.name=server_id"
Gezondheidscontroles
labels:
- "traefik.http.services.api.loadbalancer.healthcheck.path=/health"
- "traefik.http.services.api.loadbalancer.healthcheck.interval=10s"
Padgebaseerde Routering
labels:
- "traefik.http.routers.api.rule=Host(`domain.com`) && PathPrefix(`/api`)"
- "traefik.http.routers.web.rule=Host(`domain.com`) && PathPrefix(`/`)"
Padprefix Verwijderen
labels:
- "traefik.http.middlewares.strip-api.stripprefix.prefixes=/api"
- "traefik.http.routers.api.middlewares=strip-api"
/api/users wordt /users voor de backend.
Wildcard Certificaten
Voor *.domain.com:
# traefik.yml
certificatesResolvers:
letsencrypt:
acme:
email: you@domain.com
storage: /acme.json
dnsChallenge:
provider: cloudflare
# docker-compose.yml
environment:
- CF_API_EMAIL=you@domain.com
- CF_API_KEY=your-api-key
Gebruik vervolgens:
labels:
- "traefik.http.routers.web.tls.certresolver=letsencrypt"
- "traefik.http.routers.web.tls.domains[0].main=domain.com"
- "traefik.http.routers.web.tls.domains[0].sans=*.domain.com"
Bestandsgebaseerde Configuratie
Voor niet-Docker services, gebruik de file provider:
# /opt/traefik/config/external.yml
http:
routers:
external-service:
rule: "Host(`external.domain.com`)"
service: external-service
tls:
certResolver: letsencrypt
services:
external-service:
loadBalancer:
servers:
- url: "http://192.168.1.100:8080"
Traefik bewaakt de configuratiemap en herlaadt automatisch.
Statistieken & Monitoring
Statistieken Inschakelen
# traefik.yml
metrics:
prometheus:
entryPoint: metrics
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
entryPoints:
metrics:
address: ":8082"
Grafana Dashboard
Gebruik dashboard ID 11462 voor Traefik-statistieken. Voor een volledige Grafana monitoring setup, zie onze speciale handleiding.
Toegangslogboeken
# traefik.yml
accessLog:
filePath: "/var/log/traefik/access.log"
format: json
filters:
statusCodes:
- "400-599"
bufferingSize: 100
Koppel de logmap:
volumes:
- ./logs:/var/log/traefik
Probleemoplossing
Container Niet Ontdekt
- Controleer netwerk:
docker network inspect traefik-public
- Verifieer labels:
docker inspect container_name | grep -A 50 Labels
- Controleer
traefik.enable=true
SSL Werkt Niet
- Controleer ACME-logboek:
docker logs traefik 2>&1 | grep -i acme
-
Verifieer acme.json-rechten (600)
-
Zorg ervoor dat poort 80 open is voor de HTTP-challenge
502 Bad Gateway
- Controleer of de container draait
- Verifieer of de poort correct is in de labels
- Controleer containerlogs
Actieve Configuratie Bekijken
Het dashboard toont alle routers, services en middlewares. Of:
curl http://localhost:8080/api/http/routers
Productiechecklist
- Dashboard beveiligd met authenticatie
- acme.json heeft 600-rechten
- Toegangslogboeken ingeschakeld
- Statistieken voor monitoring
- Gezondheidscontroles geconfigureerd
- Snelheidsbeperking op publieke API’s
- Beveiligingsheaders middleware
- Correcte netwerkisolatie
Beste VPS voor Traefik
Traefik zelf is klein. Kies capaciteit op basis van je services:
| Provider | Plan | Prijs | Geschikt Voor |
|---|---|---|---|
| Hetzner | CX21 | €5,39 | 5-10 services |
| Hostinger | KVM1 | $4,99 | Budgetopstelling |
| Vultr | VC2 | $12 | Wereldwijd bereik |
Veelgestelde Vragen
Traefik vs Nginx Proxy Manager?
Traefik voor Docker-native opstellingen. NPM voor eenvoudigere GUI-gebaseerde configuratie.
Hoeveel services kan Traefik aan?
Honderden zonder problemen. Het is ontworpen voor microservices op schaal.
Is Traefik veilig?
Ja. Stel de API niet bloot zonder authenticatie. Houd het up-to-date.
Kan ik migreren van Nginx?
Ja. Geleidelijke migratie is mogelijk — draai beide tijdelijk.
Ondersteunt Traefik HTTP/3?
Ja, vanaf v3.0. Schakel het in via de entrypoint-configuratie.
Samenvatting
Traefik automatiseert wat je handmatig zou configureren in Nginx:
| Taak | Nginx | Traefik |
|---|---|---|
| Service toevoegen | Config bewerken, herladen | Labels toevoegen |
| SSL verkrijgen | Certbot uitvoeren | Automatisch |
| Load balancen | Upstream configureren | Automatisch |
| Service verwijderen | Config bewerken, herladen | Container stoppen |
Voor Docker-implementaties is Traefik de moderne keuze. Stel het eenmaal in en voeg services toe met labels, voor altijd. Voor een complete implementatieworkflow, combineer het met Docker Compose.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
// related guides
$1 VPS Hosting 2026: Cheapest VPS Servers Starting at $1/Month
Looking for $1 VPS hosting? Compare the cheapest VPS providers starting from $1-3/month. Real specs, no hidden fees, honest reviews of budget VPS options.
tutorialCaddy Reverse Proxy Guide 2026: Automatic HTTPS Made Easy
Set up Caddy as a reverse proxy with automatic HTTPS, zero-config SSL, and simple Caddyfile syntax. Complete VPS deployment guide.
tutorialCloudflare Tunnel VPS Guide 2026: Expose Services Without Opening Ports
Set up Cloudflare Tunnel on your VPS to expose web apps securely without opening ports or revealing your server IP. Complete guide with Docker and DNS config.
tutorialCoolify VPS Setup Guide 2026: Self-Hosted Vercel Alternative
Deploy Coolify on your VPS for a self-hosted Vercel/Netlify experience. Complete setup guide with Docker, SSL, and app deployments.
Andrius Putna
I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.
// last updated: February 8, 2026. Disclosure: This article may contain affiliate links.