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:
@@ -104,3 +104,21 @@ OPS_LOG_SUBSCRIBER=false
|
||||
# Sentry (opzionale — error tracking produzione)
|
||||
SENTRY_DSN=
|
||||
SENTRY_TRACES_SAMPLE_RATE=0.1
|
||||
|
||||
# --- Stream autoscale (Hetzner Cloud + DNS mltv-stream.net) ---
|
||||
# Token progetto matchlivetv-stream (Read & Write). Non committare il valore reale.
|
||||
HCLOUD_TOKEN=
|
||||
HCLOUD_LOCATION=fsn1
|
||||
HCLOUD_SERVER_TYPE=cpx21
|
||||
HCLOUD_IMAGE=debian-12
|
||||
HCLOUD_SSH_KEY=matchlivetv-stream
|
||||
HCLOUD_NETWORK_ID=
|
||||
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_NODE_ENV=prod
|
||||
# Lab locale di default; il bottone admin "Provisiona nodo Hetzner" usa comunque i provider hetzner.
|
||||
STREAM_CLOUD_PROVIDER=local_lab
|
||||
STREAM_DNS_PROVIDER=lab
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#cloud-config
|
||||
# Cloud-init minimale per nodo stream Hetzner (MediaMTX + ffmpeg).
|
||||
# Uso in .env produzione:
|
||||
# HCLOUD_USER_DATA_FILE=/opt/matchlivetv/infra/stream-node/cloud-init.yaml
|
||||
#
|
||||
# Per boot più veloci: creare uno snapshot dopo il primo setup e usare HCLOUD_IMAGE=<snapshot>.
|
||||
|
||||
package_update: true
|
||||
packages:
|
||||
- docker.io
|
||||
- ffmpeg
|
||||
- curl
|
||||
runcmd:
|
||||
- systemctl enable --now docker
|
||||
- mkdir -p /opt/stream-node /recordings /slates
|
||||
- |
|
||||
cat >/opt/stream-node/docker-compose.yml <<'EOF'
|
||||
services:
|
||||
mediamtx:
|
||||
image: bluenviron/mediamtx:latest
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./mediamtx.yml:/mediamtx.yml:ro
|
||||
- /recordings:/recordings
|
||||
- /slates:/slates:ro
|
||||
command: /mediamtx.yml
|
||||
EOF
|
||||
- |
|
||||
cat >/opt/stream-node/mediamtx.yml <<'EOF'
|
||||
logLevel: info
|
||||
api: yes
|
||||
apiAddress: :9997
|
||||
rtmp: yes
|
||||
rtmpAddress: :1935
|
||||
hls: yes
|
||||
hlsAddress: :8888
|
||||
paths:
|
||||
all_others:
|
||||
EOF
|
||||
- cd /opt/stream-node && docker compose up -d
|
||||
Reference in New Issue
Block a user