Cloud & Hosting

Caddy instellen als reverse proxy in 2026 (automatische HTTPS, Docker en wanneer je ervoor kiest)

Zo stel je een Caddy reverse proxy in 2026 in: installeer Caddy, schrijf een Caddyfile van drie regels met automatische HTTPS, draai het in Docker Compose en weet wanneer Caddy beter is dan Nginx, Traefik of een Cloudflare Tunnel.

Waqas Ahmed Waseer
Waqas Ahmed Waseer 15 jul 2026 8 min leestijd
Caddy instellen als reverse proxy in 2026 (automatische HTTPS, Docker en wanneer je ervoor kiest)

Een Caddy reverse proxy zet één kleine, snelle webserver vóór je apps en geeft elk van hen automatisch een geldig HTTPS-certificaat, zonder certbot, zonder cron-verlengingen en meestal in niet meer dan drie regels config. Wijs een domein naar je server, schrijf example.com { reverse_proxy localhost:8080 }, start Caddy en je hebt een productieklare HTTPS-voordeur. Deze gids loopt door het installeren van Caddy, het schrijven van de Caddyfile, het draaien ervan in Docker en het bepalen wanneer Caddy de juiste reverse proxy is versus Nginx, Traefik of een Cloudflare Tunnel.

Wat is een Caddy reverse proxy, en waarom zou je die gebruiken?

Een reverse proxy zit tussen het publieke internet en je applicaties. In plaats van elke app op zijn eigen poort bloot te stellen (de klassieke wildgroei van server-ip:8080, server-ip:3000), luistert de proxy op poort 80 en 443, sluit de TLS af en routeert elk binnenkomend verzoek naar de juiste backend op basis van de hostnaam of het pad. Dat geeft je nette URL's, één plek om certificaten te beheren en één knelpunt voor security-headers en rate limits.

Caddy springt eruit omdat automatische HTTPS standaard aanstaat: als het je domeinnaam kent, voorziet en verlengt het een Let's Encrypt- of ZeroSSL-certificaat voor je, en blijft het daarna eeuwig verlengen. Nginx en Traefik kunnen dit ook, maar Caddy heeft de minste configuratie nodig om er te komen. Zoals XDA het verwoordde, is Caddy "een echt makkelijke manier om SSL-certs te krijgen voor je zelf-gehoste apps", en dat is precies waar de meeste mensen een reverse proxy voor willen.

Caddy installeren op Ubuntu of Debian

Op een verse Ubuntu- of Debian-VPS installeer je Caddy vanuit de officiële apt-repository. Dit zijn de actuele commando's uit de Caddy-docs:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Installeren via apt zet Caddy op als een systemd-service die bij het opstarten start en zijn config leest uit /etc/caddy/Caddyfile. Controleer de versie met caddy version; medio 2026 is de huidige stabiele release Caddy 2.11.4 (juni 2026), en recente 2.11.x-releases hebben beveiligingsproblemen gepatcht, waaronder CVE-2026-27590 en CVE-2026-27589 (beide opgelost in 2.11.1), dus draai een up-to-date build in plaats van wat er een jaar geleden werd geleverd. Als je liever helemaal niet aan de host komt, sla dan door naar de Docker-sectie. Voordat je iets publiek blootstelt, zorg er eerst voor dat de machine zelf goed dichtgetimmerd is, volgens onze gids over het veilige eerste uur op een nieuwe VPS.

De minimale Caddyfile: één regel voor automatische HTTPS

Het hele punt van Caddy is hoe weinig je hoeft te schrijven. Bewerk /etc/caddy/Caddyfile zodat het een site-blok bevat met je echte domein en het lokale adres van de app die je wilt blootstellen:

example.com {
    reverse_proxy localhost:8080
}

Herlaad met sudo systemctl reload caddy (of caddy reload als je het handmatig draait) en je bent klaar. Bij het starten luistert Caddy op poort 80 en 443, vraagt een vertrouwd certificaat aan voor example.com en routeert verkeer naar je app op poort 8080. Twee dingen moeten waar zijn om het certificaat te laten uitgeven: een A/AAAA DNS-record voor het domein moet naar de server wijzen, en poort 80 en 443 moeten open staan naar het publieke internet zodat de ACME-challenge kan voltooien. Voor een snelle lokale test zonder domein gebruik je localhost als site-adres en installeert Caddy zijn eigen zelf-ondertekende certificaat. Wen jezelf aan om caddy validate --config /etc/caddy/Caddyfile te draaien vóór elke herlaad; het vangt typefouten op voordat ze een site plat kunnen leggen.

Meerdere apps en subdomeinen proxyen

Meerdere services achter één server draaien is waar een reverse proxy zijn geld waard maakt. Elke app krijgt zijn eigen blok, en Caddy routeert automatisch op hostnaam, waarbij het een apart certificaat voorziet voor elk domein:

app.example.com {
    reverse_proxy localhost:3000
}

grafana.example.com {
    reverse_proxy localhost:3001
}

api.example.com {
    reverse_proxy localhost:5000
}

Je kunt ook opsplitsen per pad binnen één domein met een handle_path- of route-blok, wat handig is wanneer een app op example.com/api hoort te draaien in plaats van op zijn eigen subdomein. Caddy handelt WebSocket-upgrades automatisch af, dus real-time apps werken zonder extra directives, en sinds Caddy 2.11 herschrijft het automatisch de upstream Host-header voor HTTPS-upstreams, waarmee een veelvoorkomende bron van "het werkt op poort 8080 maar niet via de proxy"-bugs verdwijnt. Dit patroon van één subdomein per app past van nature bij een vloot van kleine services, van het soort dat we behandelen in onze uitleg over je apps zelf hosten op een VPS.

Caddy in Docker met Docker Compose

De meeste zelf-hosters draaien Caddy in een container naast de apps die het bedient. De officiële caddy-image maakt hier een paar regels Compose van. Het ene detail dat mensen missen is het caddy_data-volume: het slaat je uitgegeven certificaten op, en zonder dit vraagt elke containerherstart de certs opnieuw aan en kan het tegen Let's Encrypt rate limits aanlopen.

services:
  caddy:
    image: caddy:2.11
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
  app:
    image: your-app-image
    restart: unless-stopped

volumes:
  caddy_data:
  caddy_config:

Omdat beide containers een Compose-netwerk delen, kan de Caddyfile de app bereiken via zijn servicenaam in plaats van localhost:

app.example.com {
    reverse_proxy app:8080
}

Dat is de hele opzet: docker compose up -d, en Caddy bedient app.example.com over HTTPS met automatisch verlengende certificaten. Als je dit alles liever door een dashboard laat aansturen, verpakt een platform als Coolify hetzelfde idee; zie onze gids over elke app deployen met Coolify.

Caddy vs Nginx vs Traefik: welke reverse proxy kies je?

Alle drie zijn degelijk, en de juiste keuze hangt af van hoe je deployt. Caddy wint op eenvoud en out-of-the-box HTTPS, Nginx wint op pure alomtegenwoordigheid en tuning-diepte, en Traefik wint wanneer je wilt dat de proxy zichzelf configureert vanuit container-labels.

Reverse proxyConfigstijlAutomatische HTTPSDocker-fitBeste voor
CaddyCaddyfile (een paar regels)Ja, standaardSimpele, expliciete configZelf-hosters die HTTPS willen met vrijwel geen opzet
Nginxnginx.conf-directivesNee (heeft certbot nodig)Handmatig, zeer volwassenHigh-traffic tuning en bestaande Nginx-shops
TraefikContainer-labels / YAMLJa, met opzetOntdekt containers automatischDynamische, label-gedreven Docker- en Kubernetes-vloten

Als je opnieuw begint en gewoon een handvol services op HTTPS wilt, is Caddy de snelste route. Kies Nginx als je het al kent of het enorme ecosysteem van modules en fijnmazige performance-controle nodig hebt. Kies Traefik als je stack zeer dynamisch is en je wilt dat de proxy zichzelf herconfigureert terwijl containers komen en gaan, en je er niet tegenop ziet meer bewegende delen nodig te hebben om daar te komen.

Waar Caddy past versus een Cloudflare Tunnel

Een reverse proxy en een tunnel lossen overlappende problemen op tegengestelde manieren op, en het is de moeite waard om te weten welke je echt nodig hebt. Caddy verwacht dat inkomende poort 80 en 443 open staan zodat het publiek verkeer kan accepteren en direct certificaten kan uitgeven. Dat is ideaal op een VPS met een publiek IP. Een Cloudflare Tunnel maakt in plaats daarvan een uitgaande verbinding naar Cloudflare en heeft helemaal geen open inkomende poorten nodig, wat beter past achter een thuisrouter of een restrictieve NAT waar je geen poorten kunt doorsturen.

Ze sluiten elkaar niet uit. Een veelvoorkomende opzet draait Caddy als de lokale reverse proxy die naar je apps routeert en interne TLS afsluit, terwijl een Cloudflare Tunnel de publieke blootstelling en edge-bescherming afhandelt. Als je server een publiek IP heeft en je de eenvoudigst mogelijke stack wilt, is Caddy alleen genoeg. Als je host vanaf een thuisverbinding of Cloudflare's DDoS-bescherming ervoor wilt, grijp dan naar de tunnel, of combineer de twee.

Veelgestelde vragen

Is Caddy gratis te gebruiken? Ja. Caddy is open source onder de Apache 2.0-licentie en gratis voor elk gebruik, inclusief commercieel. Er is geen betaalde laag voor de reverse-proxy-functies, en automatische HTTPS via Let's Encrypt en ZeroSSL kost niets.

Verlengt Caddy SSL-certificaten automatisch? Ja. Zodra Caddy een certificaat uitgeeft voor een domein, beheert het de verlenging zelf, meestal ruim vóór het verloopt, zonder cron-job of certbot. Houd de /data-map (of het caddy_data Docker-volume) persistent zodat certificaten herstarts overleven.

Caddy vs Nginx: welke is beter voor een reverse proxy? Voor de meeste zelf-gehoste opzetten is Caddy makkelijker omdat HTTPS automatisch is en de config een paar regels beslaat. Nginx is beter als je het volwassen module-ecosysteem nodig hebt, tunet voor zeer hoog verkeer, of het al draait. Beide zijn productiewaardige reverse proxies.

Kan ik Caddy als reverse proxy in Docker draaien? Ja, en het is de meest gebruikelijke manier om het te draaien. Gebruik de officiële caddy-image, mount je Caddyfile, en houd het caddy_data-volume persistent zodat certificaten niet bij elke herstart opnieuw worden aangevraagd. Verwijs naar apps via hun Compose-servicenaam in plaats van localhost.

Moet ik poorten openen? Caddy heeft poort 80 en 443 bereikbaar vanaf het internet nodig om publieke certificaten uit te geven en verkeer te bedienen. Als je geen inkomende poorten kunt openen, gebruik dan in plaats daarvan een Cloudflare Tunnel, die over een uitgaande verbinding werkt.

Bronnen

Waqas Ahmed Waseer

Waqas Ahmed Waseer

Waqas Ahmed Waseer is ontwikkelaar en automation-builder met meer dan 8 jaar ervaring in het bouwen van productiesystemen die door 100.000+ mensen worden gebruikt. Hij bouwt custom multi-tenant SaaS, AI-automatisering (n8n, LLM-workflows, WhatsApp-bots) en hostinginfrastructuur (WHM/cPanel, CloudLinux) — en is de maker van WaSphere, FlowMaticX en het hostingmerk WaseerHost. 100+ projecten opgeleverd voor mkb, bureaus en gefinancierde startups.

Gerelateerd

Meer in Cloud & Hosting

Bekijk alles

Discussie · 0

Wees vriendelijk. Reacties zijn openbaar.

    Nieuwsbrief · Maandageditie

    De maandagbriefing.

    Eén e-mail elke maandagochtend. De week vooruit in AI, startups, hosting en devtools — geen onzin, geen gesponsorde lokkertjes.

    Gratis. Met één klik uitschrijven.