We offer customization solutions and support ([email protected]) | Visit us on bitbyte3 for complete VOD solutions with apps.
NixStream
Getting Started

Quick Start

Get NixStream running in minutes with Docker

The fastest path is Docker. Bare-metal on Ubuntu 22.04 works too if you prefer managing Nginx and Supervisor yourself.

Clone the repo, then run install from the app directory:

git clone https://github.com/Muntader/nixstream.git
cd nixstream/nixstream
./install.sh

The installer copies .env.docker.example to .env, builds images, runs migrations, and starts all services.

Open http://localhost (or port 8080 if configured). install.sh prints a one-time admin password; email is ADMIN_EMAIL in .env.

Save the password when the installer prints it. Change it after first login.

What ./install.sh starts

ServiceRole
appLaravel PHP application
nginxWeb server
queueBackground jobs (encoding, transcription)
redisQueue and cache
dbMySQL database
liveRTMP ingest and live packaging

Check status:

docker compose ps
docker compose logs -f queue

Development mode

Enable source bind mounts and Vite HMR on port 5173:

./install.sh --dev

Edit PHP and React files on the host; changes reflect without rebuilding images. See Development Setup and Docker Installation.

Manual install

For production servers without Docker:

cp .env.example .env
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan key:generate
php artisan migrate --seed
php artisan storage:link

Configure in .env:

APP_URL=https://your-domain.com
DB_HOST=127.0.0.1
DB_DATABASE=nixstream
DB_USERNAME=nixstream_user
DB_PASSWORD=your_password
REDIS_HOST=127.0.0.1
QUEUE_CONNECTION=redis

Start queue workers and the scheduler:

sudo supervisorctl start nixstream-queue:*

See Manual Installation for Nginx, SSL, Whisper build, and live server setup.

Post-install checklist

After first login, complete these steps:

  1. Change the admin password under profile settings
  2. Set APP_URL to your public HTTPS domain
  3. Create an API key in Settings > General
  4. Upload a short test video and confirm encoding finishes
  5. Check queue health: docker compose exec queue supervisorctl status
  6. Configure SMTP if you need share-link emails
  7. Review the encoding profile in Settings > Encoding

Verify encoding

Upload a short video (under 1 minute). Status should move:

pending, then processing, then completed

If stuck on processing, see Troubleshooting.

Verify live (optional)

  1. Create a live stream in the admin panel
  2. Copy the RTMP URL and stream key
  3. Push from OBS with encoder set to x264, keyframe 2s
  4. Confirm the stream appears under active live streams

Environment files

install.sh copies .env.docker.example to .env for Docker; manual installs start from .env.example. Never commit .env to version control. Store secrets in a password manager.

Stopping and resetting

./install.sh --down          # Stop containers
./install.sh --reset         # Delete all data (development only)

Check requirements if you are sizing the host. After login, the admin panel and Client API are where most day-to-day work happens. Release notes live in the changelog.

On this page