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:
Docker (recommended)
git clone https://github.com/Muntader/nixstream.git
cd nixstream/nixstream
./install.shThe 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
| Service | Role |
|---|---|
app | Laravel PHP application |
nginx | Web server |
queue | Background jobs (encoding, transcription) |
redis | Queue and cache |
db | MySQL database |
live | RTMP ingest and live packaging |
Check status:
docker compose ps
docker compose logs -f queueDevelopment mode
Enable source bind mounts and Vite HMR on port 5173:
./install.sh --devEdit 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:linkConfigure 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=redisStart 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:
- Change the admin password under profile settings
- Set
APP_URLto your public HTTPS domain - Create an API key in Settings > General
- Upload a short test video and confirm encoding finishes
- Check queue health:
docker compose exec queue supervisorctl status - Configure SMTP if you need share-link emails
- Review the encoding profile in Settings > Encoding
Verify encoding
Upload a short video (under 1 minute). Status should move:
pending, then processing, then completedIf stuck on processing, see Troubleshooting.
Verify live (optional)
- Create a live stream in the admin panel
- Copy the RTMP URL and stream key
- Push from OBS with encoder set to x264, keyframe 2s
- 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.