Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 01.06.2026 · 9 min Lesezeit

Cloudflare Tunnel auf Synology NAS mit Docker: Dienste ohne Portfreigabe sicher veröffentlichen

Synology-Dienste ohne Portfreigabe veröffentlichen: cloudflared im Container Manager als Cloudflare Tunnel einrichten, Hostnamen zuordnen und mit Cloudflare Access absichern. Kern mit cloudflared 2026.10.0 getestet.

Geprüft am 13.10.2026 · für cloudflared 2026.10.0

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Schwarzes NAS mit vier Laufwerksschächten, per Netzwerkkabel mit einem Router verbunden, auf einem Regal im Homeoffice

Sie möchten ein Dashboard, ein internes Tool oder einen Mediaserver auf Ihrer Synology aus dem Internet erreichbar machen, ohne im Router Ports zu öffnen und ohne Ihre öffentliche IP preiszugeben? Genau dafür gibt es den Cloudflare Tunnel. Ein kleiner Connector-Container (cloudflared) baut eine ausgehende Verbindung zu Cloudflare auf. Cloudflare nimmt die Anfragen für Ihre Domain entgegen und leitet sie durch diesen Tunnel an den internen Dienst. Diese Anleitung zeigt, wie Sie den Tunnel als Projekt im Container Manager unter DSM 7.2 einrichten, einen öffentlichen Hostnamen auf einen internen Dienst leiten und ihn optional mit Cloudflare Access (Zero Trust) absichern.

Version 2026.10.0 normalisiert Anfragepfade bei Access-Regeln, wiederholt fehlgeschlagene DNS-Auflösungen und korrigiert das Beenden von QUIC-Lesevorgängen. Prüfen Sie nach dem Update insbesondere Ihre Access-Regeln und den Zugriff auf geschützte Pfade. Der vorhandene Tunnel-Token und der Startbefehl bleiben unverändert; erstellen Sie den Container nach Änderung des Image-Tags neu.

Was ist ein Cloudflare Tunnel - und warum ohne Portfreigabe?

Ein Cloudflare Tunnel ist eine dauerhafte, ausgehende Verbindung zwischen Ihrem Netzwerk und Cloudflare. Der Connector cloudflared läuft als Container auf der Synology und meldet sich aktiv bei Cloudflare an. Es ist kein eingehender Port nötig: Der Router leitet nichts weiter, die WAN-IP bleibt verborgen. Anfragen an https://dienst.ihre-domain.de landen bei Cloudflare, gehen durch den Tunnel zur NAS und von dort an den internen Dienst (z. B. http://192.168.1.10:8096).

Gegenüber Portfreigabe plus DynDNS ist die NAS nicht direkt aus dem Internet scanbar, Cloudflare übernimmt TLS, und per Cloudflare Access setzen Sie eine Anmeldung (E-Mail-Code, Google- oder GitHub-Login) vor den Dienst. Das passt für interne Dashboards, Admin-Tools, Statusseiten und kleine Web-Oberflächen.

Eine Einschränkung vorweg: Der Tunnel läuft über das Cloudflare-CDN. Dauerhaftes Video-Streaming großer Datenmengen widerspricht den Service-Specific Terms für das CDN. Für Jellyfin mit 4K-Streaming ist ein VPN wie WireGuard oder Tailscale die saubere Alternative.

Voraussetzungen

  1. Synology-NAS mit DSM 7.2 oder neuer und installiertem Container Manager. Das Image cloudflare/cloudflared gibt es für x86-64 (amd64) und ARM64.
  2. Eine eigene Domain, die bei Cloudflare verwaltet wird (Nameserver zeigen auf Cloudflare, Zone aktiv).
  3. Ein kostenloses Cloudflare-Konto mit Zero Trust (Free-Plan reicht).
  4. Ein interner Dienst mit Web-Oberfläche auf einem bekannten Port.
  5. Ein DSM-Benutzer mit Administratorrechten und Zugriff auf die File Station.
  6. Ausgehende Verbindungen der NAS zu Cloudflare auf Port 7844 (UDP und TCP). Eingehend ist nichts freizugeben.

Schritt 1: Datenordner auf der Synology anlegen

Der Tunnel speichert auf der NAS keine Daten, der Ordner nimmt nur die Compose-Datei auf.

  1. Öffnen Sie die File Station.
  2. Legen Sie, falls noch nicht vorhanden, den freigegebenen Ordner docker an.
  3. Erstellen Sie darin den Ordner cloudflared, sodass der Pfad /volume1/docker/cloudflared existiert.

Verifizieren: Die File Station zeigt unter docker den Ordner cloudflared.

Schritt 2: Tunnel im Cloudflare Zero Trust Dashboard erstellen

Den Tunnel legen Sie im Cloudflare-Dashboard an. Dort erhalten Sie den Token, den der Container braucht.

  1. Melden Sie sich unter dash.cloudflare.com an und öffnen Sie Networking → Tunnels. In älteren Oberflächen heißt der Weg Zero Trust → Networks → Tunnels.
  2. Klicken Sie auf Create a tunnel, wählen Sie bei Nachfrage den Typ Cloudflared und vergeben Sie einen Namen, z. B. synology-nas.
  3. Cloudflare zeigt Installationsbefehle für verschiedene Systeme. Wählen Sie Docker. Kopieren Sie aus dem angezeigten Befehl nur die lange Zeichenkette nach --token.

Behandeln Sie den Token wie ein Passwort: Wer ihn besitzt, kann sich als Ihr Tunnel ausgeben.

Verifizieren: Der Tunnel erscheint unter Networking → Tunnels mit dem Status Inactive, bis der Container läuft.

Schritt 3: docker-compose.yml für den Container Manager erstellen

Im Container Manager heißt ein Compose-Stack Projekt. Sie fügen das YAML direkt im Assistenten ein oder legen es als docker-compose.yml in /volume1/docker/cloudflared ab. Ersetzen Sie IHR_TUNNEL_TOKEN durch den Token aus Schritt 2:

services:
  cloudflared:
    image: cloudflare/cloudflared:2026.10.0
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel --no-autoupdate run
    environment:
      - TUNNEL_TOKEN=IHR_TUNNEL_TOKEN

Die wichtigsten Punkte:

  1. cloudflare/cloudflared ist das offizielle Image. Der feste Tag (hier 2026.10.0, Stand September 2026) verhindert unkontrollierte Updates. Die aktuelle Version steht auf GitHub.
  2. tunnel --no-autoupdate run startet den Connector. --no-autoupdate verhindert, dass er sich selbst aktualisiert, Updates laufen über das Image.
  3. TUNNEL_TOKEN ist die einzige Pflichtvariable. Der Tunnel ist damit remote-managed: Welche Hostnamen auf welche Dienste zeigen, legen Sie im Cloudflare-Dashboard fest, nicht auf der NAS.
  4. Es gibt bewusst kein ports:-Mapping. Der Container baut nur ausgehende Verbindungen auf. Er läuft laut Image als unprivilegierter Benutzer (UID 65532).

Verifizieren: Liegt die Datei im Ordner, prüft sudo docker compose config -q per SSH im Ordner /volume1/docker/cloudflared die Syntax. Keine Ausgabe heißt: Datei ist gültig.

Schritt 4: Projekt im Container Manager starten

  1. Öffnen Sie den Container Manager und wechseln Sie links auf Projekt.
  2. Klicken Sie auf Erstellen.
  3. Vergeben Sie den Projektnamen cloudflared.
  4. Wählen Sie als Pfad /volume1/docker/cloudflared.
  5. Wählen Sie als Quelle Vorhandene docker-compose.yml verwenden oder docker-compose.yml erstellen und fügen Sie den Inhalt aus Schritt 3 ein.
  6. Bestätigen Sie die folgenden Dialoge mit Weiter und Fertig. Der Container Manager lädt das Image und startet den Container.

Verifizieren: Der Container cloudflared läuft im Container Manager dauerhaft. Das Protokoll zeigt Registered tunnel connection (in der Regel viermal), und unter Networking → Tunnels steht der Tunnel auf Healthy. Beendet sich der Container sofort mit Provided Tunnel token is not valid., ist der Token unvollständig kopiert. Meldet das Protokoll Register tunnel error from server side error="Failed to get tunnel", gehört der Token zu keinem bestehenden Tunnel.

Schritt 5: Public Hostname auf einen internen Dienst mappen

Jetzt verbinden Sie eine Subdomain mit einem internen Dienst. Beispiel: Jellyfin läuft als Container auf der NAS mit Port 8096 und soll unter jellyfin.ihre-domain.de erreichbar sein.

  1. Öffnen Sie unter Networking → Tunnels Ihren Tunnel und den Reiter Routes (in älteren Oberflächen Public Hostname).
  2. Wählen Sie Add route und dann Published application.
  3. Subdomain: jellyfin, Domain: ihre-domain.de aus der Liste. Den Pfad lassen Sie leer.
  4. Service URL: http://192.168.1.10:8096 (LAN-IP der NAS plus Port des Dienstes). Der Container erreicht den Dienst über die LAN-IP, weil Verbindungen aus dem Docker-Netz ins LAN erlaubt sind.
  5. Speichern Sie mit Add route.

Cloudflare legt den DNS-Eintrag (einen proxied CNAME auf den Tunnel) automatisch an. Für weitere Dienste wiederholen Sie den Schritt, etwa uptime.ihre-domain.de auf http://192.168.1.10:3001 für Uptime Kuma. Ein Tunnel bedient beliebig viele Hostnamen. Subdomains mit mehr als einer Ebene (z. B. a.b.ihre-domain.de) brauchen ein kostenpflichtiges Advanced Certificate.

Spricht der interne Dienst nur HTTP, wählen Sie http://. Spricht er HTTPS mit selbstsigniertem Zertifikat, wählen Sie https:// und aktivieren unter Additional application settings → TLS die Option No TLS Verify.

Verifizieren: In der DNS-Übersicht der Domain steht ein CNAME jellyfin mit Ziel …cfargotunnel.com und orangem Proxy-Symbol.

Schritt 6: Verifikation - erster Aufruf im Browser

Verifizieren: Öffnen Sie https://jellyfin.ihre-domain.de in einem Browser, am besten von einem Gerät außerhalb des Heimnetzes (z. B. über Mobilfunk), damit der Weg über Cloudflare wirklich geprüft wird.

  1. Die Web-Oberfläche des internen Dienstes lädt, das Zertifikat ist gültig.
  2. Der Tunnel steht weiterhin auf Healthy.
  3. Das Container-Protokoll zeigt keine neuen Fehler.

Lädt die Seite nicht, prüfen Sie zuerst, ob der Dienst im LAN unter der angegebenen IP und dem Port erreichbar ist.

Schritt 7 (optional): Cloudflare Access mit 2FA davorschalten

Ein öffentlicher Hostname ohne Anmeldung ist für jeden erreichbar. Mit Cloudflare Access setzen Sie eine Authentifizierung davor: Der Dienst sieht den Besucher erst nach erfolgreicher Anmeldung.

  1. Öffnen Sie Zero Trust → Access controls → Applications und wählen Sie Create new application (ältere Oberfläche: Access → Applications → Add an application).
  2. Wählen Sie Self-hosted and private und dann Add public hostname.
  3. Tragen Sie genau Ihren öffentlichen Hostnamen ein, z. B. jellyfin.ihre-domain.de.
  4. Legen Sie unter Access policies eine Allow-Policy an, etwa mit der Regel Emails und Ihrer eigenen Adresse. Alles andere ist standardmäßig gesperrt.
  5. Als Anmeldemethode reicht im Free-Plan One-time PIN (Code per E-Mail). Optional binden Sie Google oder GitHub samt deren Zwei-Faktor-Anmeldung ein.
  6. Speichern Sie die Anwendung.

Verifizieren: Ein Aufruf in einem privaten Browserfenster zeigt zuerst die Cloudflare-Access-Anmeldeseite. Erst nach Eingabe des Codes erscheint der Dienst, eine nicht freigegebene E-Mail-Adresse erhält keinen Zugang.

Updates und Wartung

Den Connector aktualisieren Sie über das Image:

  1. Tragen Sie im Projekt cloudflared den neuen Versions-Tag in die docker-compose.yml ein.
  2. Stoppen Sie das Projekt und erstellen Sie es über Aktion → Erstellen neu, damit der Container Manager das neue Image lädt.

Cloudflare unterstützt eine Connector-Version etwa ein Jahr ab Veröffentlichung und markiert veraltete Connectoren im Dashboard. Prüfen Sie die Version daher mindestens vierteljährlich. Mit :latest und automatischen Update-Werkzeugen kommen Änderungen ungeprüft auf die NAS, ein fester Tag mit manuellem Update ist die sicherere Wahl.

Verifizieren: Das Container-Protokoll zeigt nach dem Neustart die neue Versionsnummer in der Zeile Version …, der Tunnel steht wieder auf Healthy.

Backup

Beim remote-managed Tunnel liegt die Konfiguration bei Cloudflare, lokal ist wenig zu sichern:

  1. Nehmen Sie /volume1/docker/cloudflared/docker-compose.yml in Ihre Hyper-Backup-Aufgabe auf.
  2. Hinterlegen Sie den Tunnel-Token in Ihrem Passwortmanager. Solange Sie Zugriff auf das Cloudflare-Konto haben, zeigt das Dashboard den Installationsbefehl mit Token erneut an.

DNS-Einträge und Access-Policies liegen in Ihrem Cloudflare-Konto.

Troubleshooting

  1. Container beendet sich mit „Provided Tunnel token is not valid.“: Token unvollständig oder mit Leerzeichen kopiert. Erneut aus dem Dashboard kopieren.
  2. Tunnel bleibt auf Down/Degraded, Protokoll zeigt Zeitüberschreitungen: Die Firewall blockiert ausgehend Port 7844. Freigeben oder in der Compose-Datei command: tunnel --no-autoupdate --protocol http2 run setzen (TCP statt QUIC).
  3. „Failed to get tunnel“ im Protokoll: Der Tunnel zum Token existiert nicht mehr. Neuen Tunnel anlegen und Token tauschen.
  4. 502/Bad Gateway im Browser: Der Dienst ist unter der Service-URL nicht erreichbar. Im LAN testen und http:// bzw. https:// prüfen.
  5. Zertifikatsfehler beim internen HTTPS-Dienst: Unter Additional application settings → TLS No TLS Verify aktivieren.
  6. Streaming bricht ab oder ist langsam: Für große Mediatheken WireGuard oder Tailscale statt Tunnel nutzen.
  7. Access-Anmeldung erscheint nicht: Der Hostname der Access-Anwendung muss exakt dem öffentlichen Hostnamen entsprechen.

Fazit

Mit dem cloudflared-Connector im Container Manager veröffentlichen Sie Synology-Dienste, ohne einen Port im Router zu öffnen. Die WAN-IP bleibt verborgen, TLS kommt von Cloudflare, und Cloudflare Access setzt bei Bedarf eine Anmeldung mit zweitem Faktor davor. Für Dashboards, Admin-Tools und Statusseiten ist das eine schlanke Lösung. Für dauerhaftes Streaming großer Videodaten ist ein VPN die bessere Wahl.

Passende Anleitungen: Container Manager: Compose-Projekt anlegen und aktualisieren, Jellyfin auf der Synology mit Hardware-Transcoding, wg-easy: WireGuard-VPN mit Web-Oberfläche. Weitere Anleitungen in den Kategorien Synology / NAS und Docker.

Quellen: Cloudflare: Create a tunnel (dashboard), Cloudflare: Self-hosted public application, cloudflare/cloudflared auf Docker Hub, cloudflared auf GitHub