Skip to main content
Before deploying Gate to production, ensure you’ve completed all items in this checklist to maintain security, reliability, and optimal performance.

Security Configuration

Authentication & Player Security

1

Enable online mode

Always use online mode in production to authenticate players with Mojang.
config.yml
Setting onlineMode: false allows unauthenticated players and is a major security risk.
2

Configure forwarding mode

Set up secure player information forwarding to backend servers.
config.yml
Available modes:
  • velocity - Modern, secure (recommended)
  • bungeeguard - Token-based security
  • legacy - BungeeCord compatibility (less secure)
  • none - No forwarding (not recommended)
Store secrets in environment variables, never commit them to version control.
3

Generate strong secrets

Create cryptographically secure secrets for forwarding.
Set as environment variable:
4

Enable force key authentication

Enforce Minecraft 1.19+ security standards.
config.yml
5

Require permissions for commands

Prevent unauthorized access to proxy commands.
config.yml
6

Disable untrusted plugin channels

Protect against malicious backend servers.
config.yml

Network Security

1

Enable rate limiting

Protect against DDoS and brute force attacks.
config.yml
2

Configure proxy protocol (if behind load balancer)

Preserve real client IP addresses.
config.yml
Only enable if you’re behind a trusted load balancer. Enabling this without a load balancer allows IP spoofing.
3

Secure API endpoint

If using the HTTP API, bind to localhost or use proper authentication.
config.yml
For external access, use a reverse proxy with authentication:
nginx.conf
4

Configure backend server addresses

Use internal network addresses for backend servers.
config.yml
Backend servers should never be directly exposed to the internet.
5

Disable backend server online mode

Backend servers should trust Gate’s forwarding.
server.properties
Configure backend to accept forwarded player data based on your forwarding mode.

Performance Optimization

1

Optimize compression settings

Balance between bandwidth and CPU usage.
config.yml
Recommendations:
  • High bandwidth, limited CPU: level: 0 (no compression)
  • Limited bandwidth: level: 6 (higher compression)
  • Balanced: level: -1 (default)
2

Configure timeouts

Adjust for your network conditions.
config.yml
3

Enable automatic reconnection

Improve player experience during server issues.
config.yml
4

Optimize server try list

Order servers by priority and capacity.
config.yml

Monitoring & Observability

1

Enable health checks

Configure gRPC health service for Kubernetes/load balancers.
config.yml
2

Enable OpenTelemetry

Export metrics and traces to your observability platform.
docker-compose.yml
3

Configure logging

Disable debug mode in production.
config.yml
4

Set up alerting

Monitor critical metrics:
  • Player connection failures
  • Backend server availability
  • High latency or packet loss
  • Resource usage (CPU, memory)
  • Error rates

High Availability

1

Deploy multiple instances

Run at least 2 Gate instances for redundancy.
kubernetes
2

Configure load balancer health checks

Use the gRPC health service endpoint.
3

Set up resource limits

Prevent resource exhaustion.
kubernetes
4

Configure pod disruption budgets

Ensure minimum availability during updates.
5

Enable graceful shutdown

Configure custom shutdown message.
config.yml

Configuration Validation

1

Test configuration locally

Validate before deploying.
2

Verify server connectivity

Ensure all backend servers are reachable.
3

Test player authentication

Verify online mode and forwarding work correctly.
  1. Connect with a real Minecraft account
  2. Verify UUID is correct on backend
  3. Check player skin loads properly
  4. Test server switching
4

Load testing

Test with realistic player counts.

Backup & Disaster Recovery

1

Backup configuration

Version control your config files.
2

Document secrets

Store secrets securely (e.g., HashiCorp Vault, AWS Secrets Manager).
3

Create rollback plan

Document steps to revert to previous version.
  1. Keep previous Docker image tags
  2. Maintain config backups
  3. Test rollback procedure
4

Monitor deployment

Watch for issues after deployment.

Pre-Launch Checklist

Before going live, verify:
  • Online mode is enabled
  • Forwarding mode is configured with strong secret
  • Rate limiting is enabled
  • Backend servers are configured correctly
  • Health checks are working
  • Monitoring and alerting are set up
  • Multiple instances are running (HA)
  • Load balancer is configured
  • Resource limits are set
  • Debug mode is disabled
  • Configuration is backed up
  • Rollback procedure is documented
  • Team is trained on operations
  • Incident response plan is ready

Post-Deployment

1

Monitor for 24-48 hours

Watch metrics closely after launch:
  • Player connection success rate
  • Latency and performance
  • Error logs
  • Resource usage
2

Gather feedback

Monitor community channels for issues:
  • Connection problems
  • Performance complaints
  • Feature requests
3

Document operations

Create runbooks for:
  • Common issues and fixes
  • Scaling procedures
  • Update process
  • Emergency procedures
4

Plan regular maintenance

Schedule:
  • Weekly: Review metrics and logs
  • Monthly: Update to latest Gate version
  • Quarterly: Security audit
  • Annually: Architecture review

Common Production Issues

Issue: Players can’t connect

Checklist:
  • Verify Gate is running: docker ps or kubectl get pods
  • Check port is open: nc -zv <gate-ip> 25565
  • Review logs for errors
  • Verify firewall rules
  • Check rate limiting hasn’t blocked legitimate players

Issue: Backend server connection failed

Checklist:
  • Verify backend server is running
  • Check server address in config
  • Test network connectivity from Gate to backend
  • Verify forwarding is configured on backend
  • Check backend server logs

Issue: Players have wrong UUIDs

Checklist:
  • Verify online mode is enabled on Gate
  • Check forwarding mode matches backend configuration
  • Ensure forwarding secret matches on all servers
  • Verify backend server is in offline mode

Issue: High memory usage

Solutions:
  • Review compression settings
  • Check for connection leaks
  • Increase resource limits if needed
  • Monitor for DDoS attacks
  • Review quota settings

Security Incident Response

If you suspect a security breach:
  1. Immediate actions:
    • Review access logs
    • Check for unauthorized configuration changes
    • Verify forwarding secrets haven’t been compromised
  2. Containment:
    • Rotate forwarding secrets if compromised
    • Update configuration on all servers
    • Review and tighten security settings
  3. Recovery:
    • Restore from known-good configuration
    • Verify system integrity
    • Monitor for continued suspicious activity
  4. Post-incident:
    • Document what happened
    • Update security procedures
    • Train team on new procedures

Next Steps

Monitoring Setup

Configure metrics, logging, and health checks

Configuration Reference

Detailed configuration options