Edge Shield pentru Jellyfin

Pentru Jellyfin: configurezi Cloudflare din tablou: DNS, DDNS, SSL Full (strict), certificat Let's Encrypt, reguli și blocarea login-urilor eșuate.

Te conectezi o dată cu un token API Cloudflare limitat la zona ta: e păstrat criptat pe server și nu mai e afișat niciodată1 din 8

Un server Jellyfin pus în spatele Cloudflare înseamnă de obicei o duzină de pași manuali în două locuri și o greșeală ușor de făcut: video trimis prin CDN-ul Cloudflare, ceea ce termenii Cloudflare pentru planurile Free, Pro și Business nu permit. Edge Shield pentru Cloudflare® face toată configurarea din tabloul de bord Jellyfin, cu propriul tău token API Cloudflare, și lasă fluxurile video să meargă direct la serverul tău.

Ce face

  • Conectare: un token API restrâns la zona ta, păstrat criptat (AES-256-GCM) pe server și niciodată afișat din nou în browser; alegerea zonei și verificarea fiecărei permisiuni de care are nevoie tokenul.
  • „Stream offload” (modul recomandat): gazda aplicației (de exemplu media.example.com) trece prin proxy-ul Cloudflare pentru interfața web, API și conectare, iar cererile de video, audio și descărcare sunt redirecționate (307) spre o gazdă de streaming (de exemplu direct.example.com) „DNS only”, care merge direct la serverul tău. Există și un mod „Doar DNS” pentru cine nu vrea proxy.
  • DNS: înregistrările A / AAAA ale celor două nume, cu IP-ul public detectat și actualizat automat (DDNS).
  • TLS în Cloudflare: SSL Full (strict), Always Use HTTPS, versiunea TLS minimă, TLS 1.3, HSTS opțional.
  • Certificat Let's Encrypt pentru ambele nume prin ACME DNS-01 (cu același token, fără portul 80), reînnoit automat cu 30 de zile înainte de expirare și pus în Jellyfin ca fișier .pfx.
  • Reguli Cloudflare potrivite pentru planul Free: redirecționarea fluxurilor, fără cache pe căile media, lista de blocare, blocarea antetelor IP trimise de client, țările permise, limită la login și portul de origine (de exemplu când routerul folosește în exterior 2096). Regulile tale rămân neatinse; Scoate regulile Edge Shield șterge doar ce a creat plugin-ul.
  • IP-ul real al clienților: intervalele IP Cloudflare sunt scrise în proxy-urile cunoscute ale Jellyfin și reîmprospătate zilnic, așa că Jellyfin vede adresa vizitatorului și nu poate primi una falsă.
  • Gazda de streaming acceptă doar căile media: orice altă cerere pe acel nume primește 403, iar IP-urile blocate sunt refuzate și de Jellyfin însuși, inclusiv pe gazda directă.
  • Protecție dinamică: un IP cu prea multe conectări eșuate (implicit 5 în 10 minute) intră în lista Cloudflare medialab_blocked și e blocat la margine 24 de ore, ×4 la fiecare recidivă (cel mult 30 de zile); intrările expiră singure. Listă de excepții, blocare și deblocare manuală și comutator Under Attack temporizat, care se oprește singur.
  • Stare și remediere: fiecare punct verificat, cu buton Remediază pe fiecare rând și Remediază tot; comenzile de firewall pentru restricționarea portului sunt afișate, gata de copiat.
  • În română și engleză.

Ce trimite și unde

  • La Cloudflare, prin API-ul lui și cu tokenul tău: setările zonei, înregistrările DNS (cu IP-ul public al serverului), regulile și adresele IP de blocat. Comentariul unei intrări din lista de blocare conține momentul expirării și motivul (numărul de conectări eșuate sau „manual” cu nota scrisă de tine la o blocare manuală). Din 0.1.1 numele de utilizator încercat nu mai ajunge la Cloudflare: rămâne doar pe serverul tău, în lista de blocări și în jurnalul din pagina plugin-ului.
  • Pentru IP-ul public (DDNS), serverul citește https://www.cloudflare.com/cdn-cgi/trace; lista intervalelor IP Cloudflare se citește zilnic din API-ul public Cloudflare.
  • La Let's Encrypt: cererea de certificat pentru cele două nume de gazdă (și adresa de e-mail, dacă o scrii). Cheia privată se creează pe serverul tău și nu pleacă de acolo.
  • Tokenul e păstrat doar criptat pe server și nu se trimite niciodată în browser.
  • La medialab.works nu ajunge nimic în afară de verificarea licenței.

Detaliile complete pentru fiecare produs, inclusiv ce rămâne pe serverul tău: Licențe, confidențialitate și compatibilitate.

Compatibilitate cu clienții

Edge Shield lucrează la nivelul serverului și al rețelei, deci se aplică tuturor aplicațiilor. Ce s-a verificat până acum:

  • Jellyfin Web și medialab Server: redare reală prin „stream offload”, fără niciun octet video prin Cloudflare.
  • Aplicațiile Jellyfin (Android, Android TV, Swiftfin, Findroid, Kodi/JellyCon, Infuse, Streamyfin) și browserele TV: netestate încă. În modul „stream offload” o aplicație trebuie să urmeze redirecționarea 307 pentru media; dacă una nu o urmează, folosește modul „DNS only”.
  • Edge Shield a fost verificat pe un simulator al API-ului Cloudflare; verificarea pe API-ul real Cloudflare este încă în curs.

Cerințe

  • Jellyfin Server 12.2 sau mai nou.
  • Un cont Cloudflare cu zona domeniului tău; planul Free este suficient.
  • Un token API Cloudflare („Custom token”, restrâns la zona ta) cu: 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. Pagina plugin-ului le arată și le verifică.
  • Pentru „stream offload”: porturi HTTPS redirecționate din router spre Jellyfin pentru gazda aplicației și pentru gazda de streaming.

Limite

  • Gazda de streaming e „DNS only”, deci IP-ul public al serverului e vizibil pentru oricine îl caută. Pe ea Jellyfin răspunde doar la cererile media, care cer în continuare un token Jellyfin valid.
  • Under Attack cere fiecărui vizitator o verificare JavaScript: aplicațiile native (Android TV, Roku, iOS, Kodi…) nu trec de ea și nu se conectează cât timp e activ. Folosește-l doar în timpul unui atac, pentru scurt timp.
  • Fără Cloudflare Tunnel și fără certificat Origin CA în această versiune: ambele ar trece video prin Cloudflare sau ar cere un certificat în care browserele nu au încredere pe gazda directă.
  • Jellyfin își citește setările de rețea la pornire: certificatul, HTTPS și intervalele Cloudflare din proxy-urile cunoscute intră în vigoare după repornirea Jellyfin.

Licență

Plugin-ul este cu sursă deschisă (GPL-3.0). Versiunile gata de instalat sunt publice, ca și codul sursă. Ce cumperi este abonamentul: licența de folosire a plugin-ului pe un server Jellyfin, actualizările incluse în planul tău și suportul: toate actualizările cât timp abonamentul e activ, prin depozitul tău privat de plugin-uri, și ajutor când ceva nu merge. Plugin-ul verifică cheia o dată pe zi; fără un abonament valabil se oprește până la reînnoire (nu se șterge nimic). Lunar, anual sau lifetime (lifetime include un an de actualizări), sau inclus în Pachetul Jellyfin. 30 de zile de probă gratuită.

Codul sursă. Pentru fiecare versiune, sursa completă corespunzătoare este publică, lângă versiunea gata de instalat, în istoricul versiunilor, și se găsește și în cont (Cont → Licențe, Cod sursă); fiecare arhivă conține textul complet al GPL-3.0 (LICENSE). Dacă ai nevoie de sursa unei versiuni pe care nu o mai poți descărca, ne scrii și ți-o trimitem. Vezi secțiunea 10 din EULA.

Cod propriu, scris de la zero de MediaLab Works; nu conține cod de la terți. Cloudflare este o marcă înregistrată a Cloudflare, Inc.; Edge Shield nu este afiliat cu Cloudflare și nu este aprobat de Cloudflare.

Merge cel mai bine cu medialab Server

Plugin-ul funcționează pe Jellyfin oficial 12.2 sau mai nou. Pe medialab Server — serverul nostru bazat pe Jellyfin, cu aceleași date, biblioteci, utilizatori și aplicații — merge mai bine:

  • Verificat – medialab. Serverul verifică semnătura plugin-urilor noastre și îți arată că fișierele sunt exact cele publicate de noi. Un plugin modificat după publicare este semnalat.
  • Integrare în interfață. Plugin-urile își pot adăuga butoane și linkuri în meniul utilizatorilor (de exemplu „TV”, „Partajează”), fără pași manuali în configurația web.
  • Prioritate implicită. Plugin-urile medialab vin primele unde contează: tunerele Live TV, sursele de ghid și furnizorii de subtitrări. Ordinea rămâne a ta: o poți schimba oricând.
  • Catalogul medialab.works inclus, cu instalare fără confirmări suplimentare.
  • Actualizări din interfață, fără terminal (cu Self-Update by MediaLab): verifici, actualizezi și revii la versiunea anterioară din panoul de administrare; dacă o versiune nouă nu pornește, serverul revine singur, cu datele intacte.
  • Același Jellyfin, la zi. medialab Server urmează săptămânal versiunile stabile Jellyfin 12.x; o versiune nouă se publică doar după ce trece toate testele, inclusiv cele ale plugin-urilor noastre.

Aplicațiile Jellyfin (Android, iOS, TV, web) se conectează la fel ca la Jellyfin oficial.

Îl instalezi din imaginea de container (ghid) sau, pe Debian 12, din pachetele apt, care înlocuiesc jellyfin-server și jellyfin-web și păstrează datele pe loc (ghid).

medialab Server este software liber (GPL-2.0), bazat pe Jellyfin. Codul sursă este public: medialab-server și medialab-server-web.

Cerințe

  • Jellyfin Server 12.2 sau mai nou (Linux, Windows sau Docker)
  • Un cont Cloudflare cu zona domeniului tău (planul Free e suficient)
  • Un token API Cloudflare restrâns la zonă, cu permisiunile din pagina plugin-ului
  • Pentru stream offload: porturi HTTPS redirecționate spre server pentru gazda aplicației și gazda de streaming
  • Sursă deschisă (GPL-3.0): sursa fiecărei versiuni e în contul tău

Ultima versiune

0.1.5
publicată pe 20 oct. 2026
Vezi toate modificările →