Skip to main content

Configuration Reference

This page documents the environment variables and configuration values used by OPBX.

Environment Variables

Core Application

VariableDefaultDescription
APP_NAMEOPBX - Open Source Business PBXApplication name
APP_ENVproductionEnvironment mode
APP_KEYEncryption key. Generate with php artisan key:generate
APP_DEBUGfalseEnable debug mode
APP_URLhttps://your-domain.comBase URL
APP_PORT80Host port for Nginx
APP_LOCALEenDefault locale

Application Mode

VariableDefaultDescription
OPBX_APPLICATION_MODEdevelopmentdevelopment or production (SaaS)
OPBX_APPLICATION_WEBHOOK_BASEURLApplication-level webhook base URL

Database

VariableDefaultDescription
DB_CONNECTIONmysqlDatabase driver
DB_HOSTmysqlDatabase host
DB_PORT3306Database port
DB_DATABASEopbxDatabase name
DB_USERNAMEopbxDatabase user
DB_PASSWORDDatabase password
DB_ROOT_PASSWORDMySQL root password
DB_EXPOSE_PORTExpose MySQL port to host (dev only)

Redis

VariableDefaultDescription
REDIS_CLIENTphpredisPHP Redis client
REDIS_HOSTredisRedis host
REDIS_PORT6379Redis port
REDIS_PASSWORDRedis password
REDIS_DB0Default database
REDIS_EXPOSE_PORTExpose Redis port to host (dev only)

Session / Sanctum

VariableDefaultDescription
SESSION_DRIVERredisSession storage
SESSION_LIFETIME120Session lifetime (minutes)
SANCTUM_STATEFUL_DOMAINSlocalhost:3000,127.0.0.1:3000Cookie auth domains
SANCTUM_EXPIRATION1440Token expiration (minutes)

Broadcasting / WebSockets

VariableDefaultDescription
BROADCAST_DRIVERpusherBroadcasting driver
PUSHER_APP_IDapp-idSoketi app ID
PUSHER_APP_KEYpbxappkeySoketi app key
PUSHER_APP_SECRETSoketi app secret
PUSHER_HOSTsoketiSoketi host
PUSHER_PORT6001Soketi port
PUSHER_SCHEMEhttp
SOKETI_PORT6001Host port for Soketi
SOKETI_METRICS_PORT9601Host port for Soketi metrics

Frontend (Vite)

VariableDefaultDescription
FRONTEND_PORT3000Host port for Vite dev server
FRONTEND_URLhttp://localhost:3000
VITE_API_BASE_URL/api/v1API base path
VITE_WS_HOSTlocalhostWebSocket host
VITE_WS_PORT6001WebSocket port
VITE_WS_SCHEMEhttpWebSocket scheme

MinIO / S3 Storage

VariableDefaultDescription
MINIO_ACCESS_KEYminioadminMinIO root user
MINIO_SECRET_KEYminioadminMinIO root password
MINIO_REGIONus-east-1
MINIO_BUCKETrecordingsDefault bucket
MINIO_ENDPOINThttp://minio:9000
MINIO_USE_PATH_STYLEtrue
MINIO_EXPOSE_PORTExpose MinIO API port (dev only)
MINIO_CONSOLE_EXPOSE_PORTExpose MinIO console port (dev only)

Cloudonix CPaaS

VariableDefaultDescription
CLOUDONIX_API_BASE_URLhttps://api.cloudonix.ioCloudonix API base URL
CLOUDONIX_API_TIMEOUT30API timeout
CLOUDONIX_SIP_SERVERsip.cloudonix.ioSIP server

Per-organization credentials are stored in cloudonix_settings.

Webhooks / Rate Limiting

VariableDefaultDescription
RATE_LIMIT_API60API requests per minute
RATE_LIMIT_WEBHOOKS100Webhook requests per minute
RATE_LIMIT_VOICE1000Voice requests per minute
RATE_LIMIT_SENSITIVE10Sensitive operations per minute
RATE_LIMIT_SENSITIVE_ADMIN60Admin sensitive operations
RATE_LIMIT_AUTH5Auth attempts per minute
CLOUDONIX_CDR_AUTH_KEYOptional CDR auth key

Voice Routing

VariableDefaultDescription
VOICE_CACHE_EXTENSION_TTL1800Extension cache TTL (seconds)
VOICE_CACHE_BUSINESS_HOURS_TTL900Business hours cache TTL
VOICE_LOCK_TIMEOUT30Lock timeout
VOICE_LOCK_BLOCK3Lock block time
VOICE_MAX_RETRIES3Max retries
VOICE_IDEMPOTENCY_TTL3600Idempotency TTL
VOICE_NO_ANSWER_TIMEOUT30No-answer timeout
CXML_DEFAULT_TIMEOUT30CXML default timeout

Circuit Breaker

VariableDefaultDescription
CIRCUIT_BREAKER_ENABLEDtrueEnable circuit breaker
CIRCUIT_BREAKER_CLOUDONIX_THRESHOLD5Failure threshold
CIRCUIT_BREAKER_CLOUDONIX_TIMEOUT30Timeout (seconds)
CIRCUIT_BREAKER_CLOUDONIX_RETRY_AFTER60Retry after (seconds)

Dialer Worker

VariableDefaultDescription
DIALER_WORKER_IDworker-1Worker identifier
DIALER_LARAVEL_API_URLhttp://nginxLaravel API URL
DIALER_WORKER_API_TOKENWorker auth token
DIALER_WEBHOOK_PORT8081Worker webhook port
DIALER_WEBHOOK_SECRETHMAC secret for CDR webhooks
DIALER_POLL_INTERVAL10sCampaign poll interval

AMD Worker

VariableDefaultDescription
AMD_WORKER_API_TOKENCallback auth token
AMD_MAX_CONCURRENT_STREAMS100Max streams
AMD_DUMP_AUDIOfalseDump audio to WAV
AMD_DUMP_AUDIO_PATH/tmp/amd-dumpsDump directory

ngrok

VariableDefaultDescription
NGROK_AUTHTOKENngrok authtoken
NGROK_DOMAINCustom domain (paid plans)

UserCheck

VariableDefaultDescription
USERCHECK_ENABLEDtrueEnable email validation
USERCHECK_API_TOKENAPI token
USERCHECK_BASE_URLhttps://api.usercheck.com
USERCHECK_TIMEOUT5

reCAPTCHA

VariableDefaultDescription
RECAPTCHA_ENABLEDfalseEnable reCAPTCHA v3
RECAPTCHA_SITE_KEY
RECAPTCHA_SECRET_KEY
RECAPTCHA_MIN_SCORE0.5

Transactional Email

VariableDefaultDescription
EMAIL_PROVIDERmailgunEnabled provider
EMAIL_QUEUEdefaultQueue for email jobs
EMAIL_TRACK_OPENStrue
EMAIL_TRACK_CLICKStrue
MAIL_MAILERsmtpMail driver
MAIL_HOSTmailpitSMTP host
MAIL_PORT1025SMTP port
MAIL_FROM_ADDRESSnoreply@your-domain.com
MAIL_FROM_NAME${APP_NAME}

Provider-specific variables are in .env.example for Mailgun, Mailjet, MailerLite, and SendInBlue/Brevo.

Logging

VariableDefaultDescription
LOG_CHANNELstack
LOG_LEVELinfo

Health Check Endpoints

EndpointPurpose
/api/healthPublic API health
/api/storage/healthStorage health (auth required)
/api/websocket/healthWebSocket health (auth required)
/webhooks/healthDialer worker health
/health (amd-worker:8083)AMD worker health

Docker Services

ServiceContainerPurpose
appopbx_appLaravel PHP-FPM
nginxopbx_nginxReverse proxy
frontendopbx_frontendVite dev server
mysqlopbx_mysqlMySQL 8
redisopbx_redisCache, sessions, queues
minioopbx_minioObject storage
soketiopbx_websocketWebSocket server
queue-workeropbx_queue_workerQueue worker
scheduleropbx_schedulerTask scheduler
dialer-workeropbx_dialer_workerGo dialer worker
amd-workeropbx_amd_workerJava AMD worker
ngrokopbx_ngrokWebhook tunnel (dev)