Link firmati e più CDN
Aggiornato il 18 ott 2026Castreon può dare agli spettatori link di visione che scadono e può distribuire lo stesso canale attraverso più CDN contemporaneamente: il player passa da solo a un altro CDN se uno cade. Da qui si svuota anche la cache dei CDN — a mano, tramite API o automaticamente.
Disponibile da Castreon 1.7.0, nell'edizione Enterprise. Le impostazioni sono in Impostazioni → CDN e link firmati.
I profili
Ogni profilo dice chi verifica il link:
- Castreon (il server) — gli spettatori arrivano direttamente al server e Castreon verifica la firma. Indirizzo vuoto = il dominio pubblico di Impostazioni → Istanza.
- Bunny, Gcore, CDN77 — gli spettatori passano dal CDN e il CDN verifica la firma, nel suo formato ufficiale. Compila l'indirizzo del CDN (solo il dominio), il Percorso del canale sul CDN (predefinito
/live/{slug}/, il CDN preleva da Castreon) e la Chiave di firma fornita dal CDN. Accanto a ogni tipo, il pannello mostra cosa va attivato sul CDN.
Opzioni per profilo: Durata del link (5 minuti – 7 giorni) e Lega il link all'IP dello spettatore (più sicuro, ma un telefono che passa dal Wi-Fi ai dati mobili perde la riproduzione finché non riceve un link nuovo). Le chiavi non vengono più mostrate dopo il salvataggio; il campo vuoto mantiene la chiave attuale.
Verifica chiede tramite il profilo la playlist di un canale avviato, una volta con un link valido e una volta con uno scaduto: il link valido deve ricevere la playlist, quello scaduto deve essere rifiutato. Se il CDN serve anche il link scaduto, il pannello ti dice che la verifica non è attiva sul CDN.
Quanto è verificato: il profilo Castreon è testato end-to-end. Per Bunny, Gcore e CDN77 la firma è identica a quella del codice ufficiale di ciascun fornitore (verificato nei test), ma non è stata provata su un account reale — usa Verifica prima della produzione. Il pannello lo indica accanto a ogni profilo.
Il link per uno spettatore
- Nella pagina del canale, Link firmato: scegli il profilo (e, facoltativamente, l'IP dello spettatore) → Crea link.
- Dalle tue applicazioni:
POST /api/v1/channels/{id}/playback-url, un link per spettatore (chiave API con l'ambitoplayback:sign).
Richiedi il link firmato su /live blocca i link non firmati verso il server. Le richieste senza firma passano allora solo dagli indirizzi in Accesso ai flussi — mettici prima i CDN e i load balancer che prelevano dal server. HTTP-TS, LL-HLS e WebRTC non hanno ancora il link firmato.
L'orologio del server deve essere corretto (NTP): la scadenza del link si calcola in base a esso.
Più CDN: Content Steering
Con almeno due profili attivi, Link firmato ha l'opzione Tutte (Content Steering): un solo link per tutti i CDN, secondo lo standard HLS Content Steering. Castreon verifica ogni CDN ogni 30 secondi, su un canale in esecuzione: risponde, riceve la playlist, non resta indietro con i segmenti. Dopo 3 verifiche fallite, il CDN viene segnato come non funziona e messo in fondo alla lista; dopo 3 riuscite torna. I player che capiscono Content Steering passano da soli al CDN successivo, senza interrompere la riproduzione (provato con hls.js 1.6); gli altri player usano il primo CDN della lista.
- L'ordine dei profili (le frecce) è la priorità. Il link
cdn: "auto"dell'API sceglie il primo CDN che funziona. - Lo stato di ogni CDN, con la percentuale di riuscite nelle 24 ore, compare accanto al profilo. In Notifiche, la famiglia CDN segnala un CDN che non funziona.
/metricshacastreon_cdn_upecastreon_cdn_latency_seconds.
La verifica avviene dal server, non dalle reti degli spettatori: un CDN che funziona dal server può comunque avere un problema in un certo paese.
Svuotamento della cache
Per lo svuotamento, il profilo ha bisogno dell'ID della zona / risorsa e di una Chiave API per lo svuotamento del CDN (facoltativo).
- Svuota tutto sul profilo — tutta la cache della zona, con conferma.
- Svuota la cache della CDN nella pagina del canale (amministratori) — solo la directory del canale.
- API:
POST /api/v1/cdn/purgeconchannel,paths(al massimo 10) oppureall. Ogni svuotamento finisce in Audit, senza chiavi. - Webhook di svuotamento proprio — per qualsiasi altro CDN o uno script: Castreon invia un
POSTJSON (event: "cdn.purge", i percorsi, il canale, il motivo) firmato conX-Castreon-Signature: sha256=HMAC-SHA256(segreto, corpo).
Svuotamento automatico (attivo di default): a ogni avvio di un canale e alla sua eliminazione, Castreon svuota la directory del canale su ogni CDN con lo svuotamento configurato e avvisa il webhook. Il motivo: a ogni avvio i nuovi segmenti hanno gli stessi nomi di quelli precedenti, e un CDN che li tiene ancora darebbe agli spettatori pezzi vecchi. Al massimo uno svuotamento per canale ogni 30 secondi; se il CDN chiede una pausa (limite di richieste), Castreon aspetta e riprova. L'ultimo svuotamento automatico e il suo risultato compaiono nelle impostazioni.
Lo svuotamento usa le API ufficiali di ciascun CDN (secondo la loro documentazione); non è stato provato su account reali.
Problemi frequenti
- Il test dice che il CDN serve il link scaduto: la verifica della firma non è attiva sul CDN (vedi il testo accanto al tipo di profilo).
- I segmenti ricevono 403, la playlist no: su Gcore manca l'impostazione che inoltra i parametri dalla playlist ai segmenti.
- Il CDN risulta «non funziona» con «playlist vecchia»: il CDN tiene la playlist in cache troppo a lungo — le playlist devono seguire l'header del server (
no-cache). - Lo svuotamento dice che la chiave API è errata: la chiave non è valida o non ha il permesso di svuotare. La zona / risorsa non esiste sulla CDN: l'ID della zona / risorsa è errato.
- Raggiunto il limite di svuotamenti della CDN: il CDN accetta solo pochi svuotamenti al minuto — il pannello dice tra quanti secondi puoi riprovare.