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

Environment Variables

Complete .env configuration reference

NixStream configuration lives in .env on manual installs, or in .env.docker.example for Docker (install.sh copies it to .env).

Application

VariableDescription
APP_NAMEDisplay name (Nixstream in Docker)
APP_URLPublic URL (no trailing slash)
FRONTEND_URLFrontend origin
EDGE_BASE_URLPublic URL of nixstream-edge (player-reachable)
EDGE_INTERNAL_URLInternal Edge URL for health checks (Docker: http://edge:8080)
EDGE_SIGNING_SECRETShared HMAC secret with Edge
EDGE_SESSION_TTL_VODVOD playback session TTL in seconds (default 7200)
EDGE_SESSION_TTL_LIVELive playback session TTL in seconds (default 21600)
EDGE_SESSION_PREFIXRedis key prefix for sessions (default edge:play:)
EDGE_AUTO_CONNECTEDtrue in Docker so Edge integration is connected without manual setup
APP_DEBUGfalse in production
APP_ENCODING_MAX_RESOLUTIONMax encode height (default 4000)

Database

VariableDockerManual
DB_HOSTdb127.0.0.1
DB_DATABASEnixstreamyour database
DB_USERNAMEnixstream_useryour user
DB_PASSWORDgeneratedyour password

Redis & queues

VariableDescription
QUEUE_CONNECTIONredis
CACHE_STOREredis
SESSION_DRIVERredis
REDIS_HOSTredis (Docker) or 127.0.0.1
REDIS_QUEUE_RETRY_AFTER7200 (encoding job timeout)

Media encoding

VariableDescription
FFMPEG_BINARIESFFmpeg path
FFPROBE_BINARIESFFprobe path
SHAKA_PACKAGER_BINARIESShaka Packager path
media_cli_pathbin/media-vod (in config/media.php)

Whisper transcription

VariableDocker default
WHISPER_CLI_PATH/opt/whisper/whisper-cli
WHISPER_MODELS_PATH/opt/whisper/models

Live streaming

VariableDescription
MEDIA_SERVER_HOSTMedia API URL
MEDIA_SERVER_API_KEYAPI key (auto-generated in Docker)
MEDIA_SERVER_INGEST_IPPublic IP for RTMP
MEDIA_JWT_SECRETJWT signing secret
MEDIA_LIVE_API_PORT8888
MEDIA_LIVE_RTMP_PORT1935

OAuth integrations

VariableProvider
VIMEO_CLIENT_ID / VIMEO_CLIENT_SECRETVimeo
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRETGoogle Drive
DROPBOX_CLIENT_ID / DROPBOX_CLIENT_SECRETDropbox

Redirect URIs use {APP_URL}/api/auth/{provider}/callback.

Broadcasting

BROADCAST_CONNECTION=log disables Reverb/WebSockets by default in Docker. Real-time features use polling, not WebSockets.

Config files

Additional settings in core/config/:

  • media.php: Encoding CLI
  • edge.php: nixstream-edge base URL, signing secret, session TTL
  • video.php: Video defaults
  • acl.php: Role permissions

Edge tenant settings (Integrations UI)

These are stored per tenant in the settings table (not .env):

KeyDefaultDescription
edge_base_urlfrom EDGE_BASE_URLPublic Edge URL for this tenant
edge_verified_at(none)Set when Test connection succeeds
edge_require_user_auth0 (off)Bind playback sessions to user or share link
edge_max_concurrent_devices0Max simultaneous sessions per user when auth is on

Configure in Settings > Integrations > Edge. See Integrations, Edge.

On this page