Files
eminuxandCursor 05ef56c56d Aggiunge replay YouTube temporaneo, pull registrazioni dai CPX e snapshot ingest in admin.
Così overflow Hetzner e VOD YouTube restano in archivio dopo lo spegnimento del nodo, e la colonna ingest non si svuota.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 13:01:41 +02:00

73 lines
3.4 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
POSTGRES_PASSWORD=matchlivetv_dev
SECRET_KEY_BASE=change_me_to_a_long_random_string_in_production
MEDIAMTX_WEBHOOK_SECRET=mediamtx_webhook_dev_secret
# URL RTMP per telefoni/simulatori (NON usare host Docker «mediamtx»).
# Dev su Mac: rtmp://127.0.0.1:1935 — device fisico sulla LAN: rtmp://IP_MAC:1935
MEDIAMTX_RTMP_URL=rtmp://127.0.0.1:1935
JWT_SECRET=matchlivetv_jwt_dev_secret_change_in_prod
YOUTUBE_CLIENT_ID=
YOUTUBE_CLIENT_SECRET=
YOUTUBE_REDIRECT_URI=http://localhost:3000/api/v1/youtube/callback
# Refresh token canale Match Live TV (Premium Light) — vedi docs/YOUTUBE_SETUP.md
YOUTUBE_PLATFORM_REFRESH_TOKEN=
YOUTUBE_MOCK_STREAM_KEY=mock-stream-key
PRIVACY_CONTROLLER_NAME=Emiliano Frascaro
PRIVACY_CONTROLLER_ADDRESS=Via Guido De Ruggiero, 89 - 20142 - Milano (MI)
PRIVACY_CONTACT_EMAIL=privacy@matchlivetv.it
# Opzionale: email dedicata di supporto (default = info@matchlivetv.it)
# SUPPORT_CONTACT_EMAIL=info@matchlivetv.it
MAILER_FROM=Match Live TV <noreply@matchlivetv.it>
PASSWORD_RESET_EXPIRY_HOURS=2
# Google Analytics 4 (opzionale — caricato solo dopo consenso cookie «Accetta tutti»)
# GOOGLE_ANALYTICS_MEASUREMENT_ID=G-XXXXXXXXXX
# Stripe (test: sk_test_... / price_... da Dashboard modalità Test)
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
# Price ID dei prezzi LANCIO da addebitare:
# Light yearly €59 · Light monthly €7,90 · Full yearly €199 · Full monthly €24,90
# Un price per prodotto e intervallo (Dashboard → Prodotto → Prezzi)
STRIPE_PREMIUM_LIGHT_MONTHLY_PRICE_ID=
STRIPE_PREMIUM_LIGHT_YEARLY_PRICE_ID=
STRIPE_PREMIUM_FULL_MONTHLY_PRICE_ID=
STRIPE_PREMIUM_FULL_YEARLY_PRICE_ID=
# Legacy (equivale a YEARLY se le righe sopra sono vuote)
STRIPE_PREMIUM_LIGHT_PRICE_ID=
STRIPE_PREMIUM_FULL_PRICE_ID=
# Bonifico (IBAN + intestatario obbligatori per mostrare «Paga con bonifico»)
BANK_TRANSFER_IBAN=
BANK_TRANSFER_ACCOUNT_HOLDER=
BANK_TRANSFER_BANK_NAME=
BANK_TRANSFER_BIC=
BANK_TRANSFER_PROOF_EMAIL=info@matchlivetv.it
# --- Replay storage (dopo ogni diretta Premium) ---
# Dev locale con Docker: Garage parte con `docker compose up` (servizio garage).
# Bootstrap una tantum: bash infra/scripts/setup_garage_replays.sh → aggiorna .env con le chiavi.
# MODALITÀ A — solo filesystem: lascia REPLAY_STORAGE_ENDPOINT vuoto (volume /recordings/replays/).
# MODALITÀ B — Garage/S3: compila tutte le righe sotto (endpoint rete Docker: http://garage:3900).
REPLAY_STORAGE_ENDPOINT=http://garage:3900
REPLAY_STORAGE_BUCKET=matchlivetv-replays
REPLAY_STORAGE_REGION=garage
# Credenziali S3: NON le inventi a mano. Le genera Garage con lo script di bootstrap:
# cd infra && bash scripts/setup_garage_replays.sh
# Lo script crea la chiave "replay-uploader" e scrive Key ID + Secret in infra/.env (non in questo file).
# ACCESS_KEY_ID = "Key ID" mostrato da Garage (es. GK6619e25d53883a7bc3f75755)
# SECRET_ACCESS_KEY = "Secret key" mostrata UNA SOLA VOLTA alla creazione della chiave
REPLAY_STORAGE_ACCESS_KEY_ID=
REPLAY_STORAGE_SECRET_ACCESS_KEY=
# true = obbligatorio per Garage/MinIO (path-style). Non cambiare se usi Garage.
REPLAY_STORAGE_FORCE_PATH_STYLE=true
# Opzionale: durata link firmati per play/download (secondi)
# REPLAY_PRESIGNED_URL_TTL_SECONDS=7200
# REPLAY_DOWNLOAD_URL_TTL_SECONDS=900
# Replay YouTube: copia temporanea di sicurezza (ore, clamp 2472, default 48)
# YOUTUBE_TEMP_REPLAY_RETENTION_HOURS=48
# YOUTUBE_REPLAY_VERIFY_MAX_ATTEMPTS=12
# YOUTUBE_REPLAY_VERIFY_BASE_INTERVAL_SECS=300
# YOUTUBE_REPLAY_VERIFY_GRACE_SECS=120