Cloudflare Tunnel VPS Anleitung 2026: Dienste ohne offene Ports bereitstellen
Richten Sie Cloudflare Tunnel auf Ihrem VPS ein, um Web-Apps sicher bereitzustellen, ohne Ports zu oeffnen oder Ihre Server-IP preiszugeben. Komplette Anleitung mit Docker und DNS-Konfiguration.
Cloudflare Tunnel auf VPS: Sicherer Zugriff ohne offene Ports
Cloudflare Tunnel ermoeglicht es Ihnen, Dienste auf Ihrem VPS im Internet bereitzustellen, ohne einen einzigen Port zu oeffnen. Keine oeffentliche IP noetig, keine Firewall-Regeln, keine Port-Weiterleitung — Cloudflare uebernimmt alles ueber eine verschluesselte ausgehende Verbindung.
Warum Cloudflare Tunnel?
| Ansatz | Offene Ports | IP sichtbar | DDoS-Schutz | SSL |
|---|---|---|---|---|
| Cloudflare Tunnel | Keine | Versteckt | Integriert | Automatisch |
| Reverse Proxy (Nginx) | 80, 443 | Ja | Keiner | Manuell (Let’s Encrypt) |
| Port-Weiterleitung | Beliebig | Ja | Keiner | Manuell |
| VPN + Zugang | VPN-Port | Versteckt | Keiner | Ueber VPN |
Traditionelles Setup: Ports oeffnen → Firewall konfigurieren → SSL verwalten → hoffen, dass niemand Ihre IP findet.
Cloudflare Tunnel: cloudflared installieren → auf Ihren lokalen Dienst verweisen → fertig. Ihr Server bleibt unsichtbar.
So funktioniert es
cloudflaredlaeuft auf Ihrem VPS und erstellt eine ausgehende Verbindung zu Cloudflares Edge-Netzwerk- Traffic erreicht Ihre Domain → Cloudflare leitet ihn durch den Tunnel → erreicht Ihren Dienst
- Ihr VPS akzeptiert nie eingehende Verbindungen — er waehlt sich nur nach aussen ein
- Cloudflare uebernimmt SSL, DDoS-Schutz und Caching automatisch
Keine offenen Ports. Keine sichtbare IP. Keine Angriffsflaeche.
Voraussetzungen
- Eine Domain bei Cloudflare (kostenloser Plan reicht aus)
- Ein VPS mit Linux (beliebiger Anbieter)
- Lokal laufende Dienste (Web-Apps, APIs, Dashboards)
Bester VPS fuer Cloudflare Tunnel
| Anbieter | Plan | Preis | Warum |
|---|---|---|---|
| Hostinger | KVM1 | 4,99 $/Monat | Bestes Preis-Leistungs-Verhaeltnis, solide Leistung |
| Hetzner | CX22 | 3,79 €/Monat | Guenstigster fuer EU |
| Vultr | VC2 | 6 $/Monat | Globale Standorte |
| DigitalOcean | Basic | 6 $/Monat | Einfaches Dashboard |
Cloudflare Tunnel verbraucht minimale Ressourcen — die VPS-Spezifikationen sind fuer Ihre eigentlichen Dienste wichtig, nicht fuer den Tunnel selbst.
Schnell-Setup (10 Minuten)
Schritt 1: cloudflared installieren
# 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
# Oder Binary direkt herunterladen
curl -fsSL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
Ueberpruefen:
cloudflared --version
Schritt 2: Authentifizieren
cloudflared tunnel login
Dies oeffnet eine Browser-URL. Waehlen Sie die Domain aus, die Sie verwenden moechten. Ein Zertifikat wird unter ~/.cloudflared/cert.pem gespeichert.
Headless-Server? Kopieren Sie die angezeigte URL, oeffnen Sie sie auf Ihrem lokalen Rechner, authentifizieren Sie sich und kopieren Sie dann
cert.pemzurueck auf den Server.
Schritt 3: Tunnel erstellen
cloudflared tunnel create my-tunnel
Dies erzeugt eine Tunnel-ID und eine Anmeldedatei. Notieren Sie sich die Tunnel-UUID — Sie werden sie brauchen.
# Tunnel auflisten
cloudflared tunnel list
Schritt 4: Tunnel konfigurieren
Erstellen Sie die Konfigurationsdatei:
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
Ersetzen Sie:
YOUR_TUNNEL_UUIDdurch Ihre Tunnel-ID- Hostnamen und Ports durch Ihre tatsaechlichen Dienste
Die letzte http_status:404-Regel ist erforderlich — sie ist die Auffangregel fuer nicht zugeordnete Anfragen.
Schritt 5: DNS-Eintraege erstellen
cloudflared tunnel route dns my-tunnel app.yourdomain.com
cloudflared tunnel route dns my-tunnel api.yourdomain.com
Dies erstellt automatisch CNAME-Eintraege, die auf Ihren Tunnel verweisen.
Schritt 6: Tunnel starten
cloudflared tunnel run my-tunnel
Ihre Dienste sind jetzt unter app.yourdomain.com und api.yourdomain.com erreichbar — mit SSL, DDoS-Schutz und null offenen Ports.
Als Systemdienst ausfuehren
Fuehren Sie Tunnel nicht in einem Terminal aus. Richten Sie einen richtigen Dienst ein:
cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared
Status pruefen:
systemctl status cloudflared
journalctl -u cloudflared -f
Der Dienst liest aus ~/.cloudflared/config.yml (oder /etc/cloudflared/config.yml auf manchen Systemen).
Docker-Setup
Einzelner Dienst
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
command: tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
restart: unless-stopped
network_mode: host
Mit Docker Compose Diensten
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:
Bei Verwendung von Docker-Netzwerken verweisen Sie Dienste auf Container-Namen:
ingress:
- hostname: app.yourdomain.com
service: http://webapp:80
- hostname: api.yourdomain.com
service: http://api:8080
- service: http_status:404
Token-basiertes Setup (empfohlen fuer Docker)
Anstelle von Konfigurationsdateien verwenden Sie das Cloudflare Zero Trust Dashboard:
- Gehen Sie zum Zero Trust Dashboard → Networks → Tunnels
- Erstellen Sie einen Tunnel → erhalten Sie den Token
- Konfigurieren Sie Routen im Dashboard
- Starten Sie mit nur:
cloudflared tunnel run --token YOUR_TOKEN
Keine Konfigurationsdateien noetig. Verwalten Sie alles ueber das Dashboard.
Mehrere Dienste ueber einen Tunnel
Ein Tunnel kann unbegrenzt viele Dienste bedienen. Fuegen Sie weitere Ingress-Regeln hinzu:
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
Jeder Hostname benoetigt eine DNS-Route:
cloudflared tunnel route dns my-tunnel grafana.yourdomain.com
cloudflared tunnel route dns my-tunnel portainer.yourdomain.com
Zugriffskontrolle mit Cloudflare Zero Trust
Der Tunnel allein macht Dienste fuer jeden zugaenglich. Fuegen Sie Zero Trust-Richtlinien hinzu, um den Zugriff einzuschraenken:
E-Mail-basierte Authentifizierung
- Zero Trust Dashboard → Access → Applications → Add
- Anwendungsdomain festlegen (z.B.
grafana.yourdomain.com) - Richtlinie hinzufuegen: Allow → E-Mails mit Endung
@yourdomain.com
Benutzer sehen eine Cloudflare-Anmeldeseite, bevor sie Ihre App erreichen.
Einmal-PIN
- Richtlinie hinzufuegen: Allow → Emails → bestimmte E-Mail-Adressen
- Authentifizierung: Einmal-PIN
- Benutzer geben E-Mail ein → erhalten einen Code → Zugriff gewaehrt
Keine Passwoerter zu verwalten. Keine Konten zu erstellen.
Service-Tokens (fuer APIs)
# Erstellen Sie ein Service-Token im Dashboard
# Dann Zugriff mit Headern:
curl -H "CF-Access-Client-Id: YOUR_CLIENT_ID" \
-H "CF-Access-Client-Secret: YOUR_CLIENT_SECRET" \
https://api.yourdomain.com/endpoint
Haeufige Anwendungsfaelle
Selbst gehostete Dashboards
Stellen Sie Grafana, Portainer oder Uptime Kuma bereit, ohne Ports zu oeffnen:
ingress:
- hostname: monitor.yourdomain.com
service: http://localhost:3001
originRequest:
noTLSVerify: true
Entwicklungsumgebungen
Teilen Sie lokale Entwicklungsserver voruebergehend:
# Schnell-Tunnel (keine Konfiguration noetig)
cloudflared tunnel --url http://localhost:3000
Dies erstellt eine temporaere *.trycloudflare.com-URL. Ideal fuer Demos und Tests.
SSH-Zugriff
Greifen Sie ueber Cloudflare per SSH auf Ihren VPS zu:
Serverkonfiguration:
ingress:
- hostname: ssh.yourdomain.com
service: ssh://localhost:22
- service: http_status:404
Client:
# Zu ~/.ssh/config hinzufuegen
Host ssh.yourdomain.com
ProxyCommand cloudflared access ssh --hostname %h
Jetzt SSH ohne Port 22 freizugeben. Kombinieren Sie es mit Zero Trust-Richtlinien fuer zusaetzliche Authentifizierung.
TCP/UDP-Dienste
Nicht-HTTP-Dienste tunneln:
ingress:
- hostname: db.yourdomain.com
service: tcp://localhost:5432
- service: http_status:404
Client-Seite:
cloudflared access tcp --hostname db.yourdomain.com --url localhost:5432
Leistungsoptimierung
Protokollauswahl
tunnel: YOUR_TUNNEL_UUID
credentials-file: /root/.cloudflared/YOUR_TUNNEL_UUID.json
protocol: quic # Schnellstes, Standard in neueren Versionen
ingress:
- hostname: app.yourdomain.com
service: http://localhost:3000
- service: http_status:404
QUIC ist schneller und handhabt Paketverluste besser als HTTP/2.
Verbindungseinstellungen
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
Da der Traffic ueber Cloudflare laeuft, erhalten Sie deren Caching automatisch. Konfigurieren Sie Cache-Regeln im Cloudflare-Dashboard fuer statische Assets.
Cloudflare Tunnel vs. Alternativen
| Funktion | Cloudflare Tunnel | Nginx + Let’s Encrypt | Tailscale Funnel |
|---|---|---|---|
| Offene Ports | Keine | 80, 443 | Keine |
| DDoS-Schutz | Ja | Nein | Nein |
| SSL | Automatisch | Manuelle Erneuerung | Automatisch |
| Eigene Domain | Ja | Ja | Eingeschraenkt |
| Zugriffskontrolle | Zero Trust | Eigenentwicklung | Tailscale ACLs |
| Preis | Kostenlos | Kostenlos | Kostenlos (eingeschraenkt) |
| Geschwindigkeit | Schnell (Edge-Cache) | Direkt | Gut |
Fuer die Bereitstellung von Webdiensten ist Cloudflare Tunnel schwer zu schlagen. Fuer private Netzwerke zwischen Geraeten schauen Sie sich stattdessen WireGuard oder Tailscale an.
Fehlerbehebung
Tunnel verbindet sich nicht
# Tunnel-Status pruefen
cloudflared tunnel info my-tunnel
# Logs pruefen
journalctl -u cloudflared --no-pager -n 50
# Konnektivitaet testen
cloudflared tunnel run --loglevel debug my-tunnel
502 Bad Gateway
Ihr lokaler Dienst laeuft nicht oder ist auf einem anderen Port:
# Pruefen, ob der Dienst lauscht
ss -tlnp | grep :3000
# Pruefen, ob der Dienst antwortet
curl -v http://localhost:3000
DNS loest nicht auf
# CNAME-Eintrag ueberpruefen
dig app.yourdomain.com CNAME
# Sollte auf UUID.cfargotunnel.com verweisen
# Falls nicht, erneut ausfuehren:
cloudflared tunnel route dns my-tunnel app.yourdomain.com
WebSocket-Probleme
WebSocket-Unterstuetzung hinzufuegen:
ingress:
- hostname: ws.yourdomain.com
service: http://localhost:3000
originRequest:
noTLSVerify: false
- service: http_status:404
Cloudflare Tunnel unterstuetzt WebSockets nativ — stellen Sie einfach sicher, dass Ihr Cloudflare-Plan dies erlaubt (der kostenlose Plan deckt die meisten Anwendungsfaelle ab).
Zertifikatsfehler
# Erneut authentifizieren
cloudflared tunnel login
# Zertifikat pruefen
ls -la ~/.cloudflared/cert.pem
Sicherheits-Best-Practices
- Zero Trust-Richtlinien verwenden — Stellen Sie Admin-Panels nicht dem gesamten Internet zur Verfuegung
- Tunnel-Tokens rotieren — Loeschen und erstellen Sie Tunnel periodisch neu
- Alle VPS-Ports schliessen — Wenn alles ueber Tunnel laeuft, schliessen Sie 80/443 vollstaendig
# Firewall absichern — nur SSH noetig
ufw default deny incoming
ufw allow ssh
ufw enable
# Kein Bedarf fuer 80/443
- Zugriffsprotokolle ueberwachen — Das Zero Trust Dashboard zeigt alle Anfragen
- Benachrichtigungen aktivieren — Erhalten Sie Warnungen bei Tunnel-Statusaenderungen
Mehrere Tunnel
Fuehren Sie separate Tunnel fuer Isolation aus:
cloudflared tunnel create production
cloudflared tunnel create staging
Separate Konfigurationsdateien:
cloudflared tunnel --config ~/.cloudflared/production.yml run production
cloudflared tunnel --config ~/.cloudflared/staging.yml run staging
Preise
| Funktion | Kostenlos | Pro (20 $/Monat) | Business (200 $/Monat) |
|---|---|---|---|
| Tunnel | Unbegrenzt | Unbegrenzt | Unbegrenzt |
| Zero Trust-Benutzer | 50 | 50 | 50 |
| DDoS-Schutz | Basis | Erweitert | Fortgeschritten |
| WAF-Regeln | Eingeschraenkt | 20 | 100+ |
Der kostenlose Plan deckt die meisten Self-Hosting-Beduerfnisse ab. Sie benoetigen Pro nur fuer erweiterte WAF-Regeln oder priorisierten Support.
FAQ
Ist Cloudflare Tunnel kostenlos?
Ja. Tunnel sind bei allen Plaenen kostenlos, einschliesslich der kostenlosen Stufe. Zero Trust ist fuer bis zu 50 Benutzer kostenlos.
Verlangsamt es meine Dienste?
In der Regel das Gegenteil — Cloudflares Edge-Netzwerk und Caching koennen Dienste fuer globale Nutzer schneller machen.
Kann ich es ohne Domain nutzen?
Fuer schnelle Tests gibt Ihnen cloudflared tunnel --url eine temporaere *.trycloudflare.com-Domain. Fuer den Produktivbetrieb benoetigen Sie eine Domain bei Cloudflare.
Was passiert, wenn Cloudflare ausfaellt?
Ihre Dienste werden unerreichbar. Das ist der Kompromiss — Sie sind auf Cloudflares Verfuegbarkeit angewiesen. Fuer kritische Dienste sollten Sie eine Backup-Zugriffsmethode bereithalten (VPN oder direktes SSH).
Kann ich mehrere Tunnel auf einem VPS betreiben?
Ja. Jeder Tunnel ist ein separater Prozess mit eigener Konfiguration. Keine Begrenzung der Tunnel pro Server.
Funktioniert es mit Docker?
Einwandfrei. Verwenden Sie das offizielle cloudflare/cloudflared-Image. Das Token-basierte Setup ist am einfachsten fuer Container.
Empfohlenes Setup
| Anwendungsfall | Setup | Hinweise |
|---|---|---|
| Einzelne Web-App | Schnell-Tunnel | cloudflared tunnel --url |
| Mehrere Dienste | Benannter Tunnel + Konfiguration | Ein Tunnel, mehrere Ingress-Regeln |
| Teamzugriff | Tunnel + Zero Trust | E-Mail- oder SSO-Authentifizierung |
| Produktion | Docker + Dashboard-Token | Einfache Verwaltung, Auto-Neustart |
Die Kombination aus einem Hostinger VPS + Cloudflare Tunnel bietet Ihnen Enterprise-Grade-Infrastruktur fuer unter 5 $/Monat. Keine Ports zu verwalten, kein SSL zu erneuern, kein DDoS zu befuerchten — stellen Sie einfach Ihre Apps bereit und lassen Sie Cloudflare den Rest erledigen.
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.