
# TuxiNet StreamHub v2.1 Enterprise (Clean Build)

Første enterprise-udgave af StreamHub med:

- PostgreSQL
- Flask backend
- MediaMTX auth via backend
- Admin + streamer roller
- 1 streamer = 1 stream
- SMTP2GO mailflow
- Force password change ved første login
- Password reset via mail
- Branding med `bg.png`, `logo.png`, `videooffline.png`

## Status

Denne første udgave er lavet som en **ren base**, så du kan starte rent uden de gamle v2-filer.

### Implementeret
- Datamodel låst til PostgreSQL
- Admin-login og streamer-login
- Admin kan oprette streamer + stream i samme flow
- Streamer ser kun egen stream
- MediaMTX auth-route
- Status fra MediaMTX API
- Mail helper til onboarding og reset
- Force password change flow
- Forgot/reset password flow
- Offline player image i UI
- Enterprise login design

### Delvist scaffoldet / klar til næste iteration
- Action/bot layer (`kick publisher`, `restart service`) er scaffoldet som placeholder
- Mere avancerede live-metrics kan udvides senere
- Fuldt migrationsflow med Alembic kan tilføjes senere

## Hurtig opstart

```bash
cp .env.example .env
nano .env

docker compose build --no-cache
docker compose up -d
```

Åbn derefter:
- Web: `http://IP` eller dit reverse proxied domæne
- MediaMTX API: internt på `http://mediamtx:9997`

## Første admin-bruger

Backend opretter automatisk admin-brugeren ud fra `.env`:

- `ADMIN_USERNAME`
- `ADMIN_EMAIL`
- `ADMIN_PASSWORD`

## SMTP2GO

Sæt i `.env`:

```env
SMTP_HOST=mail.smtp2go.com
SMTP_PORT=2525
SMTP_USERNAME=noreplay@tuxinet.dk
SMTP_PASSWORD=DIN_SMTP2GO_ADGANGSKODE
MAIL_FROM=noreplay@tuxinet.dk
```

## MediaMTX ingest-formater

### OBS
- Server: `rtmp://dit-domæne:1935/<slug>`
- Key: `<token>`

### Larix / Streamlabs fallback
- URL: `rtmp://dit-domæne:1935`
- Key: `<slug>/<token>`

### Query-token
- `rtmp://dit-domæne:1935/<slug>?token=<token>`
