Met een Cloudflare Tunnel maak je een zelf-gehoste app bereikbaar op internet zonder ook maar één firewallpoort te openen, zonder statisch IP en zonder ergens voor te betalen. In plaats van poorten door te sturen op je router draai je op je server een lichtgewicht agent genaamd cloudflared; die opent een uitgaande verbinding naar de edge van Cloudflare, en publiek verkeer reist via diezelfde verbinding terug naar je app. Deze gids loopt de volledige Cloudflare Tunnel-installatie op twee manieren door (dashboard en CLI) en behandelt daarna wanneer een tunnel juist het verkeerde gereedschap is.
Wat is een Cloudflare Tunnel, en waarom zou je er een gebruiken?
Een Cloudflare Tunnel is een permanente, uitsluitend uitgaande verbinding tussen je origin-server en het netwerk van Cloudflare. Omdat de verbinding vanaf jouw kant wordt opgezet, zijn er geen inkomende poorten om te openen en is er niets wat een poortscanner kan vinden. Verkeer naar app.yourdomain.com bereikt eerst Cloudflare en gaat daarna via de bestaande tunnel naar cloudflared, die het doorgeeft aan je lokale service, bijvoorbeeld op localhost:8080. Je krijgt gratis het TLS-certificaat, de DDoS-bescherming en de WAF van Cloudflare vóór je app, en het echte IP van je server blijft verborgen. Volgens de Cloudflare Tunnel-documentatie werken tunnels op elk plan, ook het gratis plan, zonder limiet op het aantal dat je aanmaakt. Juist die combinatie — nul blootgestelde poorten plus een gratis beheerde edge — is waarom homelabbers en kleine teams er de voorkeur aan geven boven klassieke port forwarding.
Voordat je begint: wat je nodig hebt
De installatie is kort, maar drie voorwaarden zijn niet onderhandelbaar:
- Een domein bij Cloudflare. De nameservers van je domein moeten naar Cloudflare wijzen, zodat het de DNS-records kan aanmaken die naar je tunnel routeren. Het domein zelf mag goedkoop zijn; het Cloudflare-account is gratis.
- Een draaiende service om bereikbaar te maken. Alles wat op een lokale poort antwoordt — een Node-app op
:3000, Nextcloud op:80, een dashboard op:8080. Heb je nog geen machine, begin dan met onze gids voor het veilige eerste uur op een VPS. cloudflaredgeïnstalleerd op die server. Het is één enkele Go-binary beschikbaar voor Linux, macOS en Windows, verpakt voorapt,brewen Docker via de officiële cloudflared-repository.
Dat is alles. Geen inkomende firewallregel, geen routerconfiguratie, geen publieke IPv4-lease.
Methode 1: de via het dashboard beheerde (remote-managed) tunnel
Voor de meeste mensen is dit de snelste route, en in 2026 stuurt Cloudflare nieuwe gebruikers hierheen omdat de configuratie in de cloud staat in plaats van in een bestand waar je op moet letten.
- Ga naar het Zero Trust-dashboard (
one.dash.cloudflare.com) → Networks → Tunnels → Create a tunnel → kies Cloudflared. - Geef de tunnel een naam en kopieer daarna het installatiecommando dat Cloudflare genereert. Het bevat een lange token en ziet eruit als
sudo cloudflared service install <TUNNEL_TOKEN>. - Plak en voer dat commando uit op je server. Het registreert een
systemd-service (of eenlaunchd-job op macOS), start bij het opstarten en herstart na een crash. Terug in het dashboard betekent een groene status Healthy dat de verbinding live is. - Open het tabblad Public Hostname → Add a public hostname. Stel het subdomein (
app), het domein en de lokale service (http://localhost:8080) in en klik op Save. Cloudflare maakt automatisch de CNAMEapp.yourdomain.com → <uuid>.cfargotunnel.comaan.
Bezoek https://app.yourdomain.com en je serveert al via HTTPS met een door Cloudflare uitgegeven certificaat. Je lokale machine heeft geen enkele TLS-configuratie nodig.
Methode 2: de via de CLI beheerde (locally-managed) tunnel
Geef je de voorkeur aan configuratie als code, wil je alles in versiebeheer, of route je meerdere services door één tunnel, gebruik dan de lokaal beheerde workflow. De commandonamen hieronder zijn de stabiele, gedocumenteerde cloudflared-werkwoorden:
# 1. Deze machine authenticeren (opent een browser om je domein te kiezen)
cloudflared tunnel login
# 2. Een benoemde tunnel aanmaken — schrijft een credentials-.json en print een UUID
cloudflared tunnel create my-tunnel
# 3. Een hostname naar de tunnel laten wijzen (maakt de DNS-CNAME voor je aan)
cloudflared tunnel route dns my-tunnel app.yourdomain.com
Beschrijf daarna je routering in ~/.cloudflared/config.yml:
tunnel: my-tunnel
credentials-file: /home/user/.cloudflared/<UUID>.json
ingress:
- hostname: app.yourdomain.com
service: http://localhost:8080
- hostname: files.yourdomain.com
service: http://localhost:80
- service: http_status:404 # verplichte catch-all-regel, moet als laatste staan
Elk configuratiebestand moet eindigen met een catch-all-regel (de regel http_status:404), anders weigert cloudflared te starten. Test het op de voorgrond met cloudflared tunnel run my-tunnel, en zodra het werkt, installeer je het als service zodat het herstarts overleeft:
sudo cloudflared service install
sudo systemctl enable --now cloudflared
sudo systemctl status cloudflared # bevestig dat het actief is
sudo journalctl -u cloudflared -f # volg de logs
Dit is de aanpak die netjes aansluit bij een self-hostingstack; zie onze stapsgewijze gids voor self-hosting op een VPS om het naast Docker in te richten.
Test het in 30 seconden met een quick tunnel
Voordat je je aan dat alles vastlegt, kun je het concept bewijzen zonder account en helemaal zonder DNS:
cloudflared tunnel --url http://localhost:8080
Dit print een willekeurige https://<words>.trycloudflare.com-URL die rechtstreeks naar je lokale poort routeert en sterft zodra je het proces stopt. Hij is rate-limited en bedoeld voor demo's, het testen van webhooks en "kan een collega dit nu zien?"-momenten — niet voor productie. Maar het is de snelste manier om te bevestigen dat je app bereikbaar is via de edge van Cloudflare.
Cloudflare Tunnel versus de alternatieven
Een tunnel is niet de enige manier om een zelf-gehoste app te bereiken. Zo verhoudt hij zich tot de gebruikelijke opties in 2026:
| Methode | Open poorten? | Publiek IP nodig | Kosten | Beste voor |
|---|---|---|---|---|
| Cloudflare Tunnel | Nee | Nee | Gratis | Publieke webapps achter een domein |
| Port forwarding + reverse proxy | Ja | Ja | Gratis (+ domein) | Volledige controle, geen derde partij in het pad |
| Tailscale / WireGuard | Nee | Nee | Gratis niveau | Privétoegang voor alleen jou en je team |
| ngrok | Nee | Nee | Gratis niveau, betaald voor eigen domeinen | Snelle demo's, dev-webhooks |
| Statisch IP + firewallregels | Ja | Ja | Toeslag bij de ISP | Legacy- of niet-HTTP-services |
Kort gezegd: wil je iets publiek bereikbaar op je eigen domein met een beheerde edge ervoor, dan wint een tunnel. Hoef alleen jijzelf de machine te bereiken, dan is een mesh-VPN als Tailscale eenvoudiger en houdt het verkeer end-to-end privé.
Wanneer je een Cloudflare Tunnel NIET moet gebruiken
Tunnels zijn uitstekend, maar ze zijn niet universeel:
- Zware niet-HTML-media. De voorwaarden van Cloudflare beperken het serveren van grote hoeveelheden video of bestandsdownloads die geen onderdeel zijn van een website. Een mediazware zelf-gehoste Plex- of bestandsserver kan daar tegenaan lopen; een reverse proxy op je eigen IP omzeilt de kwestie.
- Cloudflare ziet je verkeer. TLS eindigt bij de edge van Cloudflare, dus technisch gezien kunnen ze verzoeken inspecteren. Voor de meeste self-hosters is die afweging prima; voor setups die derden principieel niet vertrouwen niet.
- Je hebt een domein bij Cloudflare nodig. Geen domein, of DNS die je niet naar Cloudflare kunt verplaatsen, betekent dat benoemde tunnels geen optie zijn (quick tunnels werken nog wel om te testen).
- Latentiegevoelige of niet-HTTP-protocollen kunnen lastiger zijn en vereisen soms Cloudflares betaalde product Spectrum in plaats van een gewone tunnel.
Grendel het af met Cloudflare Access
Een app publiek bereikbaar maken en hem authenticeren zijn twee verschillende taken. Een tunnel verzorgt het transport; om te bepalen wie de app mag bereiken, zet je Cloudflare Access vóór dezelfde hostname. Het plaatst een inlogpagina (Google, GitHub, eenmalige pincode per e-mail) vóór je app, en Cloudflares Zero Trust-plan is gratis voor maximaal 50 gebruikers. Voor een adminpaneel of een database-UI zoals die in onze gids voor het self-hosten van Supabase telt die inlogpoort zwaarder dan de tunnel zelf.
Veelgestelde vragen
Kan ik Cloudflare Tunnel gratis gebruiken?
Ja. Tunnels zijn inbegrepen bij elk Cloudflare-plan, inclusief het gratis niveau, zonder limiet op het aantal tunnels of gerouteerde services. Je hebt alleen een (betaald) domein en een gratis Cloudflare-account nodig. De Zero Trust-functies die authenticatie toevoegen, zijn ook gratis voor maximaal 50 gebruikers.
Wat is het nut van een Cloudflare Tunnel?
Hij laat een server het publieke internet bereiken zonder inkomende poorten of een publiek IP bloot te stellen. De server belt uit naar Cloudflare, en inkomende verzoeken reizen via diezelfde uitgaande verbinding terug. Je krijgt HTTPS, DDoS-bescherming en een verborgen origin-IP zonder je firewall of router aan te raken.
Kan ik Cloudflare Tunnel zonder domein gebruiken?
Voor een permanente, benoemde tunnel niet — je hebt een domein nodig waarvan de DNS door Cloudflare wordt beheerd. Voor wegwerptests kun je een quick tunnel draaien (cloudflared tunnel --url ...), die je een willekeurige trycloudflare.com-URL geeft zonder domein en zonder account.
Waarvoor kun je Cloudflare Tunnels gebruiken?
Voor het publiceren van zelf-gehoste apps (dashboards, wiki's, Nextcloud, homelab-services), het bereikbaar maken van een lokale dev-server om webhooks te testen, het geven van externe SSH- of RDP-toegang via Cloudflare, en het plaatsen van een gratis beheerde edge vóór elke HTTP-service die op door jou beheerde hardware draait.
Sources
- Cloudflare — Cloudflare Tunnel documentation: wat een tunnel is, dat hij uitsluitend uitgaand is en dat hij op het gratis plan werkt.
- Cloudflare — Set up Cloudflare Tunnel: het commando
cloudflared service installen de quick-tunnel-optie--url. - Cloudflare — Tunnel configuration file: ingressregels en de verplichte catch-all-regel.
- Cloudflare — Cloudflare One / Zero Trust: Access-authenticatie vóór een tunnel.
- GitHub — cloudflare/cloudflared: de tunnelclient, installatiepakketten en ondersteunde platforms.
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.



