Overview
Redis provides:- Distributed Sessions - Share user sessions across multiple instances
- WebSocket State - Synchronized real-time connections across workers
- Configuration Sync - Propagate runtime config changes to all nodes
- Task Coordination - Distributed task management and pub/sub
- Rate Limiting - Centralized rate limit tracking
- Token Revocation - Shared JWT token blacklist
Prerequisites
- Redis server (standalone, cluster, or Sentinel)
- Load balancer (nginx, HAProxy, AWS ALB, etc.)
- Multiple Open WebUI instances
Redis Configuration
Standalone Redis
Basic Redis connection:Redis with Authentication
Redis with TLS/SSL
Redis Cluster
For Redis Cluster deployments:Redis Sentinel
For high-availability Redis Sentinel:Session Management
Redis-backed sessions enable stateless application servers:Session Configuration
WebSocket Scaling
Redis enables WebSocket connections across multiple instances:- Real-time chat updates synchronized
- Task status notifications broadcast
- Multi-node pub/sub messaging
REDIS_URL is configured.
Persistent Configuration
Enable runtime configuration updates across all instances:- Saved to database
- Published to Redis
- Applied to all running instances
Docker Compose Example
Multi-Instance Deployment with Redis
Nginx Load Balancer Configuration
nginx.conf:
Cloud Deployments
AWS with Application Load Balancer
- Target Group: Multiple Open WebUI instances
- Health Check:
/healthendpoint - Stickiness: Not required (Redis sessions)
- WebSocket: Enable WebSocket upgrade headers
Kubernetes with Ingress
Redis High Availability
Redis Sentinel
For production deployments with automatic failover:sentinel.conf:
Monitoring and Health Checks
Health Check Endpoint
Redis Connection Check
Monitor Redis Keys
Troubleshooting
Redis Connection Failures
Problem: Cannot connect to Redis Check:Session Loss
Problem: Users logged out frequently Check:- Redis is running and accessible
ENABLE_STAR_SESSIONS_MIDDLEWARE=trueis setREDIS_URLis correctly configured- Redis has sufficient memory (check
INFO memory)
WebSocket Disconnections
Problem: Real-time features not working Check:- Load balancer supports WebSocket upgrades
- Nginx:
proxy_set_header Upgrade $http_upgrade; - ALB: Enable WebSocket support
- Redis pub/sub is functioning
Configuration Not Syncing
Problem: Config changes not applied to all instances Check:ENABLE_PERSISTENT_CONFIG=trueon all instances- All instances use same
REDIS_URL - Redis pub/sub channels working:
redis-cli PUBSUB CHANNELS
Performance Tuning
Redis Optimization
Connection Pooling
Open WebUI automatically manages Redis connection pools. Adjust if needed:Implementation Details
- Redis utilities:
backend/open_webui/utils/redis.py - Session management:
starsessions[redis]==2.2.1 - Task coordination:
backend/open_webui/tasks.py - Configuration sync:
backend/open_webui/config.py:228-287 - Rate limiting:
backend/open_webui/utils/rate_limit.py
Security Best Practices
Next Steps
- Observability - Monitor with OpenTelemetry
- RBAC - Configure access control
- Enterprise Overview - Full enterprise features