Documentation

Configuration Guide

Complete reference for configuring your WhiteLabelZoom deployment. Environment variables, database, email, media server, and custom domain setup.

Environment Variables

All configuration is managed through environment variables in the .env file. The following table lists every variable with its description and an example value.

VariableDescriptionExampleRequired
DATABASE_URLPostgreSQL connection stringpostgresql://user:password@localhost:5432/whitelabelzoomYes
REDIS_URLRedis connection string for caching and sessionsredis://localhost:6379Yes
JWT_SECRETSecret key for signing authentication tokens (min 32 characters)your-secure-random-string-min-32-charsYes
BASE_URLPublic URL of your platformhttps://meet.yourcompany.comYes
LIVEKIT_API_KEYAPI key for the LiveKit media serverAPIxxxxxxxxxxxxxxxYes
LIVEKIT_API_SECRETAPI secret for the LiveKit media serveryour-livekit-api-secretYes
LIVEKIT_URLWebSocket URL for the LiveKit media serverwss://meet.yourcompany.com:7880Yes
SMTP_HOSTSMTP server hostname for sending emailssmtp.mailgun.orgOptional
SMTP_PORTSMTP server port587Optional
SMTP_USERSMTP authentication username[email protected]Optional
SMTP_PASSSMTP authentication passwordyour-smtp-passwordOptional
SMTP_FROMDefault sender email address for platform emails[email protected]Optional
RECORDING_PATHLocal filesystem path for storing meeting recordings/data/recordingsOptional
S3_BUCKETS3-compatible bucket for recording storage (alternative to local path)your-recordings-bucketOptional
S3_REGIONAWS region for S3 recording storageus-east-1Optional
NODE_ENVApplication environmentproductionYes

Database Setup

WhiteLabelZoom uses PostgreSQL 15 or later as its primary database. The managed deployment includes a pre-configured PostgreSQL instance. For self-deployments, the Docker Compose stack includes a PostgreSQL container, or you can connect to an external database.

# PostgreSQL connection string format
DATABASE_URL=postgresql://user:password@host:5432/whitelabelzoom

# Connection pooling (recommended for production)
DATABASE_POOL_MIN=5
DATABASE_POOL_MAX=20

# Run database migrations
docker compose exec app npm run db:migrate

Connection pooling: For production deployments, configure connection pooling with a minimum of 5 and maximum of 20 connections. If using an external managed database (AWS RDS, Google Cloud SQL), connect through a connection pooler like PgBouncer for optimal performance.

Redis Configuration

Redis is used for session management, caching, and real-time event distribution. The Docker Compose stack includes a Redis instance, or you can point to an external managed Redis service such as AWS ElastiCache or Redis Cloud.

# Redis connection string
REDIS_URL=redis://localhost:6379

# With authentication
REDIS_URL=redis://:your-redis-password@localhost:6379

# With TLS (for managed Redis services)
REDIS_URL=rediss://:your-redis-password@your-redis-host:6380

Redis is used for caching meeting room state, user sessions, and distributing real-time events between application instances. For high-availability deployments, use Redis Sentinel or a managed Redis cluster.

Email Configuration

Configure SMTP settings to enable meeting invitation emails, password reset notifications, and admin alerts. WhiteLabelZoom works with any SMTP provider — Mailgun, SendGrid, Amazon SES, or your own mail server.

# SMTP Configuration
SMTP_HOST=smtp.mailgun.org
SMTP_PORT=587
[email protected]
SMTP_PASS=your-smtp-password
[email protected]

# Optional: SMTP encryption (starttls or ssl)
SMTP_ENCRYPTION=starttls

Email is used for meeting invitations (with calendar .ics attachments), password reset flows, account creation notifications, and optional admin alerts for system events. If SMTP is not configured, the platform will function without email — users can share meeting links manually.

Media Server Settings

WhiteLabelZoom uses LiveKit as its WebRTC media server for handling video, audio, and screen sharing streams. The media server configuration controls connection behavior, recording storage, and NAT traversal.

WebRTC Configuration

Set LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET to connect the application to the media server. The URL should use the wss:// protocol for secure WebSocket connections.

TURN/STUN Server

A TURN/STUN server is included in the Docker stack for NAT traversal. It runs on port 3478 (UDP) and ensures participants behind firewalls or restrictive networks can connect to meetings without issues.

Recording Storage

Recordings can be saved to a local filesystem path via RECORDING_PATH or to an S3-compatible bucket using S3_BUCKET and S3_REGION. Local storage is the default for simplicity.

Bandwidth & Quality

The media server automatically adapts video quality based on available bandwidth using simulcast. No manual configuration is needed — participants receive the best quality their connection supports.

Admin Dashboard

The admin dashboard is your control center for managing the platform. Access it at https://your-domain.com/admin using the credentials provided during deployment.

First Login Steps

1

Log in with the admin credentials provided after deployment

2

Change the default admin password immediately

3

Review and verify branding settings (logo, colors, platform name)

4

Create additional admin accounts for your team members

5

Configure default meeting settings (recording, waiting rooms, participant limits)

6

Set up user registration preferences (open, invite-only, or SSO)

7

Test the platform by creating and joining a meeting

Custom Domain Setup

Configure your custom domain so your video conferencing platform is accessible at your own URL. This requires DNS changes and SSL certificate setup.

DNS Records

Create an A record pointing your domain (e.g., meet.yourcompany.com) to your server's public IP address. Set TTL to 300 seconds for faster propagation during initial setup.

SSL Certificates

Use the included Let's Encrypt integration for automatic free SSL certificates, or upload your own custom certificate and private key for organizations that require specific certificate authorities.

# Update BASE_URL in your .env file
BASE_URL=https://meet.yourcompany.com

# Generate SSL certificate with Let's Encrypt
docker compose exec app certbot --nginx -d meet.yourcompany.com

# Or use a custom certificate
SSL_CERT_PATH=/etc/ssl/certs/your-cert.pem
SSL_KEY_PATH=/etc/ssl/private/your-key.pem

Need Configuration Help?

Our team is available to help with any configuration questions. Managed deployment customers receive full setup support included with their license.