Edge Shield Jellyfin — ghid
Instalare
Ai nevoie de Jellyfin Server 12.2 sau mai nou și de un cont MediaLab Works cu o licență care acoperă plugin-ul (abonament activ, licență lifetime în perioada de actualizări, Pachetul Jellyfin sau proba gratuită de 30 de zile).
Din depozitul tău de plugin-uri (recomandat). Jellyfin instalează și actualizează apoi singur plugin-ul.
- În contul MediaLab Works deschide Licențe → Depozitul de plugin-uri Jellyfin și apasă Creează adresa. Copiaz-o: e privată (conține un token), deci nu o da mai departe; o poți regenera sau revoca oricând.
- În Jellyfin deschide Tablou de bord → Plugin-uri → „Repositories”, apasă +, dă-i un nume (de exemplu MediaLab Works), lipește adresa și salvează.
- În Tablou de bord → Plugin-uri → Catalog găsește Edge Shield by MediaLab, apasă Instalează, apoi repornește Jellyfin.
Depozitul arată doar plugin-urile acoperite de licențele tale și doar versiunile permise. Linkurile de descărcare sunt semnate și expiră după câteva ore, așa că Jellyfin citește mereu o listă proaspătă.
Din catalogul public. https://medialab.works/jellyfin/manifest.json arată toate plugin-urile MediaLab Works lansate, cu versiunile lor publice; medialab Server îl adaugă singur. Îl poți adăuga la fel ca să instalezi un plugin înainte să ai o cheie: plugin-ul îți cere apoi licența sau pornește perioada de probă din pagina lui Licență. Cu o licență lifetime a cărei perioadă de actualizări s-a încheiat, folosește depozitul tău privat, care oferă doar versiunile permise de licență.
Manual, dintr-o arhivă zip.
- În Cont → Licențe descarcă
jf-edgeshield_x.y.z.zip(SHA-256 al fișierului apare lângă buton). - Dezarhivează-l într-un dosar nou
Edge Shield by MediaLab_x.y.z.0din dosarul de plugin-uri Jellyfin:- Linux (pachet):
/var/lib/jellyfin/plugins/ - Docker (imaginea oficială):
/config/plugins/din volumul de configurare - Windows:
%ProgramData%\Jellyfin\Server\plugins\
- Linux (pachet):
- Repornește Jellyfin.
Activarea licenței
- Deschide pagina plugin-ului din Tablou de bord → Plugin-uri → Edge Shield by MediaLab și apasă Licență.
- Lipește cheia de licență și apasă Activează cu cheia. Plugin-ul contactează serverul de licențe, leagă cheia de acest server Jellyfin și arată licența Activă.
- Nu ai încă o cheie? Pe aceeași pagină scrii adresa de e-mail și pornești proba gratuită de 30 de zile (card necesar, nimic de plată azi) sau cumperi o licență; plugin-ul se activează singur după plată.
Licența se verifică o dată pe zi și la fiecare pornire a Jellyfin. Fără internet plugin-ul merge încă 7 zile de la ultima verificare reușită. Fără o licență valabilă plugin-ul își oprește activitatea și rămâne funcțională doar pagina Licență (probă, cheie, reînnoire); nu se șterge nimic și totul revine imediat ce licența e din nou valabilă. Mută licența (eliberează serverul) de pe aceeași pagină eliberează cheia pentru alt server.
Actualizare și revenire
- Din depozit: Jellyfin arată versiunile noi în Tablou de bord → Plugin-uri și poate actualiza plugin-ul automat; repornește Jellyfin ca să încarce versiunea nouă.
- Din pagina Licență a plugin-ului: cu o licență valabilă, Instalează actualizarea aduce cea mai nouă versiune permisă de licență, iar Rollback la x.y.z întoarce versiunea anterioară (de exemplu dacă ceva nu mai merge după o actualizare). Repornește Jellyfin după oricare dintre ele. Ambele pachete se verifică după suma de control publicată de serverul de licențe.
- O licență lifetime primește versiunile apărute în perioada ei de actualizări; după aceea plugin-ul merge mai departe pe ultima versiune permisă.
- După o revenire, dacă depozitul de plugin-uri e adăugat în Jellyfin, sarcina programată Update Plugins (la pornire și zilnic) instalează din nou cea mai nouă versiune. Ca să rămâi o vreme pe versiunea anterioară, scoate declanșatoarele acestei sarcini din Tablou de bord → Sarcini programate și pune-le la loc mai târziu.
Codul sursă
Sursa GPL-3.0 a fiecărei versiuni e în Cont → Licențe (Cod sursă), lângă descărcare, ca arhivă .tar.gz făcută din commit-ul exact al versiunii.
Configurare
- Conectare: în Cloudflare creezi un token API (Create Token → Custom token), restrâns la zona ta, cu permisiunile din pagină: 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 și Account · Account Filter Lists · Edit. Îl lipești, apoi alegi zona (domeniul). Tokenul e păstrat criptat pe server și nu mai e afișat niciodată; o permisiune lipsă apare cu numele ei în pagina de stare.
- Modul:
- Recomandat: interfața prin Cloudflare, video direct („stream offload”). Gazda aplicației trece prin proxy-ul Cloudflare; cererile de video, audio și descărcare sunt redirecționate (307) spre gazda de streaming, „DNS only”, care merge direct la serverul tău.
- Doar DNS (fără proxy): Cloudflare doar pentru DNS, DDNS și certificat. Regulile WAF și blocările la margine nu se aplică, fiindcă traficul nu trece prin Cloudflare.
- Nume și porturi: gazda aplicației (de exemplu
media.example.com) cu portul HTTPS folosit de clienți (443 sau unul dintre porturile trecute prin proxy de Cloudflare: 2053, 2083, 2087, 2096, 8443), portul extern pe care routerul îl trimite spre server (dacă diferă, Edge Shield adaugă o regulă de origine) și gazda de streaming (de exempludirect.example.com) cu portul ei HTTPS extern. IPv4-ul public se detectează când câmpul e gol; DDNS actualizează înregistrările când se schimbă. - Certificatul serverului: Let's Encrypt automat (DNS-01, cu tokenul) pentru ambele nume sau unul gestionat de tine. Full (strict) cere un certificat valid la server. Certificatul se reînnoiește cu 30 de zile înainte de expirare.
- TLS: versiunea TLS minimă și, opțional, HSTS pe gazda aplicației (pornește-l doar după ce HTTPS merge sigur; e greu de anulat).
- Protecție: blocarea automată a IP-urilor cu conectări eșuate (implicit 5 în 10 minute și 24 de ore, ×4 la fiecare recidivă), IP-urile sau intervalele CIDR care nu se blochează niciodată, limita la login (peste 10 cereri în 10 s de la un IP → blocare 10 s), blocarea antetelor IP trimise de client și țările permise (coduri ISO; gol înseamnă toate). Gazda de streaming acceptă doar căile media (pornit implicit): orice altă cerere pe ea primește 403.
- Salvezi, apoi deschizi Stare și remediere și apeși Remediază tot, ca setările și regulile să ajungă în Cloudflare și în Jellyfin. Repornește Jellyfin când pagina o cere (HTTPS, certificatul și intervalele Cloudflare din proxy-urile cunoscute ale Jellyfin intră în vigoare după repornire; intervalele se reîmprospătează zilnic, iar pagina cere repornirea când se schimbă).
Utilizare zilnică
- Pagina de stare verifică tokenul, înregistrările DNS, setările TLS, certificatul, regulile, IP-ul real al clienților și HTTPS-ul din Jellyfin; fiecare problemă are un buton Remediază.
- IP-uri blocate: lista arată adresa, motivul și expirarea; poți debloca un IP sau bloca unul manual, cu o notă și o durată. Rețeaua locală, intervalele Cloudflare și lista de excepții nu se blochează niciodată.
- Under Attack: îl pornești între 30 de minute și 12 ore în timpul unui atac; se oprește singur. Cât e activ, aplicațiile native (Android TV, Roku, iOS, Kodi…) nu se pot conecta.
- Restricționarea portului (firewall): pagina arată comenzi gata făcute ca doar Cloudflare să ajungă la portul gazdei aplicației; Edge Shield nu modifică singur firewall-ul.
- Scoate regulile Edge Shield șterge doar regulile create de plugin; DNS-ul și setările TLS rămân cum sunt.
Ce trimite și unde
- La Cloudflare, cu tokenul tău: setările zonei, înregistrările DNS cu IP-ul public, regulile și IP-urile de blocat. Comentariul unei intrări din lista de blocare conține doar expirarea și motivul (numărul de conectări eșuate sau „manual” cu nota ta). Din 0.1.1 numele de utilizator încercat nu se mai trimite la Cloudflare; rămâne în lista de blocări și în jurnalul de pe serverul tău.
https://www.cloudflare.com/cdn-cgi/tracepentru detectarea IP-ului public și API-ul public Cloudflare pentru intervalele lui IP (zilnic).- La Let's Encrypt: cererea de certificat pentru numele de gazdă; cheia privată rămâne pe serverul tău.
- La medialab.works nu ajunge nimic în afară de verificarea licenței.
Probleme frecvente
- „Tokenul nu are permisiunea …”: editezi tokenul în Cloudflare, adaugi permisiunea afișată și apeși din nou Remediază.
- „Fluxurile video ar trece prin CDN-ul Cloudflare”: gazda aplicației trece prin proxy, dar nu e setată o gazdă de streaming. Setează o gazdă de streaming („DNS only”) sau treci pe modul Doar DNS.
- „IP-ul public al serverului nu a putut fi detectat”: scrie IPv4-ul public în setări.
- Aplicațiile nu se pot conecta: verifică dacă Under Attack e oprit și dacă portul extern al gazdei de streaming e redirecționat spre portul HTTPS al Jellyfin.
- Schimbările nu apar în Jellyfin: pagina de stare arată Repornire necesară; repornește Jellyfin.