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_KEY—Encryption 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_BASEURL—Application-level webhook base URL

Database​

VariableDefaultDescription
DB_CONNECTIONmysqlDatabase driver
DB_HOSTmysqlDatabase host
DB_PORT3306Database port
DB_DATABASEopbxDatabase name
DB_USERNAMEopbxDatabase user
DB_PASSWORD—Database password
DB_ROOT_PASSWORD—MySQL root password
DB_EXPOSE_PORT—Expose MySQL port to host (dev only)

Redis​

VariableDefaultDescription
REDIS_CLIENTphpredisPHP Redis client
REDIS_HOSTredisRedis host
REDIS_PORT6379Redis port
REDIS_PASSWORD—Redis password
REDIS_DB0Default database
REDIS_EXPOSE_PORT—Expose 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_SECRET—Soketi 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_PORT—Expose MinIO API port (dev only)
MINIO_CONSOLE_EXPOSE_PORT—Expose 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_KEY—Optional 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_TOKEN—Worker auth token
DIALER_WEBHOOK_PORT8081Worker webhook port
DIALER_WEBHOOK_SECRET—HMAC secret for CDR webhooks
DIALER_POLL_INTERVAL10sCampaign poll interval

AMD Worker​

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

ngrok​

VariableDefaultDescription
NGROK_AUTHTOKEN—ngrok authtoken
NGROK_DOMAIN—Custom domain (paid plans)

UserCheck​

VariableDefaultDescription
USERCHECK_ENABLEDtrueEnable email validation
USERCHECK_API_TOKEN—API 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)