Cloudflare Tunnel VPS Anleitung 2026: Dienste ohne offene Ports bereitstellen
TUTORIAL 12 min read fordnox

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?

AnsatzOffene PortsIP sichtbarDDoS-SchutzSSL
Cloudflare TunnelKeineVerstecktIntegriertAutomatisch
Reverse Proxy (Nginx)80, 443JaKeinerManuell (Let’s Encrypt)
Port-WeiterleitungBeliebigJaKeinerManuell
VPN + ZugangVPN-PortVerstecktKeinerUeber 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

  1. cloudflared laeuft auf Ihrem VPS und erstellt eine ausgehende Verbindung zu Cloudflares Edge-Netzwerk
  2. Traffic erreicht Ihre Domain → Cloudflare leitet ihn durch den Tunnel → erreicht Ihren Dienst
  3. Ihr VPS akzeptiert nie eingehende Verbindungen — er waehlt sich nur nach aussen ein
  4. Cloudflare uebernimmt SSL, DDoS-Schutz und Caching automatisch

Keine offenen Ports. Keine sichtbare IP. Keine Angriffsflaeche.

Voraussetzungen

Bester VPS fuer Cloudflare Tunnel

AnbieterPlanPreisWarum
HostingerKVM14,99 $/MonatBestes Preis-Leistungs-Verhaeltnis, solide Leistung
HetznerCX223,79 €/MonatGuenstigster fuer EU
VultrVC26 $/MonatGlobale Standorte
DigitalOceanBasic6 $/MonatEinfaches 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.pem zurueck 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:

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:

  1. Gehen Sie zum Zero Trust Dashboard → Networks → Tunnels
  2. Erstellen Sie einen Tunnel → erhalten Sie den Token
  3. Konfigurieren Sie Routen im Dashboard
  4. 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

  1. Zero Trust Dashboard → Access → Applications → Add
  2. Anwendungsdomain festlegen (z.B. grafana.yourdomain.com)
  3. Richtlinie hinzufuegen: Allow → E-Mails mit Endung @yourdomain.com

Benutzer sehen eine Cloudflare-Anmeldeseite, bevor sie Ihre App erreichen.

Einmal-PIN

  1. Richtlinie hinzufuegen: Allow → Emails → bestimmte E-Mail-Adressen
  2. Authentifizierung: Einmal-PIN
  3. 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

FunktionCloudflare TunnelNginx + Let’s EncryptTailscale Funnel
Offene PortsKeine80, 443Keine
DDoS-SchutzJaNeinNein
SSLAutomatischManuelle ErneuerungAutomatisch
Eigene DomainJaJaEingeschraenkt
ZugriffskontrolleZero TrustEigenentwicklungTailscale ACLs
PreisKostenlosKostenlosKostenlos (eingeschraenkt)
GeschwindigkeitSchnell (Edge-Cache)DirektGut

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

  1. Zero Trust-Richtlinien verwenden — Stellen Sie Admin-Panels nicht dem gesamten Internet zur Verfuegung
  2. Tunnel-Tokens rotieren — Loeschen und erstellen Sie Tunnel periodisch neu
  3. 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
  1. Zugriffsprotokolle ueberwachen — Das Zero Trust Dashboard zeigt alle Anfragen
  2. 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

FunktionKostenlosPro (20 $/Monat)Business (200 $/Monat)
TunnelUnbegrenztUnbegrenztUnbegrenzt
Zero Trust-Benutzer505050
DDoS-SchutzBasisErweitertFortgeschritten
WAF-RegelnEingeschraenkt20100+

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

AnwendungsfallSetupHinweise
Einzelne Web-AppSchnell-Tunnelcloudflared tunnel --url
Mehrere DiensteBenannter Tunnel + KonfigurationEin Tunnel, mehrere Ingress-Regeln
TeamzugriffTunnel + Zero TrustE-Mail- oder SSO-Authentifizierung
ProduktionDocker + Dashboard-TokenEinfache 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.

~/cloudflare-tunnel-vps-guide/get-started

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

cloudflare tunnel vps cloudflare tunnel setup cloudflared vps expose vps without ports cloudflare zero trust tunnel

// related guides

Andrius Putna

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.