Club come entità principale, branding e fix infrastruttura streaming.

Introduce clubs con abbonamento, branding Active Storage e flusso registrazione società; corregge healthcheck MediaMTX (immagine distroless) e allinea dominio produzione matchlivetv.it.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-27 09:16:24 +02:00
parent 471291b2c4
commit 4083bc5dee
53 changed files with 1120 additions and 197 deletions

View File

@@ -14,7 +14,7 @@
| Prezzo | €0 | €40/anno o €5/mese | €200/anno o €20/mese |
| Embed sito società | No | No | In arrivo |
Esigenze custom: contatto `info@matchlivetv.eminux.it`.
Esigenze custom: contatto `info@matchlive.it`.
## Sito

View File

@@ -2,7 +2,7 @@
**Server:** `eminux@192.168.1.146` (Debian 13)
**Path deploy:** `~/matchlivetv` (dopo bootstrap opzionale: `/opt/matchlivetv`)
**Ultimo aggiornamento:** 2026-05-25
**Ultimo aggiornamento:** 2026-05-27
---
@@ -62,21 +62,21 @@ Il flusso video **non passa da Rails**: telefono → RTMP :1935 → MediaMTX →
## Nginx Proxy Manager (HTTPS)
1. **Proxy Host** → Forward Hostname: `http://192.168.1.146:3000` (dominio es. `matchlivetv.eminux.it`)
1. **Proxy Host** → Forward Hostname: `http://192.168.1.146:3000` (dominio principale `www.matchlivetv.it`, redirect apex `matchlivetv.it``www`)
2. **Websockets:** ON (obbligatorio per `/cable`)
3. **Custom location HLS** (spettatori):
- Location: `/hls`
- Forward: `http://192.168.1.146:8888`
- Forward: `http://192.168.1.146:8888` (in NPM usare proxy pass che **rimuove** il prefisso `/hls`, così MediaMTX riceve `/live/match_{uuid}/index.m3u8`)
- Scheme: http
- Così l'HLS è `https://matchlivetv.eminux.it/hls/match_{uuid}/index.m3u8`
- URL pubblico: `https://www.matchlivetv.it/hls/live/match_{uuid}/index.m3u8`
4. SSL Let's Encrypt su NPM
5. Aggiorna `infra/.env` sul server:
- `APP_PUBLIC_URL=https://matchlivetv.eminux.it`
- `HLS_PUBLIC_URL=https://matchlivetv.eminux.it/hls`
- `CORS_ORIGINS=https://matchlivetv.eminux.it`
- `ALLOWED_HOSTS=matchlivetv.eminux.it,192.168.1.146`
- `MEDIAMTX_RTMP_URL=rtmp://matchlivetv.eminux.it:1935`
- `YOUTUBE_REDIRECT_URI=https://matchlivetv.eminux.it/api/v1/youtube/callback` (solo tier premium)
- `APP_PUBLIC_URL=https://www.matchlivetv.it`
- `HLS_PUBLIC_URL=https://www.matchlivetv.it/hls`
- `CORS_ORIGINS=https://www.matchlivetv.it,https://matchlivetv.it`
- `ALLOWED_HOSTS=www.matchlivetv.it,matchlivetv.it,192.168.1.146`
- `MEDIAMTX_RTMP_URL=rtmp://www.matchlivetv.it:1935`
- `YOUTUBE_REDIRECT_URI=https://www.matchlivetv.it/api/v1/youtube/callback` (solo tier premium)
---