Cloudflare Tunnel VPS Handleiding 2026: Services Beschikbaar Maken Zonder Poorten Te Openen
Stel Cloudflare Tunnel in op je VPS om webapps veilig beschikbaar te maken zonder poorten te openen of je server-IP prijs te geven. Complete handleiding met Docker en DNS-configuratie.
Cloudflare Tunnel op VPS: Veilige Toegang Zonder Open Poorten
Cloudflare Tunnel laat je services op je VPS beschikbaar maken op internet zonder een enkele poort te openen. Geen publiek IP nodig, geen firewallregels, geen port forwarding — Cloudflare regelt alles via een versleutelde uitgaande verbinding.
Waarom Cloudflare Tunnel?
| Aanpak | Open Poorten | IP Zichtbaar | DDoS Bescherming | SSL |
|---|---|---|---|---|
| Cloudflare Tunnel | Geen | Verborgen | Ingebouwd | Automatisch |
| Reverse proxy (Nginx) | 80, 443 | Ja | Geen | Handmatig (Let’s Encrypt) |
| Port forwarding | Elke | Ja | Geen | Handmatig |
| VPN + toegang | VPN-poort | Verborgen | Geen | Via VPN |
Traditionele opzet: poorten openen → firewall configureren → SSL beheren → hopen dat niemand je IP vindt.
Cloudflare Tunnel: installeer cloudflared → wijs het naar je lokale service → klaar. Je server blijft onzichtbaar.
Hoe Werkt Het?
cloudflareddraait op je VPS en maakt een uitgaande verbinding naar Cloudflare’s edge- Verkeer bereikt je domein → Cloudflare routeert het door de tunnel → bereikt je service
- Je VPS accepteert nooit inkomende verbindingen — het belt alleen naar buiten
- Cloudflare regelt SSL, DDoS bescherming en caching automatisch
Geen open poorten. Geen IP zichtbaar. Geen aanvalsoppervlak.
Vereisten
- Een domein op Cloudflare (gratis abonnement werkt)
- Een VPS met Linux (elke provider)
- Services die lokaal draaien (webapps, API’s, dashboards)
Beste VPS voor Cloudflare Tunnel
| Provider | Abonnement | Prijs | Waarom |
|---|---|---|---|
| Hostinger | KVM1 | $4,99/mnd | Beste prijs-kwaliteit, solide prestaties |
| Hetzner | CX22 | €3,79/mnd | Goedkoopste voor EU |
| Vultr | VC2 | $6/mnd | Wereldwijde locaties |
| DigitalOcean | Basic | $6/mnd | Eenvoudig dashboard |
Cloudflare Tunnel gebruikt minimale resources — de VPS-specificaties zijn belangrijk voor je daadwerkelijke services, niet voor de tunnel zelf.
Snelle Installatie (10 Minuten)
Stap 1: Installeer cloudflared
# Debian/Ubuntu
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
apt update
apt install cloudflared -y
# Of download het binaire bestand direct
curl -fsSL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
Controleer:
cloudflared --version
Stap 2: Authenticeren
cloudflared tunnel login
Dit opent een browser-URL. Kies het domein dat je wilt gebruiken. Een certificaat wordt opgeslagen in ~/.cloudflared/cert.pem.
Headless server? Kopieer de URL die wordt afgedrukt, open deze op je lokale machine, authenticeer en kopieer
cert.pemterug naar de server.
Stap 3: Maak een Tunnel Aan
cloudflared tunnel create my-tunnel
Dit genereert een tunnel-ID en een credentials-bestand. Noteer de tunnel UUID — die heb je nodig.
# Tunnels weergeven
cloudflared tunnel list
Stap 4: Configureer de Tunnel
Maak het configuratiebestand aan:
mkdir -p ~/.cloudflared
cat > ~/.cloudflared/config.yml << 'EOF'
tunnel: YOUR_TUNNEL_UUID
credentials-file: /root/.cloudflared/YOUR_TUNNEL_UUID.json
ingress:
- hostname: app.yourdomain.com
service: http://localhost:3000
- hostname: api.yourdomain.com
service: http://localhost:8080
- service: http_status:404
EOF
Vervang:
YOUR_TUNNEL_UUIDdoor je tunnel-ID- Hostnamen en poorten door je daadwerkelijke services
De laatste http_status:404 regel is verplicht — het is de vangstregel voor niet-overeenkomende verzoeken.
Stap 5: Maak DNS-records Aan
cloudflared tunnel route dns my-tunnel app.yourdomain.com
cloudflared tunnel route dns my-tunnel api.yourdomain.com
Dit maakt automatisch CNAME-records aan die naar je tunnel verwijzen.
Stap 6: Start de Tunnel
cloudflared tunnel run my-tunnel
Je services zijn nu live op app.yourdomain.com en api.yourdomain.com — met SSL, DDoS bescherming en nul open poorten.
Draaien als Systeemservice
Draai tunnels niet in een terminal. Stel een echte service in:
cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared
Status controleren:
systemctl status cloudflared
journalctl -u cloudflared -f
De service leest uit ~/.cloudflared/config.yml (of /etc/cloudflared/config.yml op sommige systemen).
Docker Installatie
Enkele Service
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
command: tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
restart: unless-stopped
network_mode: host
Met Docker Compose Services
services:
cloudflared:
image: cloudflare/cloudflared:latest
command: tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
restart: unless-stopped
depends_on:
- webapp
- api
networks:
- tunnel
webapp:
image: nginx:alpine
networks:
- tunnel
api:
image: your-api:latest
networks:
- tunnel
networks:
tunnel:
Bij gebruik van Docker-netwerken, verwijs services naar containernamen:
ingress:
- hostname: app.yourdomain.com
service: http://webapp:80
- hostname: api.yourdomain.com
service: http://api:8080
- service: http_status:404
Token-gebaseerde Installatie (Aanbevolen voor Docker)
Gebruik in plaats van configuratiebestanden het Cloudflare Zero Trust dashboard:
- Ga naar Zero Trust Dashboard → Networks → Tunnels
- Maak een tunnel aan → krijg het token
- Configureer routes in het dashboard
- Draai met enkel:
cloudflared tunnel run --token YOUR_TOKEN
Geen configuratiebestanden nodig. Beheer alles vanuit het dashboard.
Meerdere Services op Een Tunnel
Een tunnel kan onbeperkt services bedienen. Voeg meer ingress-regels toe:
ingress:
- hostname: grafana.yourdomain.com
service: http://localhost:3000
- hostname: portainer.yourdomain.com
service: http://localhost:9000
- hostname: code.yourdomain.com
service: http://localhost:8443
- hostname: files.yourdomain.com
service: http://localhost:8080
- hostname: yourdomain.com
service: http://localhost:80
- service: http_status:404
Elke hostnaam heeft een DNS-route nodig:
cloudflared tunnel route dns my-tunnel grafana.yourdomain.com
cloudflared tunnel route dns my-tunnel portainer.yourdomain.com
Toegangscontrole met Cloudflare Zero Trust
De tunnel alleen maakt services toegankelijk voor iedereen. Voeg Zero Trust-beleid toe om toegang te beperken:
E-mail-gebaseerde Authenticatie
- Zero Trust Dashboard → Access → Applications → Add
- Stel het applicatiedomein in (bijv.
grafana.yourdomain.com) - Voeg beleid toe: Allow → E-mails eindigend op
@yourdomain.com
Gebruikers zien een Cloudflare-inlogpagina voordat ze je app bereiken.
Eenmalige PIN
- Voeg beleid toe: Allow → Emails → specifieke e-mailadressen
- Authenticatie: Eenmalige PIN
- Gebruikers voeren e-mail in → krijgen een code → toegang verleend
Geen wachtwoorden te beheren. Geen accounts aan te maken.
Service Tokens (voor API’s)
# Maak een service token aan in het dashboard
# Gebruik vervolgens toegang met headers:
curl -H "CF-Access-Client-Id: YOUR_CLIENT_ID" \
-H "CF-Access-Client-Secret: YOUR_CLIENT_SECRET" \
https://api.yourdomain.com/endpoint
Veelvoorkomende Toepassingen
Zelf-gehoste Dashboards
Maak Grafana, Portainer of Uptime Kuma beschikbaar zonder poorten te openen:
ingress:
- hostname: monitor.yourdomain.com
service: http://localhost:3001
originRequest:
noTLSVerify: true
Ontwikkelomgevingen
Deel lokale ontwikkelservers tijdelijk:
# Snelle tunnel (geen configuratie nodig)
cloudflared tunnel --url http://localhost:3000
Dit maakt een tijdelijke *.trycloudflare.com URL aan. Ideaal voor demo’s en testen.
SSH Toegang
Krijg toegang tot je VPS via SSH door Cloudflare:
Serverconfiguratie:
ingress:
- hostname: ssh.yourdomain.com
service: ssh://localhost:22
- service: http_status:404
Client:
# Voeg toe aan ~/.ssh/config
Host ssh.yourdomain.com
ProxyCommand cloudflared access ssh --hostname %h
Nu SSH zonder poort 22 bloot te stellen. Combineer met Zero Trust-beleid voor extra authenticatie.
TCP/UDP Services
Tunnel niet-HTTP services:
ingress:
- hostname: db.yourdomain.com
service: tcp://localhost:5432
- service: http_status:404
Clientzijde:
cloudflared access tcp --hostname db.yourdomain.com --url localhost:5432
Prestatieoptimalisatie
Protocolselectie
tunnel: YOUR_TUNNEL_UUID
credentials-file: /root/.cloudflared/YOUR_TUNNEL_UUID.json
protocol: quic # Snelste, standaard in nieuwere versies
ingress:
- hostname: app.yourdomain.com
service: http://localhost:3000
- service: http_status:404
QUIC is sneller en gaat beter om met pakketverlies dan HTTP/2.
Verbindingsinstellingen
ingress:
- hostname: app.yourdomain.com
service: http://localhost:3000
originRequest:
connectTimeout: 30s
keepAliveTimeout: 90s
keepAliveConnections: 100
httpHostHeader: app.yourdomain.com
- service: http_status:404
Caching
Aangezien verkeer via Cloudflare loopt, krijg je hun caching automatisch. Configureer cacheregels in het Cloudflare-dashboard voor statische bestanden.
Cloudflare Tunnel vs Alternatieven
| Functie | Cloudflare Tunnel | Nginx + Let’s Encrypt | Tailscale Funnel |
|---|---|---|---|
| Open poorten | Geen | 80, 443 | Geen |
| DDoS bescherming | Ja | Nee | Nee |
| SSL | Automatisch | Handmatige verlenging | Automatisch |
| Eigen domein | Ja | Ja | Beperkt |
| Toegangscontrole | Zero Trust | Zelf doen | Tailscale ACLs |
| Prijs | Gratis | Gratis | Gratis (beperkt) |
| Snelheid | Snel (edge cache) | Direct | Goed |
Voor het beschikbaar maken van webservices is Cloudflare Tunnel moeilijk te verslaan. Voor privaat netwerken tussen apparaten, bekijk in plaats daarvan WireGuard of Tailscale.
Probleemoplossing
Tunnel Maakt Geen Verbinding
# Controleer tunnelstatus
cloudflared tunnel info my-tunnel
# Controleer logs
journalctl -u cloudflared --no-pager -n 50
# Test connectiviteit
cloudflared tunnel run --loglevel debug my-tunnel
502 Bad Gateway
Je lokale service draait niet of staat op een andere poort:
# Controleer of de service luistert
ss -tlnp | grep :3000
# Controleer of de service reageert
curl -v http://localhost:3000
DNS Wordt Niet Opgelost
# Controleer of CNAME bestaat
dig app.yourdomain.com CNAME
# Moet verwijzen naar UUID.cfargotunnel.com
# Zo niet, voer opnieuw uit:
cloudflared tunnel route dns my-tunnel app.yourdomain.com
WebSocket Problemen
Voeg WebSocket-ondersteuning toe:
ingress:
- hostname: ws.yourdomain.com
service: http://localhost:3000
originRequest:
noTLSVerify: false
- service: http_status:404
Cloudflare Tunnel ondersteunt WebSockets standaard — zorg er alleen voor dat je Cloudflare-abonnement het toestaat (gratis abonnement werkt voor de meeste toepassingen).
Certificaatfouten
# Opnieuw authenticeren
cloudflared tunnel login
# Controleer certificaat
ls -la ~/.cloudflared/cert.pem
Beveiligingsaanbevelingen
- Gebruik Zero Trust-beleid — Stel beheerdersdashboards niet beschikbaar voor het hele internet
- Roteer tunnel-tokens — Verwijder en maak tunnels periodiek opnieuw aan
- Sluit alle VPS-poorten — Als alles via tunnels loopt, sluit 80/443 volledig
# Vergrendel firewall — alleen SSH nodig
ufw default deny incoming
ufw allow ssh
ufw enable
# Geen 80/443 nodig
- Monitor toegangslogs — Zero Trust dashboard toont alle verzoeken
- Schakel meldingen in — Ontvang waarschuwingen bij veranderingen in tunnelgezondheid
Meerdere Tunnels
Draai aparte tunnels voor isolatie:
cloudflared tunnel create production
cloudflared tunnel create staging
Aparte configuratiebestanden:
cloudflared tunnel --config ~/.cloudflared/production.yml run production
cloudflared tunnel --config ~/.cloudflared/staging.yml run staging
Prijzen
| Functie | Gratis | Pro ($20/mnd) | Business ($200/mnd) |
|---|---|---|---|
| Tunnels | Onbeperkt | Onbeperkt | Onbeperkt |
| Zero Trust gebruikers | 50 | 50 | 50 |
| DDoS bescherming | Basis | Uitgebreid | Geavanceerd |
| WAF-regels | Beperkt | 20 | 100+ |
Het gratis abonnement dekt de meeste selfhosting-behoeften. Je hebt alleen Pro nodig voor geavanceerde WAF-regels of prioriteitsondersteuning.
Veelgestelde Vragen
Is Cloudflare Tunnel gratis?
Ja. Tunnels zijn gratis op alle abonnementen, inclusief de gratis versie. Zero Trust is gratis voor maximaal 50 gebruikers.
Vertraagt het mijn services?
Meestal het tegenovergestelde — Cloudflare’s edge-netwerk en caching kunnen services sneller maken voor wereldwijde gebruikers.
Kan ik het gebruiken zonder domein?
Voor snel testen geeft cloudflared tunnel --url je een tijdelijk *.trycloudflare.com domein. Voor productie heb je een domein op Cloudflare nodig.
Wat gebeurt er als Cloudflare uitvalt?
Je services worden onbereikbaar. Dit is de afweging — je bent afhankelijk van Cloudflare’s uptime. Voor kritieke services, onderhoud een back-up toegangsmethode (VPN of directe SSH).
Kan ik meerdere tunnels op een VPS draaien?
Ja. Elke tunnel is een apart proces met een eigen configuratie. Geen limieten op tunnels per server.
Werkt het met Docker?
Perfect. Gebruik de officiele cloudflare/cloudflared image. Token-gebaseerde installatie is het eenvoudigst voor containers.
Aanbevolen Configuratie
| Toepassing | Configuratie | Opmerkingen |
|---|---|---|
| Enkele webapp | Snelle tunnel | cloudflared tunnel --url |
| Meerdere services | Benoemde tunnel + configuratie | Een tunnel, meerdere ingress-regels |
| Teamtoegang | Tunnel + Zero Trust | E-mail of SSO-authenticatie |
| Productie | Docker + dashboard-token | Eenvoudig beheer, automatische herstart |
De combinatie van een Hostinger VPS + Cloudflare Tunnel geeft je infrastructuur van bedrijfsniveau voor minder dan $5/maand. Geen poorten om te beheren, geen SSL om te verlengen, geen DDoS om je zorgen over te maken — deploy gewoon je apps en laat Cloudflare de rest afhandelen.
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.
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.
tutorialVPS with Crypto & No KYC — 7 Providers That Accept Bitcoin
Pay for VPS hosting with Bitcoin, Monero, or ETH — no ID required. We list 7 privacy-first providers with anonymous signup. Updated March 2026.
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: March 10, 2026. Disclosure: This article may contain affiliate links.