Nginx + Let's Encrypt + open poorten vervangen door één tunnel
De klassieke self-hosting setup: Nginx als reverse proxy, Certbot voor Let's Encrypt, port 80 en 443 open in je firewall, een statisch IP of DynDNS, en een cron job die je certificaten vernieuwt. Het werkt. Maar het is ook fragiel, foutgevoelig en onnodig complex voor wat je eigenlijk wilt: je app beschikbaar maken op een publieke URL met HTTPS.
Cloudflare Tunnel vervangt die hele stack door één container. Geen inbound poorten, geen certificaatbeheer, geen exposed origin IP. En het werkt net zo goed op een laptop in je woonkamer als op een Kubernetes-cluster in een datacenter.
Wat Cloudflare Tunnel doet
De tunnel maakt een uitgaande verbinding naar Cloudflare's edge network. Al het verkeer naar je domein loopt via Cloudflare, die HTTPS termineert en het verkeer doorstuurt naar je lokale service. Je machine is nooit direct bereikbaar vanaf het internet.
- Je origin IP blijft onzichtbaar — aanvallers weten niet waar je draait
- Geen inbound firewall rules nodig — de tunnel is outbound-only
- DDoS-bescherming inbegrepen — Cloudflare's anycast netwerk absorbeert aanvallen
- SSL is automatisch — geen Certbot, geen renewal cron jobs, geen 2am expiry-paniek
Docker setup in vijf regels
De volledige 'infrastructuur' is één extra service in je Docker Compose:
cloudflared: image: cloudflare/cloudflared command: tunnel --no-autoupdate run environment: - TUNNEL_TOKEN=${CF_TOKEN}
Die snippet plus een gratis Cloudflare-account plus je domein geeft je production-grade HTTPS op elke machine, overal. Lokale laptop, NAS, Raspberry Pi — maakt niet uit.
Kubernetes: zelfde principe, andere aanpak
In Kubernetes draai je cloudflared als Deployment met een tunnel token in een Secret. Maar de interessantere optie is de Cloudflare Tunnel Ingress Controller: die vervangt je traditionele Ingress (Nginx, Traefik) volledig.
Je definieert gewoon Ingress-resources zoals je gewend bent. De controller pikt ze op en routeert verkeer via de tunnel naar je Services — zonder LoadBalancer, zonder NodePort, zonder exposed IPs.
Bij Webforged draaien we klantsites op Kubernetes met Cloudflare Tunnels als ingress. Elke klant krijgt een eigen tunnel, automatisch aangemaakt bij deployment. Geen handmatige DNS-records, geen certificate management, geen exposed cluster IPs.
Wanneer dit wél en niet werkt
Cloudflare Tunnel is perfect voor:
- Self-hosted apps achter NAT of CGNAT
- Homelab zonder statisch IP
- Interne tools die je extern bereikbaar wilt maken
- Side projects waar je geen VPS-kosten voor wilt
- Kubernetes clusters zonder dure LoadBalancer-IPs
Het is minder geschikt voor:
- Latency-kritische applicaties (extra hop via Cloudflare)
- Workloads die je volledig van Cloudflare wilt isoleren
- Situaties waar je Cloudflare's Terms of Service niet accepteert
De verborgen voordelen
Naast de obvious voordelen zijn er een paar dingen die je pas waardeert als je het gebruikt:
- Zero Trust access — koppel Cloudflare Access en je hebt SSO/MFA voor je interne tools zonder VPN
- Automatic failover — meerdere tunnel replicas en Cloudflare routeert om failures heen
- Geen DNS propagatie — nieuwe routes zijn instant actief
- Observability via Cloudflare dashboard — verkeer, errors, latency zonder eigen monitoring
Praktijkvoorbeeld
Op dit moment draai ik n8n, PostgreSQL en een webhook server op een lokale machine — publiek bereikbaar op een custom domein, nul cloud spend. Het enige 'cloud' is de tunnel zelf.
Op ons Kubernetes-cluster draaien klantsites met dezelfde aanpak. Nieuwe site deployen betekent: Helm install, tunnel wordt automatisch aangemaakt, domein is live. Geen handmatige stappen, geen wachten op DNS, geen certificate requests.
Conclusie
Als je nog steeds een VPS betaalt puur om HTTPS te krijgen voor een side project of interne tool: heroverweeg. De combinatie van Docker of Kubernetes met Cloudflare Tunnel geeft je production-grade hosting zonder de overhead van traditionele reverse proxy setups.
Het is niet voor elke use case geschikt. Maar voor de meeste self-hosted workloads is het precies genoeg — en aanzienlijk minder gedoe.
Hulp nodig bij het opzetten van Cloudflare Tunnels op Kubernetes? Neem contact op — we hebben het vaker gedaan.