Sockudo
Server

Environment Variables

Complete reference of all environment variables supported by Sockudo.

Environment variables override values from config/config.json and have the highest priority.

Core Runtime

VariableTypeDefaultDescription
HOSTstring0.0.0.0Bind address
PORTu166001HTTP/WebSocket port
ENVIRONMENTstringproductionRuntime mode
DEBUGboolfalseForce debug mode on (takes precedence over DEBUG_MODE)
DEBUG_MODEboolfalseEnable debug mode
ACTIVITY_TIMEOUTu64120Connection activity timeout in seconds
SHUTDOWN_GRACE_PERIODu6410Graceful shutdown timeout in seconds
USER_AUTHENTICATION_TIMEOUTu643600User authentication timeout in seconds
WEBSOCKET_MAX_PAYLOAD_KBu3264Max WebSocket payload size in KB
INSTANCE_PROCESS_IDstring<uuid>Unique instance identifier

Default App Bootstrap

Create a default app from environment variables without a config file.

VariableTypeDefaultDescription
SOCKUDO_DEFAULT_APP_IDstringApp ID (required with key+secret)
SOCKUDO_DEFAULT_APP_KEYstringApp key (required with id+secret)
SOCKUDO_DEFAULT_APP_SECRETstringApp secret (required with id+key)
SOCKUDO_DEFAULT_APP_ENABLEDbooltrueEnable the default app
SOCKUDO_ENABLE_CLIENT_MESSAGESboolfalseAllow client-to-client events
SOCKUDO_DEFAULT_APP_ENABLE_USER_AUTHENTICATIONboolfalseEnable user authentication
SOCKUDO_DEFAULT_APP_MAX_CONNECTIONSu32100Max simultaneous connections
SOCKUDO_DEFAULT_APP_MAX_CLIENT_EVENTS_PER_SECONDu32100Client event rate limit
SOCKUDO_DEFAULT_APP_MAX_READ_REQUESTS_PER_SECONDu32100Read request rate limit
SOCKUDO_DEFAULT_APP_MAX_BACKEND_EVENTS_PER_SECONDu32100Backend event rate limit
SOCKUDO_DEFAULT_APP_MAX_PRESENCE_MEMBERS_PER_CHANNELu32100Max presence members per channel
SOCKUDO_DEFAULT_APP_MAX_PRESENCE_MEMBER_SIZE_IN_KBu32100Max presence member data size in KB
SOCKUDO_DEFAULT_APP_MAX_CHANNEL_NAME_LENGTHu32100Max channel name length
SOCKUDO_DEFAULT_APP_MAX_EVENT_CHANNELS_AT_ONCEu32100Max channels per event broadcast
SOCKUDO_DEFAULT_APP_MAX_EVENT_NAME_LENGTHu32100Max event name length
SOCKUDO_DEFAULT_APP_MAX_EVENT_PAYLOAD_IN_KBu32100Max event payload size in KB
SOCKUDO_DEFAULT_APP_MAX_EVENT_BATCH_SIZEu32100Max events per batch
SOCKUDO_DEFAULT_APP_ENABLE_WATCHLIST_EVENTSboolfalseEnable watchlist events
SOCKUDO_DEFAULT_APP_ALLOWED_ORIGINSstringComma-separated list of allowed origins

Driver Selection

VariableTypeDefaultDescription
ADAPTER_DRIVERstringlocalPub/sub adapter: local, redis, redis-cluster, nats
CACHE_DRIVERstringmemoryCache backend: memory, redis, redis-cluster, none
QUEUE_DRIVERstringredisQueue backend: memory, redis, redis-cluster, sqs, none
APP_MANAGER_DRIVERstringmemoryApp store: memory, mysql, postgres, dynamodb, scylladb
RATE_LIMITER_DRIVERstringmemoryRate limiter backend: memory, redis, redis-cluster, none
METRICS_DRIVERstringprometheusMetrics backend: prometheus

Adapter

VariableTypeDefaultDescription
ADAPTER_BUFFER_MULTIPLIER_PER_CPUusize64Concurrent operations per CPU core
ADAPTER_ENABLE_SOCKET_COUNTINGbooltrueEnable connection counting across nodes

Database: Redis

VariableTypeDefaultDescription
DATABASE_REDIS_HOSTstring127.0.0.1Redis host
DATABASE_REDIS_PORTu166379Redis port
DATABASE_REDIS_DBu320Redis database number
DATABASE_REDIS_USERNAMEstringRedis username (ACL)
DATABASE_REDIS_PASSWORDstringRedis password
DATABASE_REDIS_KEY_PREFIXstringsockudo:Key prefix for all Redis keys
REDIS_URLstringOverride all Redis connections with a single URL

Redis Cluster

VariableTypeDefaultDescription
REDIS_CLUSTER_NODESstringComma-separated cluster node URLs
DATABASE_REDIS_CLUSTER_NODESstringSame as above (alias)
DATABASE_REDIS_CLUSTER_USERNAMEstringCluster auth username
DATABASE_REDIS_CLUSTER_PASSWORDstringCluster auth password
DATABASE_REDIS_CLUSTER_USE_TLSboolfalseUse TLS for cluster connections

Database: MySQL

VariableTypeDefaultDescription
DATABASE_MYSQL_HOSTstringlocalhostMySQL host
DATABASE_MYSQL_PORTu163306MySQL port
DATABASE_MYSQL_USERNAMEstringrootMySQL username
DATABASE_MYSQL_PASSWORDstring(empty)MySQL password
DATABASE_MYSQL_DATABASEstringsockudoMySQL database name
DATABASE_MYSQL_TABLE_NAMEstringapplicationsTable name for app manager
DATABASE_MYSQL_POOL_MINu32Min pool connections (per-DB override)
DATABASE_MYSQL_POOL_MAXu32Max pool connections (per-DB override)

Database: PostgreSQL

VariableTypeDefaultDescription
DATABASE_POSTGRES_HOSTstringlocalhostPostgreSQL host
DATABASE_POSTGRES_PORTu163306PostgreSQL port
DATABASE_POSTGRES_USERNAMEstringrootPostgreSQL username
DATABASE_POSTGRES_PASSWORDstring(empty)PostgreSQL password
DATABASE_POSTGRES_DATABASEstringsockudoPostgreSQL database name
DATABASE_POSTGRES_POOL_MINu32Min pool connections (per-DB override)
DATABASE_POSTGRES_POOL_MAXu32Max pool connections (per-DB override)

Database: DynamoDB

VariableTypeDefaultDescription
DATABASE_DYNAMODB_REGIONstringus-east-1AWS region
DATABASE_DYNAMODB_TABLE_NAMEstringsockudo-applicationsDynamoDB table name
DATABASE_DYNAMODB_ENDPOINT_URLstringCustom endpoint (for local testing)
AWS_ACCESS_KEY_IDstringAWS access key
AWS_SECRET_ACCESS_KEYstringAWS secret key

Database Pooling

VariableTypeDefaultDescription
DATABASE_POOLING_ENABLEDbooltrueEnable connection pooling
DATABASE_POOL_MINu322Global minimum pool connections
DATABASE_POOL_MAXu3210Global maximum pool connections
DATABASE_CONNECTION_POOL_SIZEu3210Pool size (applies to both MySQL and PostgreSQL)

Cache

VariableTypeDefaultDescription
CACHE_TTL_SECONDSu64300Global cache TTL (applies to app manager cache, channel limits, DB caches, and memory cache)
CACHE_CLEANUP_INTERVALu6460Cache cleanup interval in seconds
CACHE_MAX_CAPACITYu6410000Max cache entries

SSL / TLS

VariableTypeDefaultDescription
SSL_ENABLEDboolfalseEnable TLS
SSL_CERT_PATHstring(empty)Path to certificate file
SSL_KEY_PATHstring(empty)Path to private key file
SSL_REDIRECT_HTTPboolfalseRedirect HTTP to HTTPS
SSL_HTTP_PORTu1680HTTP port for redirect listener

Unix Socket

VariableTypeDefaultDescription
UNIX_SOCKET_ENABLEDboolfalseEnable Unix socket listener
UNIX_SOCKET_PATHstring/var/run/sockudo/sockudo.sockSocket file path (must be absolute)
UNIX_SOCKET_PERMISSION_MODEstring660Octal file permissions (e.g. 660, 750)

Metrics

VariableTypeDefaultDescription
METRICS_ENABLEDbooltrueEnable metrics endpoint
METRICS_HOSTstring0.0.0.0Metrics bind address
METRICS_PORTu169601Metrics port
METRICS_PROMETHEUS_PREFIXstringsockudo_Prometheus metric name prefix

Rate Limiter

VariableTypeDefaultDescription
RATE_LIMITER_ENABLEDbooltrueEnable rate limiting
RATE_LIMITER_API_MAX_REQUESTSu32100Max API requests per window
RATE_LIMITER_API_WINDOW_SECONDSu6460API rate limit window
RATE_LIMITER_API_TRUST_HOPSu320Trusted proxy hops for API
RATE_LIMITER_WS_MAX_REQUESTSu3220Max WebSocket connections per window
RATE_LIMITER_WS_WINDOW_SECONDSu6460WebSocket rate limit window
RATE_LIMITER_REDIS_PREFIXstringsockudo_rl:Redis key prefix for rate limiter

Queue: Redis

VariableTypeDefaultDescription
QUEUE_REDIS_CONCURRENCYu325Concurrent queue workers
QUEUE_REDIS_PREFIXstringsockudo_queue:Redis queue key prefix

Queue: Redis Cluster

VariableTypeDefaultDescription
REDIS_CLUSTER_QUEUE_CONCURRENCYu325Cluster queue concurrency
REDIS_CLUSTER_QUEUE_PREFIXstringsockudo_queue:Cluster queue key prefix

Queue: SQS

VariableTypeDefaultDescription
QUEUE_SQS_REGIONstringus-east-1AWS region
QUEUE_SQS_VISIBILITY_TIMEOUTi3230Message visibility timeout
QUEUE_SQS_MAX_MESSAGESi3210Max messages per poll
QUEUE_SQS_WAIT_TIME_SECONDSi325Long polling wait time
QUEUE_SQS_CONCURRENCYu325Concurrent SQS workers
QUEUE_SQS_FIFOboolfalseUse FIFO queue
QUEUE_SQS_ENDPOINT_URLstringCustom SQS endpoint (for local testing)

Webhooks

VariableTypeDefaultDescription
WEBHOOK_BATCHING_ENABLEDbooltrueEnable webhook batching
WEBHOOK_BATCHING_DURATIONu6450Batch window duration in ms

NATS Adapter

VariableTypeDefaultDescription
NATS_SERVERSstringnats://localhost:4222Comma-separated NATS server URLs
NATS_USERNAMEstringNATS username
NATS_PASSWORDstringNATS password
NATS_TOKENstringNATS auth token
NATS_CONNECTION_TIMEOUT_MSu645000Connection timeout in ms
NATS_REQUEST_TIMEOUT_MSu645000Request timeout in ms

CORS

VariableTypeDefaultDescription
CORS_ORIGINSstring*Comma-separated allowed origins
CORS_METHODSstringGET,POST,OPTIONSComma-separated allowed methods
CORS_HEADERSstringAuthorization,Content-Type,X-Requested-With,AcceptComma-separated allowed headers
CORS_CREDENTIALSbooltrueAllow credentials

Logging

VariableTypeDefaultDescription
LOG_COLORS_ENABLEDbooltrueEnable colored log output
LOG_INCLUDE_TARGETbooltrueInclude target module in logs

Cleanup (Async Disconnect Processing)

VariableTypeDefaultDescription
CLEANUP_ASYNC_ENABLEDbooltrueEnable async cleanup
CLEANUP_FALLBACK_TO_SYNCbooltrueFall back to synchronous cleanup if async fails
CLEANUP_QUEUE_BUFFER_SIZEusize50000Cleanup queue buffer size
CLEANUP_BATCH_SIZEusize25Disconnect batch size
CLEANUP_BATCH_TIMEOUT_MSu6450Max wait time to fill a batch in ms
CLEANUP_WORKER_THREADSstringautoWorker threads: auto or a number
CLEANUP_MAX_RETRY_ATTEMPTSu322Max retry attempts for failed cleanups

Cluster Health

VariableTypeDefaultDescription
CLUSTER_HEALTH_ENABLEDbooltrueEnable cluster health monitoring
CLUSTER_HEALTH_HEARTBEAT_INTERVALu6410000Heartbeat interval in ms
CLUSTER_HEALTH_NODE_TIMEOUTu6430000Node considered dead after this ms
CLUSTER_HEALTH_CLEANUP_INTERVALu6410000Dead node check interval in ms

Tag Filtering

VariableTypeDefaultDescription
TAG_FILTERING_ENABLEDboolfalseEnable tag-based filtering

WebSocket Buffer

VariableTypeDefaultDescription
WEBSOCKET_MAX_MESSAGESstring1000Max buffered messages per connection (none or 0 to disable)
WEBSOCKET_MAX_BYTESstring(disabled)Max buffered bytes per connection (none or 0 to disable)
WEBSOCKET_DISCONNECT_ON_BUFFER_FULLbooltrueDisconnect slow clients vs drop messages
WEBSOCKET_MAX_MESSAGE_SIZEusize67108864Max message size in bytes (64 MB)
WEBSOCKET_MAX_FRAME_SIZEusize16777216Max frame size in bytes (16 MB)
WEBSOCKET_WRITE_BUFFER_SIZEusize16384Write buffer size in bytes (16 KB)
WEBSOCKET_MAX_BACKPRESSUREusize1048576Max backpressure in bytes (1 MB)
WEBSOCKET_AUTO_PINGbooltrueEnable automatic pings
WEBSOCKET_PING_INTERVALu3230Ping interval in seconds
WEBSOCKET_IDLE_TIMEOUTu32120Idle timeout in seconds (0 disables)
WEBSOCKET_COMPRESSIONstringdisabledCompression mode: disabled, dedicated, shared, window256b, window1kb, window2kb, window4kb, window8kb, window16kb, window32kb
If you already provide config/config.json, only set environment variables you need to override per environment.
Copyright © 2026