Traefik Docker Handleiding 2026: De Ultieme Reverse Proxy
TUTORIAL 11 min read fordnox

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:

Waarom Traefik vs Nginx?

FunctieTraefikNginx
Docker-integratieNativeHandmatige configuratie
Auto SSLIngebouwdCertbot nodig
Service discoveryAutomatischHandmatig
Config herladenHot reloadHerstart vereist
LeercurveGemiddeldLager
PrestatiesUitstekendUitstekend

Traefik wint voor Docker-omgevingen. Nginx voor statische configuraties (zie onze Nginx reverse proxy handleiding).

VPS Vereisten

Traefik is lichtgewicht:

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:

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

  1. Controleer netwerk:
docker network inspect traefik-public
  1. Verifieer labels:
docker inspect container_name | grep -A 50 Labels
  1. Controleer traefik.enable=true

SSL Werkt Niet

  1. Controleer ACME-logboek:
docker logs traefik 2>&1 | grep -i acme
  1. Verifieer acme.json-rechten (600)

  2. Zorg ervoor dat poort 80 open is voor de HTTP-challenge

502 Bad Gateway

  1. Controleer of de container draait
  2. Verifieer of de poort correct is in de labels
  3. Controleer containerlogs

Actieve Configuratie Bekijken

Het dashboard toont alle routers, services en middlewares. Of:

curl http://localhost:8080/api/http/routers

Productiechecklist

Beste VPS voor Traefik

Traefik zelf is klein. Kies capaciteit op basis van je services:

ProviderPlanPrijsGeschikt Voor
HetznerCX21€5,395-10 services
HostingerKVM1$4,99Budgetopstelling
VultrVC2$12Wereldwijd 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:

TaakNginxTraefik
Service toevoegenConfig bewerken, herladenLabels toevoegen
SSL verkrijgenCertbot uitvoerenAutomatisch
Load balancenUpstream configurerenAutomatisch
Service verwijderenConfig bewerken, herladenContainer 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.

~/traefik-docker-guide/get-started

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

traefik docker traefik instellen docker reverse proxy traefik ssl container routing

// related guides

Andrius Putna

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.