What is a Minecraft Proxy?
BungeeCord and Velocity are proxy servers that sit in front of multiple Minecraft servers, allowing players to switch between them seamlessly. This enables server networks with hub servers, survival worlds, minigame servers, and more.
Velocity vs BungeeCord
- Velocity: Modern, better performance, Paper-recommended, active development
- BungeeCord: Older, wider plugin ecosystem, more community resources
- Recommendation: Use Velocity for new networks
Setting Up Velocity
mkdir -p /opt/velocity && cd /opt/velocity
# Download latest Velocity
wget https://api.papermc.io/v2/projects/velocity/versions/3.3.0-SNAPSHOT/builds/latest/downloads/velocity-3.3.0-SNAPSHOT-latest.jar -O velocity.jar
# Start once to generate config
java -Xms512M -Xmx512M -jar velocity.jar
Configure velocity.toml
# velocity.toml
bind = "0.0.0.0:25565"
motd = "My Server Network"
max-players = 500
online-mode = true
player-info-forwarding-mode = "modern"
[servers]
hub = "127.0.0.1:25566"
survival = "127.0.0.1:25567"
creative = "127.0.0.1:25568"
minigames = "127.0.0.1:25569"
try = ["hub"]
[forced-hosts]
"survival.example.com" = ["survival"]
"creative.example.com" = ["creative"]
Configure Backend Servers
# Each backend Paper server needs:
# paper-global.yml
proxies:
velocity:
enabled: true
online-mode: false
secret: "your-forwarding-secret"
# server.properties for each backend
server-port=25566 # Different port per server
online-mode=false # Velocity handles auth
Running All Servers
# Systemd services for each
for server in velocity hub survival creative minigames; do
cat > /etc/systemd/system/mc-$server.service << EOF
[Unit]
Description=Minecraft $server
After=network.target
[Service]
WorkingDirectory=/opt/$server
ExecStart=/opt/$server/start.sh
User=minecraft
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
done
systemctl enable --now mc-velocity mc-hub mc-survival mc-creative mc-minigames
Firewall
# Only expose the proxy port
ufw allow 25565/tcp
# Backend servers listen on localhost only
Essential Plugins
- LuckPerms: Cross-server permissions
- LimboAuth: Authentication plugin for Velocity
- Geyser: Allow Bedrock players to join
- ViaVersion: Support multiple MC versions
- MiniMessage: Modern text formatting