Aggiunge i tornei con hub, pagina pubblica e tabellone per semifinali e finali.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-05 15:05:57 +02:00
co-authored by Cursor
parent d52434fb2e
commit a1f4c24a43
124 changed files with 6979 additions and 91 deletions
+20 -1
View File
@@ -376,10 +376,29 @@ HCLOUD_USER_DATA_FILE=/opt/matchlivetv/infra/stream-node/cloud-init.yaml
STREAM_DNS_ZONE=mltv-stream.net
STREAM_DNS_TTL=60
STREAM_CLOUD_DNS_SUFFIX=mltv-stream.net
STREAM_CLOUD_MAX_PUBLISHERS=4
STREAM_CLOUD_MAX_PUBLISHERS=6
STREAM_NODE_HOME_MAX_PUBLISHERS=4
STREAM_NODE_ENV=prod
STREAM_AUTOSCALE_MAX_NODES=12
STREAM_AUTOSCALE_MONTHLY_BUDGET_EUR=150
STREAM_AUTOSCALE_QUIET_HOURS=02:00-07:00
STREAM_AUTOSCALE_QUIET_TZ=Europe/Rome
STREAM_NIGHT_SWEEP_ENABLED=1
# Default lab sicuro; in prod per overflow usa hetzner esplicitamente dal bottone admin
STREAM_CLOUD_PROVIDER=local_lab
STREAM_DNS_PROVIDER=lab
```
### Quiet hours + capacity phases (qualità-first)
| Fase | home | cloud/CPX | MAX_NODES | budget soft | soft totale |
|------|------|-----------|-----------|-------------|-------------|
| A (ora) | 4 | 6 | 12 | 150 € | ~76 |
| B (post-misure) | 4 | 6 | 22 | 250 € | ~136 |
| C (tetto ≥200) | 4 | 6 | 33 | 360 € | ~202 |
Densità **8**/CPX solo dopo misure QoS. Di notte (`Streams::QuietHours` + `Streams::NightCloudSweeper`): niente scale-out/warm-spare; CPX idle → decommission; CPX con sessioni → alert Ops.
**Misure prima di fase B/C o densità 8:** CPU/RAM/ffmpeg su CPX a 46 publisher; slate/pause/HLS; relay YouTube (`RELAY_MAX_CONCURRENT`); tempo provision→ready; fattura Hetzner vs stima budget 24/7.