Skip to main content

Overview

When running multiple proxy instances (BungeeCord, Velocity, etc.), Redis enables automatic synchronization of maintenance status and whitelisted players across all connected proxies. This eliminates the need to manually update each proxy when making changes.

Why Use Redis?

Without Redis, each proxy instance maintains its own independent state:
  • Enabling maintenance on one proxy doesn’t affect others
  • Whitelisted players must be added to each proxy separately
  • Server-specific maintenance settings aren’t synchronized
With Redis enabled:
  • All proxies share the same maintenance status (global and per-server)
  • Whitelist changes are instantly synchronized across all proxies
  • Configuration changes propagate automatically

Redis Configuration

boolean
default:"false"
Enables Redis synchronization across multiple proxy instances.
Note the typo in the config key: enables instead of enabled. This is the actual key used in config.yml.
string
default:"redis://localhost:6379"
Redis connection URI. Must be properly formatted according to the Redis URI specification.
Ensure your Redis instance is properly secured with authentication and network restrictions.

Configuration Example

URI Format

The Redis URI follows this format:

URI Components

URI Examples

Basic Local Connection

Password-Protected Redis

SSL/TLS Connection with Authentication

Remote Redis with Custom Database

Redis 6.0+ with ACL Username

Setting Up Redis

1. Install Redis

Ubuntu/Debian

CentOS/RHEL

Docker

2. Secure Redis

Never expose Redis to the public internet without proper security measures. An unsecured Redis instance can be exploited.
Edit your Redis configuration file (usually /etc/redis/redis.conf):
Restart Redis after making changes:

3. Configure Network Access

If your proxies are on different servers, configure firewall rules to allow Redis access:

4. Update Plugin Configuration

On each proxy instance, update the configuration:

5. Reload Plugin

Reload the plugin on each proxy:

What Gets Synchronized

When Redis is enabled, the following data is synchronized across all proxy instances:

Global Maintenance Status

Server-Specific Maintenance

Whitelisted Players

Timer State

Active timers are synchronized:

Multi-Proxy Setup Example

Let’s say you have 3 proxy instances:
  • Proxy 1: proxy1.example.com (10.0.0.10)
  • Proxy 2: proxy2.example.com (10.0.0.11)
  • Proxy 3: proxy3.example.com (10.0.0.12)
  • Redis Server: redis.example.com (10.0.0.100)

Redis Configuration

On the Redis server:

Plugin Configuration

On all three proxies, use the same configuration:

Workflow

  1. Enable maintenance on Proxy 1:
  2. All three proxies instantly enter maintenance mode
  3. Add a whitelisted player on Proxy 2:
  4. BuilderName can join through any of the three proxies
  5. Disable maintenance on Proxy 3:
  6. All three proxies exit maintenance mode

Troubleshooting

Connection Issues

If proxies cannot connect to Redis:
  1. Verify Redis is running:
  2. Test connectivity:
  3. Check firewall rules:
  4. Review plugin logs for Redis connection errors

Authentication Errors

If you see authentication errors:
  1. Verify the password in your URI matches Redis configuration
  2. Check for special characters that need URL encoding
  3. Ensure the Redis user has appropriate permissions (Redis 6.0+)

Synchronization Delays

If changes don’t propagate instantly:
  1. Check network latency between proxies and Redis
  2. Verify all proxies are connected to the same Redis instance
  3. Ensure all proxies have Redis enabled in their config
  4. Try reloading the plugin: /maintenance reload

SSL/TLS Issues

If using rediss:// and experiencing connection problems:
  1. Verify Redis is configured with SSL/TLS support
  2. Check SSL certificate validity
  3. Ensure the Java version supports the SSL/TLS version used by Redis
  4. Try connecting without SSL first to isolate the issue

Performance Considerations

  • Redis synchronization adds minimal latency (typically less than 10ms on LAN)
  • The plugin uses pub/sub for real-time updates
  • Whitelist changes are batched to reduce network traffic
  • Redis memory usage is negligible (typically less than 1MB)

Security Best Practices

  1. Always use authentication: Set a strong requirepass in Redis
  2. Use SSL/TLS: Enable rediss:// for production environments
  3. Restrict network access: Use firewall rules to limit connections
  4. Use Redis ACLs: Create dedicated users with minimal permissions (Redis 6.0+)
  5. Regular updates: Keep Redis updated to the latest stable version
  6. Monitor access: Enable Redis logging and monitor for unauthorized access
For production environments, consider using Redis Sentinel or Redis Cluster for high availability.