Aggiunge registry nodi stream e provisioning Hetzner/lab per lo scale-out.
Prepara l'architettura multi-nodo (MediaMTX+ffmpeg) con assignment URL per sessione, admin di provision/drain e provider Cloud/DNS astratti verso mltv-stream.net. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,6 +9,7 @@ de:
|
||||
billing: Abrechnung
|
||||
youtube: YouTube
|
||||
sessions: Sitzungen
|
||||
stream_nodes: Stream-Knoten
|
||||
password: Passwort
|
||||
logout: Abmelden
|
||||
flash:
|
||||
@@ -26,6 +27,9 @@ de:
|
||||
ops_acknowledged: Vorfall übernommen
|
||||
ops_resolved: Vorfall gelöst
|
||||
ops_muted: Benachrichtigungen für 24 Stunden stummgeschaltet
|
||||
stream_node_created: "Lab-Knoten %{slug} bereitgestellt."
|
||||
stream_node_destroyed: "Knoten %{slug} entfernt."
|
||||
stream_node_draining: "Knoten %{slug} im Drain-Modus."
|
||||
comped_granted: "Kostenloses Abonnement %{plan} für %{club} aktiviert."
|
||||
comped_revoked: "Kostenloses Abonnement für %{club} widerrufen."
|
||||
session_already_terminated: "Sitzung bereits beendet (%{status})."
|
||||
@@ -111,6 +115,21 @@ de:
|
||||
title: Teams
|
||||
matches_count: "%{count} Spiele"
|
||||
view_all: "Vereine ansehen (%{count} Teams)"
|
||||
stream_nodes:
|
||||
title: Stream-Knoten
|
||||
providers: "Cloud-Provider: %{cloud} · DNS-Provider: %{dns}"
|
||||
provision_lab: Lab-Knoten bereitstellen
|
||||
drain: Drain
|
||||
destroy: Löschen
|
||||
destroy_confirm: "Knoten %{slug} löschen?"
|
||||
hosts_title: Lab-DNS (/etc/hosts)
|
||||
col:
|
||||
slug: Slug
|
||||
role: Rolle
|
||||
status: Status
|
||||
slots: Slots
|
||||
hostname: Hostname
|
||||
provider: Provider
|
||||
ops:
|
||||
kpi:
|
||||
critical: Kritisch offen
|
||||
|
||||
@@ -9,6 +9,7 @@ en:
|
||||
billing: Billing
|
||||
youtube: YouTube
|
||||
sessions: Sessions
|
||||
stream_nodes: Stream nodes
|
||||
password: Password
|
||||
logout: Log out
|
||||
flash:
|
||||
@@ -26,6 +27,9 @@ en:
|
||||
ops_acknowledged: Incident acknowledged
|
||||
ops_resolved: Incident resolved
|
||||
ops_muted: Notifications muted for 24 hours
|
||||
stream_node_created: "Lab node %{slug} provisioned."
|
||||
stream_node_destroyed: "Node %{slug} removed."
|
||||
stream_node_draining: "Node %{slug} is draining (no new sessions)."
|
||||
comped_granted: "%{plan} complimentary subscription activated for %{club}."
|
||||
comped_revoked: "Complimentary subscription revoked for %{club}."
|
||||
session_already_terminated: "Session already ended (%{status})."
|
||||
@@ -111,6 +115,24 @@ en:
|
||||
title: Teams
|
||||
matches_count: "%{count} matches"
|
||||
view_all: "View clubs (%{count} teams)"
|
||||
stream_nodes:
|
||||
title: Streaming nodes
|
||||
providers: "Cloud provider: %{cloud} · DNS provider: %{dns}"
|
||||
provision_lab: Provision lab node
|
||||
provision_cloud: Provision Hetzner node
|
||||
provision_cloud_confirm: "Create a Hetzner Cloud server + DNS record on mltv-stream.net? Billing applies until destroyed."
|
||||
hetzner_token_missing: "Set HCLOUD_TOKEN to enable Cloud provisioning."
|
||||
drain: Drain
|
||||
destroy: Delete
|
||||
destroy_confirm: "Delete node %{slug}?"
|
||||
hosts_title: Lab DNS records (/etc/hosts snippet)
|
||||
col:
|
||||
slug: Slug
|
||||
role: Role
|
||||
status: Status
|
||||
slots: Slots
|
||||
hostname: Hostname
|
||||
provider: Provider
|
||||
ops:
|
||||
kpi:
|
||||
critical: Critical open
|
||||
|
||||
@@ -9,6 +9,7 @@ es:
|
||||
billing: Facturación
|
||||
youtube: YouTube
|
||||
sessions: Sesiones
|
||||
stream_nodes: Nodos stream
|
||||
password: Contraseña
|
||||
logout: Salir
|
||||
flash:
|
||||
@@ -26,6 +27,9 @@ es:
|
||||
ops_acknowledged: Incidencia asumida
|
||||
ops_resolved: Incidencia resuelta
|
||||
ops_muted: Notificaciones silenciadas durante 24 horas
|
||||
stream_node_created: "Nodo lab %{slug} provisionado."
|
||||
stream_node_destroyed: "Nodo %{slug} eliminado."
|
||||
stream_node_draining: "Nodo %{slug} en drain."
|
||||
comped_granted: "Suscripción de cortesía %{plan} activada para %{club}."
|
||||
comped_revoked: "Suscripción de cortesía revocada para %{club}."
|
||||
session_already_terminated: "La sesión ya ha finalizado (%{status})."
|
||||
@@ -111,6 +115,21 @@ es:
|
||||
title: Equipos
|
||||
matches_count: "%{count} partidos"
|
||||
view_all: "Ver clubes (%{count} equipos)"
|
||||
stream_nodes:
|
||||
title: Nodos streaming
|
||||
providers: "Cloud provider: %{cloud} · DNS provider: %{dns}"
|
||||
provision_lab: Provisionar nodo lab
|
||||
drain: Drain
|
||||
destroy: Eliminar
|
||||
destroy_confirm: "¿Eliminar el nodo %{slug}?"
|
||||
hosts_title: DNS lab (/etc/hosts)
|
||||
col:
|
||||
slug: Slug
|
||||
role: Rol
|
||||
status: Estado
|
||||
slots: Slots
|
||||
hostname: Hostname
|
||||
provider: Provider
|
||||
ops:
|
||||
kpi:
|
||||
critical: Críticas abiertas
|
||||
|
||||
@@ -9,6 +9,7 @@ fr:
|
||||
billing: Facturation
|
||||
youtube: YouTube
|
||||
sessions: Sessions
|
||||
stream_nodes: Nœuds stream
|
||||
password: Mot de passe
|
||||
logout: Déconnexion
|
||||
flash:
|
||||
@@ -26,6 +27,9 @@ fr:
|
||||
ops_acknowledged: Incident pris en charge
|
||||
ops_resolved: Incident résolu
|
||||
ops_muted: Notifications suspendues pendant 24 heures
|
||||
stream_node_created: "Nœud lab %{slug} provisionné."
|
||||
stream_node_destroyed: "Nœud %{slug} supprimé."
|
||||
stream_node_draining: "Nœud %{slug} en drain."
|
||||
comped_granted: "Abonnement offert %{plan} activé pour %{club}."
|
||||
comped_revoked: "Abonnement offert révoqué pour %{club}."
|
||||
session_already_terminated: "Session déjà terminée (%{status})."
|
||||
@@ -111,6 +115,21 @@ fr:
|
||||
title: Équipes
|
||||
matches_count: "%{count} matchs"
|
||||
view_all: "Voir les clubs (%{count} équipes)"
|
||||
stream_nodes:
|
||||
title: Nœuds streaming
|
||||
providers: "Cloud provider: %{cloud} · DNS provider: %{dns}"
|
||||
provision_lab: Provisionner un nœud lab
|
||||
drain: Drain
|
||||
destroy: Supprimer
|
||||
destroy_confirm: "Supprimer le nœud %{slug} ?"
|
||||
hosts_title: DNS lab (/etc/hosts)
|
||||
col:
|
||||
slug: Slug
|
||||
role: Rôle
|
||||
status: Statut
|
||||
slots: Slots
|
||||
hostname: Hostname
|
||||
provider: Provider
|
||||
ops:
|
||||
kpi:
|
||||
critical: Critiques ouverts
|
||||
|
||||
@@ -9,6 +9,7 @@ it:
|
||||
billing: Fatturazione
|
||||
youtube: YouTube
|
||||
sessions: Sessioni
|
||||
stream_nodes: Nodi stream
|
||||
password: Password
|
||||
logout: Esci
|
||||
flash:
|
||||
@@ -26,6 +27,9 @@ it:
|
||||
ops_acknowledged: Incidente preso in carico
|
||||
ops_resolved: Incidente risolto
|
||||
ops_muted: Notifiche sospese per 24 ore
|
||||
stream_node_created: "Nodo lab %{slug} provisionato."
|
||||
stream_node_destroyed: "Nodo %{slug} rimosso."
|
||||
stream_node_draining: "Nodo %{slug} in drain (niente nuove sessioni)."
|
||||
comped_granted: "Abbonamento omaggio %{plan} attivato per %{club}."
|
||||
comped_revoked: "Abbonamento omaggio revocato per %{club}."
|
||||
session_already_terminated: "Sessione già terminata (%{status})."
|
||||
@@ -111,6 +115,24 @@ it:
|
||||
title: Squadre
|
||||
matches_count: "%{count} partite"
|
||||
view_all: "Vedi società (%{count} squadre)"
|
||||
stream_nodes:
|
||||
title: Nodi streaming
|
||||
providers: "Cloud provider: %{cloud} · DNS provider: %{dns}"
|
||||
provision_lab: Provisiona nodo lab
|
||||
provision_cloud: Provisiona nodo Hetzner
|
||||
provision_cloud_confirm: "Creare un server Hetzner Cloud + record DNS su mltv-stream.net? Verrà addebitato fino allo spegnimento."
|
||||
hetzner_token_missing: "Imposta HCLOUD_TOKEN per abilitare il provisioning Cloud."
|
||||
drain: Drain
|
||||
destroy: Elimina
|
||||
destroy_confirm: "Eliminare il nodo %{slug}?"
|
||||
hosts_title: Record DNS lab (snippet /etc/hosts)
|
||||
col:
|
||||
slug: Slug
|
||||
role: Ruolo
|
||||
status: Stato
|
||||
slots: Slot
|
||||
hostname: Hostname
|
||||
provider: Provider
|
||||
ops:
|
||||
kpi:
|
||||
critical: Critici aperti
|
||||
|
||||
@@ -110,6 +110,11 @@ Rails.application.routes.draw do
|
||||
post :regia_link
|
||||
end
|
||||
end
|
||||
resources :stream_nodes, only: %i[index create destroy] do
|
||||
member do
|
||||
post :drain
|
||||
end
|
||||
end
|
||||
get "youtube/platform", to: "youtube#platform", as: :youtube_platform
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user