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!

Wie findest du diesen Artikel?
Es werden keine Cookies gesetzt. Gespeichert wird nur deine Bewertung, optionales Feedback und ein anonymisierter IP-Hash (Schutz vor Mehrfachbewertung). Datenschutz
„Wire and will, we’re breaking through – Share · Connect · Create!

Du baust Antennen, aktivierst Gipfel, experimentierst mit SDR oder hackst Meshtastic-Nodes? OERadio.at ist deine Plattform. Teile dein Wissen – als Artikel, Bauanleitung, Fieldreport oder Technik-Tipp. Egal ob erfahrene YL oder erfahrener OM, frisch lizenziert oder alter Hase: Deine Erfahrung zählt.