Shopping cart
Your cart empty!
Complete reference for configuring your WhiteLabelZoom deployment. Environment variables, database, email, media server, and custom domain setup.
All configuration is managed through environment variables in the .env file. The following table lists every variable with its description and an example value.
| Variable | Description | Example | Required |
|---|---|---|---|
DATABASE_URL | PostgreSQL connection string | postgresql://user:password@localhost:5432/whitelabelzoom | Yes |
REDIS_URL | Redis connection string for caching and sessions | redis://localhost:6379 | Yes |
JWT_SECRET | Secret key for signing authentication tokens (min 32 characters) | your-secure-random-string-min-32-chars | Yes |
BASE_URL | Public URL of your platform | https://meet.yourcompany.com | Yes |
LIVEKIT_API_KEY | API key for the LiveKit media server | APIxxxxxxxxxxxxxxx | Yes |
LIVEKIT_API_SECRET | API secret for the LiveKit media server | your-livekit-api-secret | Yes |
LIVEKIT_URL | WebSocket URL for the LiveKit media server | wss://meet.yourcompany.com:7880 | Yes |
SMTP_HOST | SMTP server hostname for sending emails | smtp.mailgun.org | Optional |
SMTP_PORT | SMTP server port | 587 | Optional |
SMTP_USER | SMTP authentication username | [email protected] | Optional |
SMTP_PASS | SMTP authentication password | your-smtp-password | Optional |
SMTP_FROM | Default sender email address for platform emails | [email protected] | Optional |
RECORDING_PATH | Local filesystem path for storing meeting recordings | /data/recordings | Optional |
S3_BUCKET | S3-compatible bucket for recording storage (alternative to local path) | your-recordings-bucket | Optional |
S3_REGION | AWS region for S3 recording storage | us-east-1 | Optional |
NODE_ENV | Application environment | production | Yes |
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 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.
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.
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.
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.
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.
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.
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.
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.
Log in with the admin credentials provided after deployment
Change the default admin password immediately
Review and verify branding settings (logo, colors, platform name)
Create additional admin accounts for your team members
Configure default meeting settings (recording, waiting rooms, participant limits)
Set up user registration preferences (open, invite-only, or SSO)
Test the platform by creating and joining a meeting
Configure your custom domain so your video conferencing platform is accessible at your own URL. This requires DNS changes and SSL certificate setup.
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.
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
Our team is available to help with any configuration questions. Managed deployment customers receive full setup support included with their license.