Overview
NixStream self-hosted video platform documentation
NixStream is a self-hosted video stack. Upload VOD, transcode to HLS/DASH, run live from OBS, share links, embed the player, hook your app up via the client API. You host it. You own the files and the database.
Not a YouTube clone. No discovery feed, no recommendation engine. Just hosting, encoding, and delivery on your hardware.
Who this is for
- Own server, own files, own viewer data
- Adaptive VOD without per-minute SaaS fees
- Occasional live from OBS
- Password shares or embeds on your site
- Upload/list via your own app through the API
One modest box handles a solid VOD library. Don't expect a dozen simultaneous live channels on a $5 VPS.
What you can do
VOD: upload, folder collections, multi-bitrate HLS/DASH, thumbnails, Whisper subtitles.
Live: RTMP ingest, HLS playback while live, optional recording to VOD after the event ends.
Sharing: public or password links, email invites, embed codes, domain/geo rules.
Security: signed playback through nixstream-edge, AES-128 on VOD segments, API keys for automation.
Imports: pull from Vimeo, Google Drive, or Dropbox over OAuth.
Known rough edges
Real limitations as of the current release:
- HEVC/H.265 live is unreliable on CPU and GPU. Stick to H.264 for live until this is fixed.
- Local disk cleanup: live archive FLVs and transcript working dirs sometimes linger after jobs finish. Check
storage/app/public/live_archiveandstorage/app/media/vod/outputs/transcriptsif disk usage climbs. - Encoding profile edit: codec selection on edit can show the wrong value when switching profiles. Verify before saving.
- Scale: built for personal/small-team self-hosting, not broadcast CDN replacement.
Architecture
Typical workflows
Upload and publish VOD
- Upload from the panel or
POST /api/client/v1/uploads - Queue worker runs
media-vod - Thumbnails and optional Whisper VTT
- Video shows up in the library
Live event
- Create stream in Live
- Paste RTMP URL + key into OBS
- Viewers use the player or a share link
- Enable Save recording as VOD if you want the FLV archived after stop
Wire up your app
Grab an API key from Settings > General, then upload, poll status, list videos, and create share links under /api/client/v1/*.
Fastest way in: Docker install. Bare metal: manual install. For automation see the Client API; for OBS see live streaming.