Linkuri semnate și mai multe CDN-uri
Actualizat la 18 oct. 2026Castreon poate da privitorilor linkuri de vizionare care expiră și poate livra același canal prin mai multe CDN-uri deodată: playerul trece singur pe alt CDN dacă unul cade. Tot de aici se golește cache-ul CDN-urilor — de mână, prin API sau automat.
Disponibil din Castreon 1.7.0, în ediția Enterprise. Setările sunt în Setări → CDN și linkuri semnate.
Profilele
Fiecare profil spune cine verifică linkul:
- Castreon (serverul) — privitorii vin direct la server, iar Castreon verifică semnătura. Adresa goală = domeniul public din Setări → Instanță.
- Bunny, Gcore, CDN77 — privitorii vin prin CDN, iar CDN-ul verifică semnătura, în formatul lui oficial. Completați adresa CDN-ului (doar domeniul), calea canalului (implicit
/live/{slug}/, CDN-ul trage din Castreon) și cheia de semnare dată de CDN. Lângă fiecare fel, panoul arată ce trebuie pornit la CDN.
Opțiuni pe profil: durata linkului (5 minute – 7 zile) și Leagă linkul de IP-ul privitorului (mai sigur, dar un telefon care trece de pe Wi-Fi pe date mobile pierde redarea până primește un link nou). Cheile nu se mai afișează după salvare; câmpul gol păstrează cheia de acum.
Testează cere playlistul unui canal pornit prin profil, o dată cu un link valid și o dată cu unul expirat: linkul valid trebuie să primească playlistul, cel expirat să fie refuzat. Dacă CDN-ul servește și linkul expirat, panoul vă spune că verificarea nu e pornită la CDN.
Cât e verificat: profilul Castreon e testat cap-coadă. Pentru Bunny, Gcore și CDN77, semnătura e identică cu cea a codului oficial al fiecărui furnizor (verificat în teste), dar n-a fost încercată pe un cont real — folosiți Testează înainte de producție. Panoul arată asta lângă fiecare profil.
Linkul pentru un privitor
- Pe pagina canalului, Link semnat: alegeți profilul (și, opțional, IP-ul privitorului) → Creează link.
- Din aplicațiile dumneavoastră:
POST /api/v1/channels/{id}/playback-url, câte un link pe privitor (cheie API cu zonaplayback:sign).
Cere link semnat pe /live oprește linkurile nesemnate către server. Cererile fără semnătură trec atunci doar de pe adresele din Acces la fluxuri — puneți acolo întâi CDN-urile și load-balancerele care trag de la server. HTTP-TS, LL-HLS și WebRTC nu au încă link semnat.
Ceasul serverului trebuie să fie corect (NTP): expirarea linkului se calculează după el.
Mai multe CDN-uri: Content Steering
Cu cel puțin două profile pornite, Link semnat are opțiunea Toate (Content Steering): un singur link pentru toate CDN-urile, după standardul HLS Content Steering. Castreon verifică fiecare CDN la 30 de secunde, pe un canal care rulează: răspunde, primește playlistul, nu rămâne în urmă cu segmentele. După 3 verificări nereușite, CDN-ul e trecut picat și pus la coada listei; după 3 reușite revine. Playerele care înțeleg Content Steering trec singure pe CDN-ul următor, fără să oprească redarea (încercat cu hls.js 1.6); celelalte playere folosesc primul CDN din listă.
- Ordinea profilelor (săgețile) e prioritatea. Linkul
cdn: "auto"din API alege primul CDN care merge. - Starea fiecărui CDN, cu procentul de reușite în 24 de ore, apare lângă profil. La Notificări, familia CDN-uri anunță un CDN picat.
/metricsarecastreon_cdn_upșicastreon_cdn_latency_seconds.
Verificarea se face de pe server, nu din rețelele privitorilor: un CDN care merge de la server poate avea totuși o problemă într-o anumită țară.
Golirea cache-ului
Pentru golire, profilul are nevoie de ID-ul zonei / resursei și de o cheie API a CDN-ului (opțional).
- Golește tot la profil — tot cache-ul zonei, cu confirmare.
- Golește cache-ul CDN pe pagina canalului (administratori) — doar directorul canalului.
- API:
POST /api/v1/cdn/purgecuchannel,paths(cel mult 10) sauall. Fiecare golire intră în Audit, fără chei. - Webhook propriu de golire — pentru orice alt CDN sau un script: Castreon trimite un
POSTJSON (event: "cdn.purge", căile, canalul, motivul) semnat cuX-Castreon-Signature: sha256=HMAC-SHA256(secret, corp).
Golire automată (pornită implicit): la fiecare pornire a unui canal și la ștergerea lui, Castreon golește directorul canalului pe fiecare CDN cu golire configurată și anunță webhook-ul. Motivul: la fiecare pornire, segmentele noi au aceleași nume ca cele de dinainte, iar un CDN care le mai ține ar da privitorilor bucăți vechi. Cel mult o golire pe canal la 30 de secunde; dacă CDN-ul cere o pauză (limita de cereri), Castreon așteaptă și reîncearcă. Ultima golire automată și rezultatul ei apar în setări.
Golirea folosește API-urile oficiale ale fiecărui CDN (după documentația lor); nu a fost încercată pe conturi reale.
Probleme frecvente
- Testul spune că CDN-ul servește linkul expirat: verificarea semnăturii nu e pornită la CDN (vezi textul de lângă felul profilului).
- Segmentele primesc 403, playlistul nu: la Gcore, pornirea de transmitere a parametrilor din playlist către segmente lipsește.
- CDN-ul e „picat” cu „playlist vechi”: CDN-ul ține playlistul în cache prea mult — playlisturile trebuie să urmeze antetul serverului (
no-cache). - Golirea spune că cheia API e greșită: cheia nu e bună sau nu are drept de golire. Zona / resursa nu există: ID-ul zonei / resursei e greșit.
- Limita de goliri a fost atinsă: CDN-ul primește doar câteva goliri pe minut — panoul spune peste câte secunde se poate încerca din nou.