Indice rapido
Panoramica generale
Castly Control è una piattaforma self-hosted per gestire live streaming a bassa latenza tramite WordPress, OvenMediaEngine, player embed, licenze commerciali e campagne VAST Ads.
Live a bassa latenza
Gestione canali live con WebRTC e fallback LL-HLS, pensata per web TV, eventi, creator e installazioni white-label.
Dashboard WordPress
Castly usa WordPress come pannello stabile e familiare per canali, player, VAST, runtime, licenza e backup.
Licenze e CCS
La licenza viene validata da CCS tramite endpoint API dedicati, con enforcement operativo e grace period per installazioni già valide.
Architettura
Castly è composto da più livelli che lavorano insieme. Separare bene i ruoli aiuta a capire dove intervenire in caso di problemi.
| Componente | A cosa serve | Note operative |
|---|---|---|
| WordPress + Castly Control | Pannello di amministrazione, canali, player, VAST, settings, licenza. | Il plugin vive dentro WordPress e fornisce la UI principale. |
| OvenMediaEngine | Motore streaming per ingest RTMP, WebRTC e LL-HLS. | Deve essere sincronizzato quando cambi canali o app OME. |
| castly-agent | Servizio locale per metriche e stato runtime. | Fornisce dati a Dashboard/Runtime e ai controlli di salute. |
| CCS / license.castly.it | Server centrale licenze: activate, validate, heartbeat, deactivate. | Non va installato sullo stesso server Castly cliente salvo architetture speciali. |
| Nginx + SSL | Proxy HTTPS, WordPress, endpoint player, app e certificati. | Il dominio deve avere certificato valido e porte aperte. |
Installazione e aggiornamento
La struttura corretta del bundle Castly è sempre castly-installer/. Non usare bundle flat.
Installazione remota consigliata
curl -fsSL https://castly.it/castly-installer/install.sh | sudo bash
Lo script remoto scarica l'ultima release indicata in latest.json, installa prerequisiti come unzip, estrae il bundle in /root e avvia /root/castly-installer/install.sh.
Aggiornamento remoto consigliato
curl -fsSL https://castly.it/castly-installer/update.sh | sudo bash
L'update remoto scarica il bundle, lo estrae nello stesso percorso e lancia /root/castly-installer/update.sh, preservando la configurazione locale.
Comandi manuali update
cd /root unzip -o NOME-BUNDLE.zip cd /root/castly-installer chmod +x install.sh update.sh sudo bash ./update.sh
Comandi manuali installazione da zero
cd /root unzip -o NOME-BUNDLE.zip cd /root/castly-installer chmod +x install.sh update.sh sudo bash ./install.sh
Setup Wizard
Il Wizard è la guida iniziale e permanente del pannello. Alla prima installazione senza licenza guida l'utente verso l'attivazione; dopo resta accessibile dal menu Wizard.
Per Administrator
- License activation.
- Server check.
- Guide Center.
- OBS setup e stream key.
- Comandi ufficiali install/update.
- Finish.
Per Editor client
- Guide Center.
- OBS setup e stream key.
- Comandi ufficiali.
- Finish.
- Niente License e Server Check.
Nel Wizard la licenza mostra il piano reale letto dalla stessa opzione usata nella sezione License, quindi il dato è coerente con il license server.
Licenza
La licenza si inserisce in Settings > License oppure nel primo step del Wizard quando si parte da una nuova installazione.
Campi principali
- License Key.
- License Server URL: normalmente
https://license.castly.it. - Status.
- Plan.
- Expires At.
- Last Validation.
- Instance ID.
- Last response code.
Regole enforcement
| Stato | Comportamento |
|---|---|
| Licenza active | Tutte le funzioni operative sono disponibili. |
| Nuova installazione senza licenza | Pannello accessibile, operatività bloccata. L'utente può inserire e validare la licenza. |
| Licenza scaduta/revocata dopo uso valido | Parte il grace period di 5 giorni. |
| Grace scaduto | Blocco operativo: creazione canali, sync OME e player Castly vengono limitati. |
| Server licenze temporaneamente non raggiungibile | Nessun blocco immediato per installazioni precedentemente valide. |
Dashboard
La Dashboard è il punto di ingresso operativo. Serve per controllare rapidamente stato licenza, canali, stream, runtime e salute generale della piattaforma.
- Verifica a colpo d'occhio se il sistema è pronto.
- Aiuta a capire se OME, agent o licenza richiedono attenzione.
- Rimane accessibile anche in caso di problemi licenza, per permettere recupero e diagnostica.
Channels
I canali sono il cuore operativo di Castly. Ogni canale rappresenta un flusso live con una propria stream key, player ed eventuali impostazioni VAST.
Come creare un canale
- Apri Channels.
- Crea un nuovo canale.
- Imposta nome canale e stream key.
- Configura eventuale messaggio offline personalizzato.
- Salva.
- Esegui Sync to OME se devi aggiornare la configurazione streaming.
A cosa serve Sync to OME?
Sync to OME invia o riallinea la configurazione del canale verso OvenMediaEngine. Serve quando Castly deve fare in modo che OME conosca il canale/app/stream e i relativi endpoint.
Quando usarlo
- Dopo aver creato un nuovo canale.
- Dopo modifiche importanti alla configurazione canale.
- Dopo un update che tocca OME/app.
- Se il player non trova lo stream ma OBS sta trasmettendo.
- Dopo restore/import di configurazioni canale.
Quando non serve
- Per cambiare solo testi descrittivi non tecnici.
- Per consultare statistiche.
- Quando il canale è già sincronizzato e non hai cambiato parametri streaming.
Messaggio offline per canale
Ogni canale può avere un messaggio offline personalizzato. Se il campo è vuoto, viene usato il messaggio standard interno.
OBS / Encoder
OBS o un encoder compatibile invia il flusso verso Castly tramite RTMP. Il player poi rende disponibile la diretta con WebRTC o LL-HLS.
Impostazioni principali
| Parametro | Valore consigliato | Note |
|---|---|---|
| Service | Custom | Usa server RTMP personalizzato. |
| Server | rtmp://TUO-DOMINIO/live | Il valore esatto viene mostrato nel canale. |
| Stream Key | Stream key del canale | Copiala dal singolo canale Castly. |
| Keyframe interval | 2 secondi | Consigliato per compatibilità streaming. |
| Video bitrate | 2500-6000 kbps | Dipende da risoluzione e banda disponibile. |
| Audio bitrate | 128-192 kbps | AAC consigliato. |
Players
La sezione Players consente di vedere anteprime, embed e codici da inserire in siti esterni o pagine WordPress.
- Preview del player del canale.
- Codice embed iframe.
- Shortcode WordPress quando disponibile.
- Stato live/offline.
- Messaggio offline personalizzato per canale.
Con la V.1.6.2.8 i permalink vengono aggiornati automaticamente dopo install/update, quindi gli endpoint player dovrebbero funzionare senza dover salvare manualmente i permalink WordPress.
VAST Ads
Il modulo VAST permette di creare campagne pubblicitarie video e associarle ai singoli player/canali.
Cosa puoi configurare
Pre-roll
Spot prima dell'avvio della diretta.
Mid-roll
Spot durante la visione, con intervallo temporale configurabile.
Post-roll
Spot alla fine o alla chiusura dell'esperienza video, se previsto.
Campagne VAST
- Creazione campagna.
- Upload video spot con loading/progress.
- Generazione XML VAST.
- Validazione interna con motivazione degli errori.
- Lista campagne in accordion: titolo visibile, scheda apribile.
- Delete migliorato e deduplica dopo restore backup.
Quando usare la validazione
Usala dopo aver creato o modificato una campagna. Se la validazione non passa, Castly mostra la motivazione, per esempio URL video mancante, XML incompleto, media file non raggiungibile o dati non coerenti.
Runtime
Runtime serve a capire cosa sta succedendo sul server: stato dei servizi, agent, OME, metriche e risposte operative.
- Controllo Castly Agent.
- Controllo OME/API.
- Stato stream e segnali runtime.
- Supporto diagnostico quando la diretta non parte.
Settings
Settings raccoglie le aree amministrative principali. Alcune sezioni sono visibili solo agli Administrator.
White Label
Personalizza nome prodotto, titolo admin, logo admin, logo login, colori, footer, support URL e updates URL. Se inserisci un logo admin, il titolo testuale viene nascosto per evitare sovrapposizioni.
Import / Export JSON
Esporta e importa configurazioni Castly: settings, canali, VAST e branding. Puoi creare backup locali e ripristinarli.
Licenza
Gestione chiave licenza, attivazione, validazione, piano, scadenza e stato enforcement.
Aggiornamenti
Link alla pagina pubblica di aggiornamenti. Non è un updater automatico interno al plugin.
Utenti e ruoli
Castly supporta una modalità utile per rivenditori e installazioni white-label: l'amministratore può creare utenti Editor e consegnare al cliente un pannello limitato.
| Ruolo | Cosa vede | Cosa non vede |
|---|---|---|
| Administrator | Tutto: Dashboard, Channels, Players, VAST, Runtime, Settings, Branding, Backup, License, Health, Logs, Wizard. | Nessuna limitazione Castly. |
| Editor | Sezioni operative Castly e Backup, Wizard in versione guida, Logout. | Branding, License, Check Updates, Health, Logs e voci WordPress sensibili come Media, Plugin, Utenti, Impostazioni. |
Manutenzione
Permalink
Prima della V.1.6.2.8 poteva essere necessario salvare manualmente i permalink WordPress dopo nuova installazione. Ora il flush viene eseguito automaticamente.
sudo -u www-data wp rewrite flush --hard --allow-root
Cron licenza
cat /etc/cron.d/castly-license-validation systemctl status cron --no-pager
Forzare check licenza
cd /var/www/TUO-DOMINIO/public sudo -u www-data wp cron event run castly_license_daily_validation --allow-root
Certificati SSL
sudo certbot renew --dry-run sudo certbot renew --force-renewal sudo nginx -t && sudo systemctl reload nginx
Su server Castly con OME, dopo rinnovo SSL è consigliato rilanciare l'update Castly o riavviare OME per riallineare i certificati.
Troubleshooting
Il player non si vede
- Controlla licenza.
- Controlla permalink flush.
- Controlla che il canale sia sincronizzato con OME.
- Controlla HTTPS e certificati.
OBS trasmette ma resta offline
- Verifica stream key.
- Verifica RTMP URL.
- Usa Sync to OME.
- Controlla log OME.
VAST non parte
- Esegui validazione VAST.
- Controlla media file raggiungibile.
- Controlla assegnazione campagna al canale.
- Controlla pre-roll/mid-roll/post-roll attivi.
Update remoto non parte
- Verifica
latest.json. - Verifica che ZIP sia in
/releases/. - Controlla che il bundle contenga
castly-installer/. - Controlla
/root/castly-installer/.env.