Vai al contenuto
Castreon
Distribuzione

Link firmati e più CDN

Aggiornato il 18 ott 2026

Castreon 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'ambito playback: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.
  • /metrics ha castreon_cdn_up e castreon_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/purge con channel, paths (al massimo 10) oppure all. Ogni svuotamento finisce in Audit, senza chiavi.
  • Webhook di svuotamento proprio — per qualsiasi altro CDN o uno script: Castreon invia un POST JSON (event: "cdn.purge", i percorsi, il canale, il motivo) firmato con X-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.

Privacy

Cookie e memoria locale

I cookie strettamente necessari sono sempre attivi. Statistiche e marketing usano servizi Google e partono solo se li accetti — fino ad allora non viene inviato nulla a Google. Puoi revocare il consenso qui in qualsiasi momento.

Strettamente necessari

Senza di essi non funzionano l’accesso, i moduli e la lingua scelta. Non richiedono consenso (§ 25, comma 2, n. 2 TDDDG).

Sempre attivi
Nome Finalità Durata Tipo
castreon-session Mantiene la sessione: accesso e lingua scelta 2 ore, rinnovato a ogni visita Cookie
XSRF-TOKEN Protegge i moduli da richieste contraffatte 2 ore, rinnovato a ogni visita Cookie
remember_web_… Solo se selezioni „Ricordami“ all’accesso Fino alla disconnessione, max. 400 giorni Cookie
__cf_bm Cloudflare: distingue i visitatori dai bot, solo quando il traffico viene verificato 30 minuti Cookie · Cloudflare
castreon:consent Ricorda la tua scelta sui cookie 12 mesi Memoria locale
theme Aspetto dell’account cliente: chiaro, scuro o sistema Finché non lo cambi Memoria locale

Statistiche

Google Analytics 4 (Google Ireland Ltd.): quali pagine vengono visitate, da dove arrivano le visite e con quale tipo di dispositivo — con identificativi pseudonimi, senza salvare l’indirizzo IP. Ci aiuta a migliorare il sito.

Nome Finalità Durata Tipo
_ga Google Analytics: riconosce il visitatore (identificativo pseudonimo) 13 mesi Cookie · Google Analytics
_ga_VHWQRPHPEF Google Analytics: mantiene lo stato della visita 13 mesi Cookie · Google Analytics

Marketing

Google Ads (Google Ireland Ltd.): misura se le visite provenienti dagli annunci Google portano a una prova o a un piano e consente di mostrare annunci Castreon su altri siti (remarketing).

Nome Finalità Durata Tipo
_gcl_au, _gcl_aw Google Ads: collega la visita al clic sull’annuncio (conversioni) 90 giorni Cookie · Google Ads
IDE, test_cookie Google Ads: remarketing e misurazione degli annunci, sui domini Google (doubleclick.net) Fino a 13 mesi Cookie · Google (terza parte)