SDR weltweit zugÀnglich machen: Ein Funkamateur-Guide zu Cloudflare Tunnels

·

,

Oder: Wie ich lernte, das Port-Forwarding zu vergessen und die Cloud zu lieben 🙂


Einleitung

Liebe Funkamateure! Seid ihr es leid, mit den Port-Forwarding-Einstellungen eures Routers zu kĂ€mpfen? Genervt von DynDNS-Diensten, die im ungĂŒnstigsten Moment ihren Geist aufgeben? Wollt ihr euer großartiges OpenWebRX+ Setup mit der Welt teilen, ohne euer Heimnetzwerk den dunklen Ecken des Internets auszusetzen?

Dann schnappt euch euer LieblingsgetrĂ€nk (bei mir ist’s die Braunsche Röhre, 73!), und lasst mich euch zeigen, wie ich einen Cloudflare Tunnel auf meinem Raspberry Pi eingerichtet habe. Es ist kostenlos, sicher und das Beste daran – kein Port-Forwarding erforderlich!

Was ihr braucht:

  • Einen Raspberry Pi mit OpenWebRX+ (oder einem anderen Webdienst)
  • Einen Domain-Namen, der bei Cloudflare registriert ist (kostenloses Konto funktioniert perfekt)
  • SSH-Zugang zu eurem Pi
  • Etwa 20 Minuten Zeit
  • Geduld (die gleiche Art, die man beim Warten auf bessere Ausbreitungsbedingungen braucht)

Warum Cloudflare Tunnels?

Stellt euch einen Cloudflare Tunnel als sichere, verschlĂŒsselte „Röhre“ zwischen eurem Pi und Cloudflares Servern vor. Der gesamte Datenverkehr fließt durch diese Röhre, was bedeutet:

  • ✅ Kein Port-Forwarding – Euer Router bleibt dicht verschlossen
  • ✅ Kostenloses SSL/HTTPS – Automatische VerschlĂŒsselung fĂŒr eure Seite
  • ✅ DDoS-Schutz – Cloudflare schĂŒtzt euch vor Angriffen
  • ✅ Statischer Zugang – Keine DynDNS-Kopfschmerzen mehr
  • ✅ Mehrere Dienste – Verschiedene Services auf unterschiedlichen Subdomains

Es ist wie eine permanente, sichere QSO-Verbindung zu eurer Heimstation, nur im Internet!


Schritt 1: Installation von cloudflared

Zuerst verbinden wir uns per SSH mit dem Raspberry Pi. Sobald ihr eingeloggt seid, mĂŒssen wir herausfinden, welche Architektur euer Pi verwendet.

Systemarchitektur prĂŒfen:

bash

uname -m

Die meisten modernen Pis zeigen aarch64 (64-bit) oder armv7l/armhf (32-bit) an.

FĂŒr 32-bit ARM Systeme (armhf):

Das ist, was ich verwenden musste. Es erfordert den direkten Download der Binary, da die Paket-Repositories… sagen wir mal „temperamentvoll“ sein können.

bash

# ARM Binary herunterladen
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm

# AusfĂŒhrbar machen
chmod +x cloudflared-linux-arm

# In den Systempfad verschieben
sudo mv cloudflared-linux-arm /usr/local/bin/cloudflared

# ÜberprĂŒfen, ob es funktioniert
cloudflared --version

FĂŒr 64-bit ARM Systeme (aarch64):

bash

# ARM64 Binary herunterladen
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64

# AusfĂŒhrbar machen
chmod +x cloudflared-linux-arm64

# In den Systempfad verschieben
sudo mv cloudflared-linux-arm64 /usr/local/bin/cloudflared

# ÜberprĂŒfen, ob es funktioniert
cloudflared --version

Ihr solltet etwas wie cloudflared version 2025.11.1 sehen – die genaue Version ist egal, solange es lĂ€uft!


Schritt 2: Authentifizierung bei Cloudflare

Jetzt kommt der spannende Teil – das Login bei Cloudflare. FĂŒhrt diesen Befehl aus:

bash

cloudflared tunnel login

Im Terminal erscheint eine lange URL. Da ihr per SSH verbunden seid, könnt ihr nicht einfach draufklicken (naja, könnt ihr schon versuchen, aber euer Terminal wird euch komisch anschauen).

Kopiert die gesamte URL und fĂŒgt sie in einen Browser auf eurem Computer ein. Ihr werdet zum Cloudflare Dashboard weitergeleitet, wo ihr:

  1. Euch in euer Cloudflare-Konto einloggt
  2. Die Domain auswÀhlt, die ihr verwenden möchtet (z.B. webrx.at)
  3. Auf „Authorize“ (Autorisieren) klickt

Nach der Autorisierung geht zurĂŒck zu eurer SSH-Sitzung. Ihr solltet eine Erfolgsmeldung sehen, die bestĂ€tigt, dass eure Zugangsdaten in /home/radio/.cloudflared/cert.pem gespeichert wurden.

Pro-Tipp: Wenn ihr spĂ€ter eine Fehlermeldung bekommt, dass die cert.pem-Datei nicht gefunden wurde, ist dieser Schritt nicht ordentlich durchgelaufen. FĂŒhrt einfach den Login-Befehl nochmal aus!


Schritt 3: Tunnel erstellen

Zeit, den eigentlichen Tunnel zu erstellen! Denkt daran wie an die Etablierung eures Rufzeichens fĂŒr diese spezielle Verbindung.

bash

cloudflared tunnel create my-pi-tunnel

Ihr werdet eine Ausgabe sehen, die ungefÀhr so aussieht:

Tunnel credentials written to /home/radio/.cloudflared/1d7cebf0-2297-4eb3-abba-5d9606d8e3cb.json
Created tunnel my-pi-tunnel with id 1d7cebf0-2297-4eb3-abba-5d9606d8e3cb

WICHTIG: Kopiert diese UUID (die lange Zeichenfolge aus Zahlen und Buchstaben). Ihr braucht sie im nĂ€chsten Schritt. Meine war 1d7cebf0-2297-4eb3-abba-5d9606d8e3cb â€“ eure wird anders sein!


Schritt 4: Tunnel konfigurieren

Jetzt mĂŒssen wir dem Tunnel sagen, wohin er den Traffic leiten soll. Zuerst finden wir heraus, auf welchem Port OpenWebRX lĂ€uft.

PrĂŒfen, ob OpenWebRX auf Port 80 lĂ€uft:

bash

curl http://localhost:80

Wenn ihr HTML-Ausgabe seht, prima! Wenn nicht, versucht:

bash

curl http://localhost:8073

Sobald ihr den Port kennt, erstellen wir die Konfigurationsdatei:

bash

# System-Konfigurationsverzeichnis erstellen
sudo mkdir -p /etc/cloudflared

# Konfigurationsdatei erstellen und bearbeiten
sudo nano /etc/cloudflared/config.yml

Diese Konfiguration einfĂŒgen (Werte wie angegeben ersetzen):

yaml

tunnel: EURE-TUNNEL-UUID-HIER
credentials-file: /etc/cloudflared/EURE-TUNNEL-UUID-HIER.json

ingress:
  - hostname: eure-subdomain.euredomain.com
    service: http://localhost:80
  - service: http_status:404

Zum Beispiel, so sah meine aus:

yaml

tunnel: 1d7cebf0-2297-4eb3-abba-5d9606d8e3cb
credentials-file: /etc/cloudflared/1d7cebf0-2297-4eb3-abba-5d9606d8e3cb.json

ingress:
  - hostname: oe8yml.webrx.at
    service: http://localhost:80
  - service: http_status:404

Ersetzen:

  • EURE-TUNNEL-UUID-HIER mit eurer tatsĂ€chlichen Tunnel-UUID (an beiden Stellen!)
  • eure-subdomain.euredomain.com mit eurer tatsĂ€chlichen Domain/Subdomain
  • http://localhost:80 mit dem richtigen Port, falls eurer anders ist

Datei speichern (Strg+X, dann Y, dann Enter).

Jetzt die Credentials-Datei an den Systemstandort kopieren:

bash

sudo cp ~/.cloudflared/EURE-TUNNEL-UUID-HIER.json /etc/cloudflared/

Zum Beispiel:

bash

sudo cp ~/.cloudflared/1d7cebf0-2297-4eb3-abba-5d9606d8e3cb.json /etc/cloudflared/

Schritt 5: DNS einrichten

Jetzt mĂŒssen wir eure Domain auf den Tunnel zeigen lassen. Dies erstellt einen CNAME-Eintrag in Cloudflares DNS, der den Traffic zu eurem Tunnel routet.

bash

cloudflared tunnel route dns my-pi-tunnel eure-subdomain.euredomain.com

Zum Beispiel habe ich verwendet:

bash

cloudflared tunnel route dns my-pi-tunnel oe8yml.webrx.at

Ihr solltet sehen:

INF Added CNAME oe8yml.webrx.at which will route to this tunnel

Falls ihr einen Fehler bekommt, dass der Eintrag bereits existiert, kein Problem! Einfach:

  1. Geht zu https://dash.cloudflare.com
  2. WĂ€hlt eure Domain aus
  3. Geht zu DNS → Records
  4. Löscht den existierenden Eintrag fĂŒr eure Subdomain
  5. Versucht den Befehl nochmal

Schritt 6: Tunnel testen

Bevor wir ihn permanent machen, testen wir erstmal! FĂŒhrt aus:

bash

cloudflared tunnel run my-pi-tunnel

Ihr solltet Logs vorbeirollen sehen, einschließlich Zeilen wie:

INF Connection registered
INF Registered tunnel connection

Jetzt öffnet einen Browser und besucht eure Domain (z.B. https://oe8yml.webrx.at). Ihr solltet eure OpenWebRX-OberflĂ€che sehen!

Wenn es funktioniert: GlĂŒckwunsch! DrĂŒckt Strg+C, um den Tunnel zu stoppen, und geht zum nĂ€chsten Schritt.

Wenn ihr eine Cloudflare-Fehlerseite seht: PrĂŒft folgendes:

  • LĂ€uft OpenWebRX ĂŒberhaupt? (sudo systemctl status openwebrx)
  • Habt ihr den richtigen Port in eurer Config verwendet?
  • Könnt ihr lokal darauf zugreifen? (curl http://localhost:80)

Schritt 7: Als Systemdienst installieren

Jetzt machen wir den Tunnel permanent, damit er automatisch beim Booten des Pi startet. Kein manuelles Starten mehr!

bash

# Service installieren
sudo cloudflared service install

# Starten
sudo systemctl start cloudflared

# Beim Booten automatisch starten
sudo systemctl enable cloudflared

# PrĂŒfen, ob er lĂ€uft
sudo systemctl status cloudflared

Ihr solltet etwas sehen wie:

● cloudflared.service - cloudflared
   Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled)
   Active: active (running) since...

Dieses grĂŒne „active (running)“ ist, was ihr sehen wollt!


Fertig! 🎉

Euer OpenWebRX ist jetzt weltweit ĂŒber eure eigene Domain erreichbar, mit HTTPS-VerschlĂŒsselung, ohne Port-Forwarding und mit automatischem Start beim Booten!

Teilt euren Link mit anderen Funkamateuren, fĂŒgt ihn zu eurer QRZ-Seite hinzu und genießt es, DX-Stationen aus der ganzen Welt zuzuschauen, wie sie sich einklinken.

Euer Tunnel wird:

  • Automatisch beim Booten des Pi starten
  • Automatisch neu starten, wenn er abstĂŒrzt
  • Weiter laufen, auch wenn sich eure Heim-IP-Adresse Ă€ndert
  • Euer Netzwerk vor direkter Exposition ins Internet schĂŒtzen

NĂŒtzliche Befehle fĂŒr spĂ€ter

Hier sind einige praktische Befehle, die ihr euch merken solltet:

Live-Logs anzeigen:

bash

sudo journalctl -u cloudflared -f

Service neu starten:

bash

sudo systemctl restart cloudflared

Service stoppen:

bash

sudo systemctl stop cloudflared

Service starten:

bash

sudo systemctl start cloudflared

Tunnel-Status prĂŒfen:

bash

sudo systemctl status cloudflared

Alle Tunnel auflisten:

bash

cloudflared tunnel list

Fehlerbehebung hÀufiger Probleme

„Cannot determine default configuration path“

Eure Config-Datei ist am falschen Ort. Stellt sicher, dass sie in /etc/cloudflared/config.yml liegt und nicht in eurem Home-Verzeichnis.

„Cloudflare Tunnel error“ beim Besuch eurer Domain

Der Tunnel-Service lĂ€uft nicht. PrĂŒft mit sudo systemctl status cloudflared und schaut euch die Logs an mit sudo journalctl -u cloudflared -n 50.

Tunnel startet, aber die Seite lÀdt nicht

  • ÜberprĂŒft, ob euer lokaler Service lĂ€uft: curl http://localhost:EUER-PORT
  • PrĂŒft, ob die Port-Nummer in eurer Config mit eurem Service ĂŒbereinstimmt
  • Schaut in die Tunnel-Logs nach Verbindungsfehlern

„package architecture does not match system“

Ihr habt die falsche Binary heruntergeladen. Nutzt uname -m um eure Architektur zu prĂŒfen und ladet die passende Version herunter (arm vs arm64).


Weitere Dienste hinzufĂŒgen

Wollt ihr mehrere Services freigeben? Einfach! FĂŒgt einfach weitere EintrĂ€ge zu eurer Config-Datei hinzu:

yaml

tunnel: 1d7cebf0-2297-4eb3-abba-5d9606d8e3cb
credentials-file: /etc/cloudflared/1d7cebf0-2297-4eb3-abba-5d9606d8e3cb.json

ingress:
  - hostname: sdr.euredomain.com
    service: http://localhost:80
  - hostname: pihole.euredomain.com
    service: http://localhost:8080
  - hostname: homeassistant.euredomain.com
    service: http://localhost:8123
  - service: http_status:404

Dann DNS fĂŒr jeden einzeln routen:

bash

cloudflared tunnel route dns my-pi-tunnel sdr.euredomain.com
cloudflared tunnel route dns my-pi-tunnel pihole.euredomain.com
cloudflared tunnel route dns my-pi-tunnel homeassistant.euredomain.com

Service neu starten:

bash

sudo systemctl restart cloudflared

Sicherheitshinweise

Obwohl Cloudflare Tunnels ziemlich sicher sind, hier einige zusÀtzliche Tipps:

  1. ErwĂ€gt Cloudflare Access fĂŒr Authentifizierung, wenn ihr sensible Services freigebt
  2. Haltet euren Pi aktuell: sudo apt update && sudo apt upgrade
  3. Verwendet starke Passwörter fĂŒr euren Pi und alle Web-Interfaces
  4. Überwacht eure Tunnel-Logs gelegentlich auf verdĂ€chtige AktivitĂ€ten
  5. Gebt keine administrativen Interfaces frei ohne zusÀtzliche Authentifizierung

Schlusswort

Als Funkamateure lieben wir es zu basteln und unsere Stationen mit anderen zu teilen. Cloudflare Tunnels machen das einfacher und sicherer als je zuvor. Kein Kampf mehr mit NAT, CGNAT oder DynDNS-Diensten, die um 3 Uhr morgens wÀhrend eines Contests ausfallen.

Nun geht hinaus und teilt euer SDR mit der Welt! Und denkt daran: Genau wie im Funkverkehr kommt manchmal die beste DX von den unerwartetsten Orten.


Mein persönliches Fazit

Diese Anleitung ist nicht nur Theorie – ich habe sie selbst Schritt fĂŒr Schritt befolgt und damit https://oe8yml.webrx.at eingerichtet. Mein Setup lĂ€uft ĂŒber Starlink, und die Kombination aus Cloudflare Tunnel und Satelliteninternet funktioniert hervorragend! Keine Probleme mit CGNAT (Carrier-Grade NAT), die bei Starlink ĂŒblich wĂ€ren, und die Verbindung ist stabil und schnell.

Das Beste daran? Ich musste mir keine Gedanken ĂŒber die sich stĂ€ndig Ă€ndernde IP-Adresse machen oder komplizierte Netzwerkkonfigurationen durchfĂŒhren. Der Tunnel lĂ€uft einfach, egal ob ich gerade ĂŒber Satellit, Mobilfunk oder Festnetz verbunden bin.

Ich hoffe, diese Anleitung hilft euch genauso wie sie mir geholfen hat. Viel Spaß beim Einrichten eures eigenen WebSDR!

73 de OE8YML Michael

P.S. – Wenn euch dieser Guide geholfen hat, gebt mir ein Signal auf eurem Lieblingsband. Ich wĂŒrde gerne von eurem Setup hören! Und natĂŒrlich: Hört rein auf https://webrx.at â€“ dort findet ihr noch mehr WebSDRs aus unserer Community!


ZusÀtzliche Ressourcen


Zuletzt aktualisiert: Dezember 2025
Getestet auf: Raspberry Pi 3/4 mit Raspberry Pi OS (Debian Bullseye)
Lizenz: FĂŒhlt euch frei, diesen Guide zu teilen und zu modifizieren. Quellenangabe wird geschĂ€tzt!