Requirements
Hardware, software, and network requirements for NixStream
NixStream is a self-hosted stack: background encoding, live ingest, and a web admin panel. Size your server based on Docker vs manual install.
Docker install
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8+ cores |
| RAM | 8 GB | 16 GB |
| Disk | 50 GB SSD | 100+ GB SSD |
| Docker | 24+ | Latest stable |
| Docker Compose | v2 | v2 |
Docker is the fastest path to a working install. The image bundles FFmpeg, Shaka Packager, Whisper.cpp, and queue workers so you do not need to compile media binaries on the host.
When to scale up
- More concurrent encodes: add CPU cores and scale queue workers (
docker compose up -d --scale queue=3). - Large libraries: plan disk for source files plus encoded HLS/DASH output (often 2 to 4x source size depending on ladder).
- Live events: RTMP ingest and packaging use steady CPU and bandwidth while you're broadcasting.
Manual install
| Component | Version |
|---|---|
| PHP | 8.2+ with extensions: pdo_mysql, redis, gd, intl, mbstring, xml, zip, bcmath, curl |
| Composer | 2.x |
| Node.js | 20+ |
| npm | 10+ |
| MySQL / MariaDB | 8.0+ |
| Redis | 6+ |
| FFmpeg | 5+ |
| Shaka Packager | Latest stable |
| Whisper CLI | Built from whisper.cpp or Docker path |
| Nginx or Apache | With PHP-FPM |
| Supervisor | For queue workers |
| OS | Ubuntu 22.04 LTS (recommended) |
Manual install gives full control over the host stack. See Manual Installation for the complete setup guide including Nginx, Supervisor, and cron.
Media binaries
Encoding and packaging depend on these tools:
| Binary | Purpose |
|---|---|
ffmpeg / ffprobe | Transcode, probe, extract audio |
bin/media-vod | VOD packaging pipeline |
bin/media-live | Live stream packaging |
whisper-cli | Subtitle transcription |
Verify inside Docker:
docker compose exec queue ffmpeg -version
docker compose exec queue /opt/whisper/whisper-cli --helpNetwork ports
| Port | Protocol | Purpose |
|---|---|---|
| 80 / 443 | TCP | Web (HTTP/HTTPS) |
| 8080 | TCP | Docker default web port |
| 3306 | TCP | MySQL (internal or host) |
| 6379 | TCP | Redis (internal or host) |
| 1935 | TCP | RTMP live ingest |
| 8888 | TCP | Live streaming media API |
| 5173 | TCP | Vite dev server (--dev mode) |
Open RTMP (1935) only if you accept live ingest from external encoders. Restrict access with firewall rules when possible.
Browser support
The admin panel and player target modern evergreen browsers:
- Chrome / Edge 90+
- Firefox 90+
- Safari 15+
Adaptive streaming uses HLS and DASH. Safari plays HLS natively; other browsers use the Shaka-based player.
What is not supported
Shared hosting without shell access or queue workers is not supported. Encoding and transcription require background job processing.
- cPanel-only hosting without SSH
- PHP without Redis extension
- Servers without enough disk for encoded output
- Windows Server (use WSL2 or Docker Desktop for development only)
Pre-flight checklist
Before installing: host meets CPU/RAM/disk minimums, ports 80/443 (and 1935 if you want live) are reachable, you can run long-lived processes via Supervisor or Docker, and APP_URL will match your public domain (OAuth and share links depend on it).
Then follow Quick Start or jump straight to Docker Installation.