# 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//index.m3u8` RTMP publish: - `rtmp://ditdomæne:1935/?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