Edge Shield für Jellyfin

Für Jellyfin: Cloudflare aus dem Dashboard einrichten: DNS und DDNS, SSL Full (strict), ein Let's-Encrypt-Zertifikat, Edge-Regeln und Blockieren fehlgeschlagener Anmeldungen.

Connect once with a Cloudflare API token limited to your zone: it is kept encrypted on the server and never shown again1 von 8

Einen Jellyfin-Server hinter Cloudflare zu legen, bedeutet normalerweise ein Dutzend manueller Schritte an zwei Stellen und einen leichten Fehler: Video durch die Cloudflare-CDN zu schicken, was die Cloudflare-Bedingungen für die Tarife Free, Pro und Business nicht erlauben. Edge Shield für Cloudflare® erledigt die gesamte Einrichtung aus dem Jellyfin-Dashboard, mit deinem eigenen Cloudflare-API-Token, und hält die Videostreams direkt auf deinem Server.

Was es macht

  • Verbindung: ein auf deine Zone beschränkter API-Token, verschlüsselt (AES-256-GCM) auf dem Server gespeichert und im Browser nie wieder angezeigt; Auswahl der Zone und Prüfung jeder Berechtigung, die der Token braucht.
  • „Stream Offload“ (empfohlener Modus): Der App-Host (zum Beispiel media.example.com) geht für die Weboberfläche, die API und die Anmeldung über den Cloudflare-Proxy, während Video-, Audio- und Download-Anfragen (307) zu einem Streaming-Host (zum Beispiel direct.example.com) umgeleitet werden, der „DNS only“ ist und direkt zu deinem Server geht. Ein Modus „DNS only“ ist für alle da, die den Proxy nicht wollen.
  • DNS: die A-/AAAA-Einträge beider Namen, mit der öffentlichen IP, die erkannt und automatisch aktuell gehalten wird (DDNS).
  • TLS in Cloudflare: SSL Full (strict), Always Use HTTPS, minimale TLS-Version, TLS 1.3, optional HSTS.
  • Let's-Encrypt-Zertifikat für beide Namen über ACME DNS-01 (mit demselben Token, ohne Port 80), automatisch 30 Tage vor Ablauf erneuert und in Jellyfin als .pfx-Datei gesetzt.
  • Cloudflare-Regeln, die zum Free-Tarif passen: die Stream-Umleitung, kein Caching von Media-Pfaden, die Blockliste, das Blockieren clientseitig gesendeter IP-Header, erlaubte Länder, ein Login-Rate-Limit und der Origin-Port (zum Beispiel, wenn dein Router außen 2096 nutzt). Deine eigenen Regeln bleiben unberührt; Remove the Edge Shield rules löscht nur, was das Plugin erstellt hat.
  • Echte Client-IP: Die Cloudflare-IP-Bereiche werden in Jellyfins Known Proxies geschrieben und täglich aktualisiert, sodass Jellyfin die Adresse des Besuchers sieht und ihm keine gefälschte vorgesetzt werden kann.
  • The streaming host accepts media paths only: Jede andere Anfrage auf diesem Namen bekommt 403, und blockierte IPs werden auch von Jellyfin selbst abgelehnt, auch auf dem direkten Host.
  • Dynamischer Schutz: Eine IP mit zu vielen fehlgeschlagenen Anmeldungen (standardmäßig 5 in 10 Minuten) landet in der Cloudflare-Liste medialab_blocked und wird für 24 Stunden am Edge blockiert, ×4 bei jeder Wiederholung (höchstens 30 Tage); Einträge laufen von selbst ab. Allowlist, manuelles Blockieren und Entsperren und ein zeitgesteuerter Under-Attack-Schalter, der sich selbst ausschaltet.
  • Status and fixes: Jeder Punkt geprüft, mit einem Button Fix pro Zeile und Fix everything; die Firewall-Befehle, um den Port einzuschränken, werden fertig zum Kopieren angezeigt.
  • Auf Englisch und Rumänisch.

Was es wohin sendet

  • An Cloudflare, über seine API und mit deinem eigenen Token: die Zone-Einstellungen, die DNS-Einträge (mit der öffentlichen IP deines Servers), die Regeln und die zu blockierenden IP-Adressen. Der Kommentar eines Blocklist-Eintrags enthält die Ablaufzeit und den Grund (die Anzahl fehlgeschlagener Anmeldungen oder „manual“ mit der Notiz, die du für einen manuellen Block geschrieben hast). Seit 0.1.1 wird der versuchte Benutzername nicht mehr an Cloudflare gesendet: Er bleibt nur auf deinem Server, in der Blockliste und im Log der Plugin-Seite.
  • Zur Ermittlung deiner öffentlichen IP (DDNS) liest der Server https://www.cloudflare.com/cdn-cgi/trace; die Liste der Cloudflare-IP-Bereiche wird täglich aus der öffentlichen Cloudflare-API gelesen.
  • An Let's Encrypt: die Zertifikatsanfrage für deine beiden Hostnamen (und die E-Mail-Adresse, falls du eine angibst). Der private Schlüssel wird auf deinem Server erstellt und verlässt ihn nie.
  • Der Token wird nur verschlüsselt auf deinem Server gespeichert und nie an den Browser gesendet.
  • An medialab.works geht nichts außer der Lizenzprüfung.

Alle Details für jedes Produkt, inklusive dessen, was auf deinem Server bleibt: Lizenzierung, Datenschutz und Kompatibilität.

Kompatibilität mit Clients

Edge Shield wirkt auf Server- und Netzwerkebene und gilt daher für jede App. Was bisher verifiziert wurde:

  • Jellyfin Web und medialab Server: echte Wiedergabe über „Stream Offload“, ohne Videobytes durch Cloudflare.
  • Jellyfin-Apps (Android, Android TV, Swiftfin, Findroid, Kodi/JellyCon, Infuse, Streamyfin) und TV-Browser: noch nicht getestet. Im Modus „Stream Offload“ muss eine App dem 307-Redirect für Medien folgen; falls eine das nicht tut, nutze den Modus „DNS only“.
  • Edge Shield wurde gegen einen Simulator der Cloudflare-API geprüft; die Prüfung gegen die echte Cloudflare-API läuft noch.

Voraussetzungen

  • Jellyfin Server 12.2 oder neuer.
  • Ein Cloudflare-Konto mit der Zone deiner Domain; der Free-Tarif reicht.
  • Ein Cloudflare-API-Token („Custom token“, auf deine Zone beschränkt) mit: Zone · Zone · Read, Zone · DNS · Edit, Zone · Zone Settings · Edit, Zone · SSL and Certificates · Edit, Zone · Zone WAF · Edit, Zone · Single Redirect · Edit, Zone · Cache Rules · Edit, Zone · Origin Rules · Edit, Account · Account Filter Lists · Edit. Die Plugin-Seite listet sie auf und prüft sie.
  • Für „Stream Offload“: HTTPS-Ports, die dein Router für den App-Host und den Streaming-Host an Jellyfin weiterleitet.

Grenzen

  • Der Streaming-Host ist „DNS only“, also ist die öffentliche IP deines Servers für jeden sichtbar, der sie nachschlägt. Jellyfin beantwortet darauf nur Medienanfragen, die nach wie vor ein gültiges Jellyfin-Token brauchen.
  • Under Attack verlangt von jedem Besucher eine JavaScript-Prüfung: Native Apps (Android TV, Roku, iOS, Kodi …) können sie nicht bestehen und verbinden sich nicht, solange es an ist. Nutze es nur während eines Angriffs und nur kurz.
  • In dieser Version kein Cloudflare-Tunnel und kein Origin-CA-Zertifikat: Beides würde Video durch Cloudflare schicken oder ein Zertifikat brauchen, dem Browser auf dem direkten Host nicht vertrauen.
  • Jellyfin liest seine Netzwerkeinstellungen beim Start: Das Zertifikat, HTTPS und die Cloudflare-Bereiche in den Known Proxies greifen, nachdem du Jellyfin neu gestartet hast.

Lizenzierung

Das Plugin ist Open Source (GPL-3.0). Die installationsfertigen Builds sind öffentlich, genau wie der Quellcode. Was du kaufst, ist das Abonnement: die Lizenz zur Nutzung des Plugins auf einem Jellyfin-Server, die Updates, die dein Tarif umfasst, und Support: jedes Update, solange das Abonnement aktiv ist, über dein privates Plugin-Repository, und Hilfe, wenn etwas nicht funktioniert. Das Plugin prüft den Abonnementschlüssel einmal am Tag; ohne gültiges Abonnement stoppt es, bis du verlängerst (es wird nichts gelöscht). Monatlich, jährlich oder als Lifetime-Lizenz (die Lifetime-Lizenz umfasst ein Jahr Updates), oder im Jellyfin-Paket enthalten. 30 Tage kostenlos testen.

Quellcode. Für jede Version ist der vollständige zugehörige Quellcode öffentlich, neben dem Build, im Changelog, und auch in deinem Konto (Konto → Lizenzen, Quellcode); jedes Archiv enthält den vollständigen Text der GPL-3.0 (LICENSE). Wenn du den Quellcode einer Version brauchst, die du nicht mehr herunterladen kannst, frag uns, und wir schicken ihn dir. Siehe Abschnitt 10 der EULA.

Unser eigener Code, von MediaLab Works von Grund auf neu geschrieben; er enthält keinen Fremdcode. Cloudflare ist eine eingetragene Marke der Cloudflare, Inc.; Edge Shield steht in keiner Verbindung zu Cloudflare und wird von Cloudflare nicht unterstützt.

Funktioniert am besten mit medialab Server

Dieses Plugin funktioniert mit dem offiziellen Jellyfin 12.2 oder neuer. Auf medialab Server, unserem auf Jellyfin basierenden Server mit denselben Daten, Bibliotheken, Nutzern und Apps, funktioniert es besser:

  • Verified – medialab. Der Server prüft die Signatur unserer Plugins und zeigt dir, dass die Dateien genau die sind, die wir veröffentlicht haben. Ein nach der Veröffentlichung verändertes Plugin wird markiert.
  • In die Oberfläche integriert. Plugins können Schaltflächen und Links zum Menü deiner Nutzer hinzufügen (zum Beispiel „TV“, „Share“), ohne manuelle Web-Konfiguration.
  • Standardmäßig Vorrang. medialab-Plugins stehen dort an erster Stelle, wo es darauf ankommt: Live-TV-Tuner, Programmführer-Quellen und Untertitelanbieter. Die Reihenfolge bestimmst weiterhin du: Du kannst sie jederzeit ändern.
  • Der Katalog von medialab.works ist enthalten, die Installation erfolgt ohne zusätzliche Bestätigungen.
  • Updates über die Weboberfläche, ohne Terminal (mit Self-Update by MediaLab): prüfen, aktualisieren und zurücksetzen über das Dashboard; startet eine neue Version nicht, kehrt der Server von selbst zur vorherigen zurück, deine Daten bleiben unversehrt.
  • Dasselbe Jellyfin, immer aktuell. medialab Server folgt jede Woche den stabilen Versionen von Jellyfin 12.x; eine neue Version wird erst veröffentlicht, wenn sie alle Tests bestanden hat, einschließlich der Tests unserer Plugins.

Die Jellyfin-Apps (Android, iOS, TV, Web) verbinden sich genauso wie mit dem offiziellen Jellyfin.

Zur Installation startest du das Container-Image (Anleitung) oder, unter Debian 12, die apt-Pakete, die jellyfin-server und jellyfin-web ersetzen und deine Daten an Ort und Stelle lassen (Anleitung).

medialab Server ist freie Software (GPL-2.0) auf Basis von Jellyfin. Der Quellcode ist öffentlich: medialab-server und medialab-server-web.

Voraussetzungen

  • Jellyfin Server 12.2 oder neuer (Linux, Windows oder Docker)
  • Ein Cloudflare-Konto mit der Zone deiner Domain (der Free-Tarif reicht)
  • Ein auf die Zone beschränktes Cloudflare-API-Token mit den auf der Plugin-Seite aufgeführten Berechtigungen
  • Für den Stream-Offload: HTTPS-Ports zum Server weitergeleitet, für den App-Host und den Streaming-Host
  • Open Source (GPL-3.0): Der Quellcode jeder Version liegt in deinem Konto

Neueste Version

0.1.5
veröffentlicht am 20.10.2026
Alle Änderungen ansehen →