Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Cloudflare Tunnel

Cloudflare Tunnel (fruher Argo Tunnel) erstellt eine verschlusselte, nur ausgehende Verbindung von Ihrer PRX-Instanz zum Edge-Netzwerk von Cloudflare. Keine offentliche IP, offene Firewall-Ports oder Portweiterleitung erforderlich. Cloudflare terminiert TLS und leitet Traffic uber den Tunnel an Ihren lokalen Agenten weiter.

Ubersicht

Cloudflare Tunnel ist das empfohlene Backend fur Produktions-PRX-Bereitstellungen, da es bietet:

  • Zero-Trust-Zugang -- Integration mit Cloudflare Access zur Identitatsverifizierung vor dem Erreichen Ihres Agenten
  • Benutzerdefinierte Domains -- Ihre eigene Domain mit automatischen HTTPS-Zertifikaten verwenden
  • DDoS-Schutz -- Traffic durchlauft das Cloudflare-Netzwerk und schirmt Ihren Origin ab
  • Hohe Zuverlassigkeit -- Cloudflare halt mehrere Edge-Verbindungen fur Redundanz aufrecht
  • Kostenloses Kontingent -- Cloudflare Tunnel sind im kostenlosen Plan verfugbar

Voraussetzungen

  1. Ein Cloudflare-Konto (kostenloses Kontingent ist ausreichend)
  2. cloudflared-CLI auf der Maschine installiert, auf der PRX lauft
  3. Eine zu Ihrem Cloudflare-Konto hinzugefugte Domain (fur benannte Tunnel)

cloudflared installieren

bash
# 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
sudo apt update && sudo apt install -y cloudflared

# macOS
brew install cloudflared

# Binary-Download (alle Plattformen)
# https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

Konfiguration

Quick Tunnel (Keine Domain erforderlich)

Die einfachste Einrichtung verwendet Cloudflares Quick Tunnel, der eine zufallige *.trycloudflare.com-Subdomain zuweist. Keine Cloudflare-Konto-Konfiguration uber die Installation von cloudflared hinaus erforderlich:

toml
[tunnel]
backend = "cloudflare"
local_addr = "127.0.0.1:8080"

[tunnel.cloudflare]
# Quick-Tunnel-Modus: kein Token, kein benannter Tunnel.
# Eine zufallige trycloudflare.com-URL wird bei jedem Start zugewiesen.
mode = "quick"

Quick Tunnel sind ideal fur Entwicklung und Tests. Die URL andert sich bei jedem Neustart, sodass Sie Webhook-Registrierungen entsprechend aktualisieren mussen.

Benannter Tunnel (Persistente Domain)

Fur die Produktion verwenden Sie einen benannten Tunnel mit einem stabilen Hostnamen:

toml
[tunnel]
backend = "cloudflare"
local_addr = "127.0.0.1:8080"

[tunnel.cloudflare]
mode = "named"

# Das Tunnel-Token, erhalten von `cloudflared tunnel create`.
# Kann auch uber die Umgebungsvariable CLOUDFLARE_TUNNEL_TOKEN gesetzt werden.
token = "eyJhIjoiNjY..."

# Der offentliche Hostname, der zu diesem Tunnel routet.
# Muss im Cloudflare-Dashboard oder uber cloudflared-CLI konfiguriert werden.
hostname = "agent.example.com"

Einen benannten Tunnel erstellen

bash
# 1. cloudflared mit Ihrem Cloudflare-Konto authentifizieren
cloudflared tunnel login

# 2. Einen benannten Tunnel erstellen
cloudflared tunnel create prx-agent
# Ausgabe: Created tunnel prx-agent with id <TUNNEL_ID>

# 3. Einen DNS-Eintrag erstellen, der auf den Tunnel zeigt
cloudflared tunnel route dns prx-agent agent.example.com

# 4. Das Tunnel-Token abrufen (fur config.toml)
cloudflared tunnel token prx-agent
# Ausgabe: eyJhIjoiNjY...

Konfigurationsreferenz

ParameterTypStandardBeschreibung
modestring"quick""quick" fur zufallige URLs, "named" fur persistente Hostnamen
tokenstring--Benanntes Tunnel-Token (erforderlich fur mode = "named")
hostnamestring--Offentlicher Hostname fur benannten Tunnel
cloudflared_pathstring"cloudflared"Pfad zum cloudflared-Binary
protocolstring"auto"Transportprotokoll: "auto", "quic", "http2"
edge_ip_versionstring"auto"IP-Version fur Edge-Verbindungen: "auto", "4", "6"
retriesinteger5Anzahl der Verbindungswiederholungen vor Aufgabe
grace_period_secsinteger30Sekunden Wartezeit vor dem Schliessen aktiver Verbindungen
metrics_portinteger--Wenn gesetzt, cloudflared-Metriken auf diesem Port exponieren
log_levelstring"info"cloudflared-Log-Level: "debug", "info", "warn", "error"

Zero-Trust-Zugang

Cloudflare Access fugt eine Identitatsschicht vor Ihrem Tunnel hinzu. Benutzer mussen sich authentifizieren (uber SSO, E-Mail-OTP oder Service-Tokens) bevor sie Ihre PRX-Instanz erreichen.

Zugriffsrichtlinien einrichten

  1. Zum Cloudflare Zero Trust Dashboard navigieren
  2. Eine Access-Anwendung fur Ihren Tunnel-Hostnamen erstellen
  3. Eine Zugriffsrichtlinie mit den gewunschten Identitatsanforderungen hinzufugen
Cloudflare Access-Richtlinien-Beispiel:
  Anwendung: agent.example.com
  Regel: Erlauben
  Einschliessen:
    - E-Mail endet mit: @ihrefirma.com
    - Service-Token: prx-webhook-token

Service-Tokens sind nutzlich fur automatisierte Webhook-Sender (GitHub, Slack), die keine interaktive Authentifizierung durchfuhren konnen. Konfigurieren Sie das Token in den Headern Ihres Webhook-Anbieters:

CF-Access-Client-Id: <client-id>
CF-Access-Client-Secret: <client-secret>

Gesundheitsprufungen

PRX uberwacht die Cloudflare-Tunnel-Gesundheit durch:

  1. Prufen, ob der cloudflared-Kindprozess lauft
  2. Senden eines HTTP GET an die offentliche URL und Verifizierung einer 2xx-Antwort
  3. Parsen der cloudflared-Metriken (wenn metrics_port konfiguriert ist) fur den Verbindungsstatus

Wenn der Tunnel ungesund wird, protokolliert PRX eine Warnung und versucht cloudflared neu zu starten. Der Neustart folgt einer exponentiellen Backoff-Strategie: 5s, 10s, 20s, 40s, bis zu maximal 5 Minuten zwischen Versuchen.

Logs und Debugging

cloudflared stdout und stderr werden von TunnelProcess erfasst und auf DEBUG-Level ins PRX-Log geschrieben. Um die Ausfuhrlichkeit zu erhohen:

toml
[tunnel.cloudflare]
log_level = "debug"

Gangige Log-Nachrichten und ihre Bedeutung:

Log-NachrichtBedeutung
Connection registeredTunnel zum Cloudflare-Edge hergestellt
Retrying connectionEdge-Verbindung abgebrochen, Wiederverbindung wird versucht
Serve tunnel errorFataler Fehler, Tunnel wird neu gestartet
Registered DNS recordDNS-Route erfolgreich erstellt

Beispiel: Vollstandiges Produktions-Setup

toml
[tunnel]
backend = "cloudflare"
local_addr = "127.0.0.1:8080"
health_check_interval_secs = 30
max_failures = 3

[tunnel.cloudflare]
mode = "named"
token = "${CLOUDFLARE_TUNNEL_TOKEN}"
hostname = "agent.mycompany.com"
protocol = "quic"
retries = 5
grace_period_secs = 30
log_level = "info"
bash
# Token uber Umgebungsvariable setzen
export CLOUDFLARE_TUNNEL_TOKEN="eyJhIjoiNjY..."

# PRX starten -- Tunnel startet automatisch
prx start

Sicherheitshinweise

  • Das Tunnel-Token gewahrt vollen Zugriff auf den benannten Tunnel. Speichern Sie es im PRX-Secrets-Manager oder ubergeben Sie es uber Umgebungsvariable. Committen Sie es niemals in die Versionskontrolle.
  • Quick Tunnel unterstutzen keine Access-Richtlinien. Verwenden Sie benannte Tunnel fur die Produktion.
  • cloudflared lauft als Kindprozess mit denselben Benutzerberechtigungen wie PRX. Erwagen Sie, PRX unter einem dedizierten Dienstkonto mit minimalen Berechtigungen auszufuhren.
  • Der gesamte Traffic zwischen cloudflared und Cloudflares Edge ist mit TLS 1.3 oder QUIC verschlusselt.

Verwandte Seiten

Released under the Apache-2.0 License.