Skip to main content

Configuration Overview

Gate uses a YAML configuration file to control all proxy settings including server routing, authentication, compression, forwarding modes, and more.

Config File Location

Gate looks for config.yml in the current working directory by default. You can specify a custom path:

Supported Formats

Gate supports multiple configuration formats:
  • YAML - .yml or .yaml (recommended)
  • JSON - .json
  • Environment Variables - Prefix with GATE_
You can mix formats by using a config file and overriding specific values with environment variables.

Generating Configuration Files

Gate includes built-in configuration templates. Generate them using:

Configuration Templates

Gate provides several configuration templates for different use cases:

Simple

Minimal configuration for basic proxy setups with just server routing

Full

Complete configuration with all options and detailed comments (recommended)

Lite

Lightweight reverse proxy mode for hostname-based routing

Bedrock

Cross-play configuration for Java and Bedrock Edition players

Basic Configuration Structure

Here’s a minimal working configuration:
config-simple.yml

Complete Configuration Example

A more complete configuration with commonly used options:
config.yml

Configuration Sections

Gate configuration is organized into logical sections:

Core Settings

string
default:"0.0.0.0:25565"
The address to bind for incoming Minecraft client connections
boolean
default:"true"
Whether to authenticate players with Mojang’s authentication servers. Set to false for offline/cracked servers (not recommended)
boolean
default:"false"
Enable debug logging for troubleshooting. Shows detailed packet and connection information

Server Configuration

  • servers - Register backend Minecraft servers
  • try - Define server connection order for login and fallback
  • forcedHosts - Route players based on connection hostname

Client Connection Settings

  • status - Configure server list ping response (MOTD, favicon, player count)
  • compression - Packet compression settings
  • forwarding - Player info forwarding to backend servers

Advanced Features

boolean
default:"false"
Allow players transferred from other hosts via the Transfer packet (Minecraft 1.20.5+)
boolean
default:"true"
Support BungeeCord plugin messaging channels. Disable if backend servers are untrusted
boolean
default:"true"
Register built-in proxy commands like /server and /glist
boolean
default:"false"
Whether players need permissions to execute built-in commands. Enable in production
boolean
default:"true"
Declare proxy commands to 1.13+ clients for tab completion
boolean
default:"true"
Enforce the public key security standard added in Minecraft 1.19

Timeouts

duration
default:"5s"
How long to wait when connecting to a backend server before timing out
duration
default:"30s"
How long to wait for data from a backend server before timing out. Increase for Forge servers
boolean
default:"true"
Attempt to reconnect players to another server when unexpectedly disconnected

Security Settings

boolean
default:"false"
Kick existing players when an online-mode player with the same name joins. Useful for mixed online/offline setups
boolean
default:"false"
Support HAProxy PROXY protocol for incoming connections. Don’t enable unless you know what this is

Shutdown Message

string
The disconnect message shown to players when the proxy shuts down. Supports both legacy § format and modern JSON text components

Rate Limiting (Quota)

Protect your proxy from connection flooding:
object
Rate limit new connections per IP block
object
Rate limit login attempts per IP block

Query Protocol

Support for GameSpy 4 (Minecraft query protocol) on UDP:
boolean
default:"false"
Enable query protocol support
integer
default:"25577"
UDP port for query protocol
boolean
default:"false"
Show plugin information in query responses

Authentication

Customize Mojang authentication:
string
Base URL for Mojang session server. Customize for alternative authentication serversDefault: https://sessionserver.mojang.com/session/minecraft/hasJoined

Configuration Validation

Gate validates your configuration on startup and reports:
  • Errors - Critical issues that prevent startup (invalid addresses, unknown forwarding modes)
  • Warnings - Non-critical issues you should be aware of (offline mode, no servers configured)

Live Config Reload

Gate automatically watches for configuration file changes and reloads when detected. You can also manually reload:
Some settings require a full restart:
  • bind address
  • lite.enabled
  • bedrock.enabled
See Configuration Reload for details.

Environment Variables

Override configuration with environment variables using the GATE_ prefix:

Best Practices

Always set onlineMode: true in production to verify players with Mojang. Offline mode allows anyone to join with any username.
Configure forwarding to pass real player IPs and UUIDs to backend servers. Use velocity mode for best security.
Enable quota settings to protect against connection floods and login spam attacks.
Choose clear server names like lobby, survival, creative instead of server1, server2.
Increase readTimeout to 60s or more if using Forge/modded servers which can be slow to respond.
Use environment variables for sensitive values like velocitySecret instead of committing them to config files.

Next Steps

Servers

Configure backend servers and connection order

Forced Hosts

Route players based on connection hostname

Status Ping

Customize MOTD, favicon, and server list appearance

Forwarding

Set up player info forwarding to backend servers