133 lines
3.1 KiB
Markdown
133 lines
3.1 KiB
Markdown
# TuxiNet StreamHub v1
|
||
|
||
Et komplet, selvhostet streaming-kontrolpanel til **Ubuntu LXC i Proxmox** med **Docker Compose**, **MediaMTX**, **Flask backend** og **Caddy reverse proxy**.
|
||
|
||
## Hvad den kan i v1
|
||
|
||
- Opret streams med navn, slug og token
|
||
- Start/stop adgang til at publicere
|
||
- Login til admin og streamer-roller
|
||
- HLS preview direkte i panelet
|
||
- Twitch/YouTube chat embed pr. stream
|
||
- Status: live/offline, opløsning, FPS, codec, lydkanaler, sample rate, bitrate hvis ffprobe kan aflæse det
|
||
- MediaMTX auth via HTTP mod backend
|
||
- Hooks fra MediaMTX til backend ved stream ready / not ready
|
||
- Simpelt mørkt webinterface
|
||
|
||
## Vigtige noter
|
||
|
||
- **Lyd**: Designet til stereo-AAC workflows. Mono markeres i UI som advarsel.
|
||
- **Lav forsinkelse**: v1-preview bruger **LL-HLS/HLS** for stabilitet. MediaMTX WebRTC-porte er eksponeret til senere udbygning.
|
||
- **Start stream** betyder i v1: streamen åbnes for publishing. Serveren kan ikke fjernstarte OBS på en anden maskine.
|
||
- **Stop stream** betyder i v1: publishing nægtes ved auth, og streamen markeres utilgængelig i panelet. Hvis du senere vil kunne *kikke* sessions mere aggressivt, kan det udvides via MediaMTX Control API.
|
||
|
||
## Arkitektur
|
||
|
||
- `mediamtx`: ingest + preview/media-routing
|
||
- `backend`: auth, admin, DB, status, hooks, UI
|
||
- `caddy`: reverse proxy + webadgang
|
||
|
||
## 1) LXC i Proxmox
|
||
|
||
Anbefalet:
|
||
|
||
- Ubuntu 24.04 LTS
|
||
- 2 vCPU minimum
|
||
- 4 GB RAM minimum
|
||
- 20 GB disk minimum
|
||
- Fast IP
|
||
- Nesting **enabled**
|
||
- Keyctl **enabled**
|
||
|
||
Hvis Docker i unprivileged LXC driller, så brug enten:
|
||
|
||
- privileged LXC til denne ene container, eller
|
||
- en lille Ubuntu VM i stedet
|
||
|
||
## 2) Installer Docker i LXC
|
||
|
||
Kør `scripts/install_docker_ubuntu.sh` som root.
|
||
|
||
## 3) Klargør projektet
|
||
|
||
```bash
|
||
cd /opt
|
||
mkdir -p /opt/streamhub
|
||
cd /opt/streamhub
|
||
# kopier alle filer hertil
|
||
cp .env.example .env
|
||
nano .env
|
||
```
|
||
|
||
Sæt mindst:
|
||
|
||
- `SECRET_KEY`
|
||
- `ADMIN_PASSWORD`
|
||
- `PUBLIC_BASE_URL`
|
||
- `MEDIA_PUBLIC_HLS_BASE`
|
||
|
||
## 4) Start stacken
|
||
|
||
```bash
|
||
docker compose build
|
||
docker compose up -d
|
||
```
|
||
|
||
## 5) Login
|
||
|
||
Standard admin-bruger hentes fra `.env`:
|
||
|
||
- brugernavn: `ADMIN_USERNAME`
|
||
- kodeord: `ADMIN_PASSWORD`
|
||
|
||
## 6) Router / firewall
|
||
|
||
Åbn som minimum:
|
||
|
||
- `80/tcp`
|
||
- `443/tcp`
|
||
- `1935/tcp` for RTMP ingest
|
||
|
||
Internt bruges også:
|
||
|
||
- `8888/tcp` HLS (bag Caddy via `/hls/*`)
|
||
- `9997/tcp` MediaMTX API kun lokalt
|
||
|
||
## 7) OBS anbefalinger til DJ stream
|
||
|
||
- Audio sample rate: **48 kHz**
|
||
- Channels: **Stereo**
|
||
- Audio bitrate: **256–320 kbps AAC**
|
||
- Keyframe interval: **2 sek**
|
||
- Video: fx 1920x1080 / 30 eller 50 FPS alt efter setup
|
||
|
||
## 8) URL'er
|
||
|
||
Admin/UI:
|
||
|
||
- `https://ditdomæne/`
|
||
|
||
Preview HLS via Caddy:
|
||
|
||
- `https://ditdomæne/hls/<slug>/index.m3u8`
|
||
|
||
RTMP publish:
|
||
|
||
- `rtmp://ditdomæne:1935/<slug>?token=<token>`
|
||
|
||
## 9) Begrænsninger i v1
|
||
|
||
- Preview er HLS/LL-HLS, ikke fuld WebRTC-player endnu
|
||
- Session-kick er ikke tvunget ind i UI endnu
|
||
- Ingen transcoding-profiler
|
||
- Ingen 2FA
|
||
- Ingen multi-node / HA
|
||
|
||
## 10) Senere udbygning
|
||
|
||
- WebRTC preview med dedikeret spiller
|
||
- OBS WebSocket integration
|
||
- Push til Twitch/YouTube fra panelet
|
||
- Bedre real-time metrics via websocket
|
||
- Per-stream roller og share links
|