Logo

Velocity Proxy Setup Guide for Minecraft Server

Velocity Proxy Setup Guide for Minecraft Server

This guide walks you through configuring a Velocity proxy for your Minecraft server network.

Velocity Proxy Setup Guide for Minecraft Server

Access your Wisp panel: https://panel.verycloud.fr/

Complete documentation: https://verycloud.fr/docs

What is Velocity?

Velocity is a modern, performant, and secure Minecraft proxy that allows you to:

  • Connect multiple Minecraft servers together
  • Allow players to move between servers without disconnecting
  • Reduce load on individual servers
  • Centralize player authentication
  • Improve security with modern forwarding
  • Full support for Minecraft 1.7.2 to 1.21+

Why Use Velocity?

Advantages:

  • Performance: Written in Java with modern optimizations
  • Security: Modern forwarding to protect backend servers
  • Compatibility: Supports Paper, Spigot, Bukkit, Fabric, Forge
  • Flexibility: Easy configuration with TOML files
  • Plugins: Growing plugin ecosystem

Velocity Network Architecture

Players → Velocity Proxy (Port 25565) → Backend Servers
                                        ├─ Lobby (Port 25566)
                                        ├─ Survival (Port 25567)
                                        ├─ Creative (Port 25568)
                                        └─ Minigames (Port 25569)

Prerequisites

Before starting, ensure you have:

  • Access to your VeryCloud Wisp panel
  • At least 2 Minecraft servers on Wisp:
    • 1 server for Velocity (proxy)
    • 1+ backend server(s) (Paper, Spigot, etc.)
  • Wisp login credentials
  • SSH connection or file manager access

Part 1: Installing Velocity Server

Step 1: Create a New Server for Velocity

  1. Log in to https://panel.verycloud.fr/
  2. In the dashboard, click Create Server (if you haven't created the Velocity server yet)
  3. Select:
    • Type: Java (Velocity)
    • Version: Velocity (latest version)
    • RAM: Minimum 512 MB (1 GB recommended for 50+ players)
    • Name: "Proxy-Velocity" or similar
  4. Click Create

Step 2: Select Velocity Server

If you already have a server dedicated to Velocity:

  1. In your server list, click on your Velocity server
  2. You arrive at the server console

Step 3: Downloading Velocity

Via Wisp panel:

  1. Go to Files in the left menu
  2. Check that the velocity.jar file is present
  3. If not, download it:

Step 4: First Velocity Startup

  1. Return to Console
  2. Click Start
  3. Velocity will generate configuration files
  4. Wait for the message: Done! Velocity is ready to accept connections.
  5. Click Stop to stop the server

Part 2: Velocity Configuration

Step 1: Access Configuration File

  1. In Wisp panel, go to Files
  2. Locate and open the velocity.toml file
  3. The file opens in the integrated editor

Step 2: Basic Configuration

Here are the important sections to configure:

Network Configuration

# Bind configuration (generally don't modify)
bind = "0.0.0.0:25577"

# Server MOTD (message displayed in server list)
motd = "&3Welcome to My Minecraft Network\n&bPowered by Velocity"

# Maximum number of players
show-max-players = 100

# Protocol version to announce
# Leave empty for auto-detection
announce-forge = false

Note: Port 25577 is the internal port. Wisp will automatically map to external port (usually 25565).

Backend Server Configuration

This is the most important section. Add your backend servers:

[servers]
# Format: server-name = "address:port"

# Lobby server (default server)
lobby = "127.0.0.1:25566"

# Survival server
survival = "127.0.0.1:25567"

# Creative server
creative = "127.0.0.1:25568"

# Minigames server
minigames = "127.0.0.1:25569"

# You can add as many servers as needed

Important:

  • If your servers are on the same VPS as Velocity, use 127.0.0.1:PORT
  • If your servers are on different VPS, use public IP: 123.45.67.89:PORT

Connection Order (Try List)

Define player connection order:

[servers]
# ... your servers above ...

try = [
  "lobby",
  "survival"
]

Players will attempt to connect to lobby first, then to survival if lobby is unavailable.

Forwarding Configuration

CRITICAL for security:

[forwarding]
# Forwarding mode
# Options: "none", "legacy", "modern"
mode = "modern"

# Secret key for modern forwarding
# GENERATE A UNIQUE AND SECURE KEY
secret = "YOUR_SECRET_KEY_HERE"

# Maximum buffer size
forwarding-secret-file = ""

Generating a secret key:

Use a random key generator. Command line example:

openssl rand -base64 32

Or use an online generator: https://generate.plus/en/base64

Key example: dXJhbmRvbWtleWhlcmVmb3JzZWN1cml0eXB1cnBvc2Vz

Step 3: Advanced Configuration (Optional)

Custom Messages

[messages]
# Kick message when no server is available
no-available-servers = "&cNo server available. Try again later."

# Message when already connected to server
already-connected = "&cYou are already connected to this server!"

# Connection denied message
connection-denied = "&cConnection denied. Contact an administrator."

Query Configuration

[query]
# Enable Query protocol
enabled = true

# Port for queries (usually same as game port)
port = 25577

# Show plugins
show-plugins = false

Advanced Configuration

[advanced]
# Network compression size
compression-threshold = 256

# Compression level (1-9, higher = more CPU)
compression-level = -1

# Connection timeout (milliseconds)
connection-timeout = 5000

# Read timeout
read-timeout = 30000

# Enable HAProxy protocol
haproxy-protocol = false

# Enable TCP fast open
tcp-fast-open = false

# Enable BungeeCord plugin messaging channel
bungee-plugin-message-channel = true

# Show ping requests in server list
show-ping-requests = false

# Announce errors in console
announce-proxy-commands = true

# Enable player connection logging
log-player-connections = true

Step 4: Save Configuration

  1. After modifying velocity.toml, click Save at top right
  2. Restart Velocity server via console: Restart

Part 3: Backend Server Configuration

Each backend server (Paper, Spigot, etc.) must be configured to work with Velocity.

Step 1: Paper/Spigot Configuration

For each backend server, you must:

A. Configure Online Mode

  1. In Wisp panel, select your backend server (e.g., Lobby)
  2. Go to Files
  3. Open server.properties
  4. Modify this line:
online-mode=false

Important: Set online-mode=false on all backend servers!

  1. Save

B. Configure Velocity Forwarding (Paper)

If using Paper (recommended):

  1. In backend server, go to Files
  2. Open file config/paper-global.yml (or paper.yml for older versions)
  3. Find the proxies section and modify:
proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: "YOUR_SECRET_KEY_HERE"

Important: Use the same secret key as defined in velocity.toml!

  1. Save

C. Configure BungeeCord Mode (Spigot)

If using Spigot or Bukkit:

  1. In backend server, open spigot.yml
  2. Modify:
settings:
  bungeecord: true
  1. Save

Note: Spigot uses BungeeCord legacy mode. Modern forwarding is only available on Paper.

Step 2: Port Configuration

Ensure each backend server listens on a different port:

  1. In server.properties of each backend server:
# Lobby
server-port=25566

# Survival
server-port=25567

# Creative
server-port=25568
  1. These ports must match those defined in velocity.toml

Step 3: Restart Backend Servers

For each backend server:

  1. Go to Console
  2. Click Restart
  3. Verify it starts correctly

Part 4: Essential Velocity Plugins

Installing Plugins

  1. Download plugins from:
  2. In Wisp panel, Velocity server, go to Files
  3. Navigate to plugins folder
  4. Upload the plugin .jar file
  5. Restart Velocity

LuckPerms (Permissions)

Permission management across the entire network.

Installation:

  1. Download from: https://luckperms.net/download
  2. Install on Velocity AND all backend servers
  3. Configure shared database (MySQL recommended)

Configuration:

# In LuckPerms config.yml
storage-method: mysql

data:
  address: localhost:3306
  database: luckperms
  username: root
  password: password

LibertyBans (Moderation)

Centralized ban system.

Download: https://github.com/A248/LibertyBans

Installation:

  1. Install on Velocity only
  2. Configure database
  3. Use commands /ban, /mute, etc.

VelocityTab (Tab List)

Custom player list display.

Download: https://github.com/WiIIiam278/Velocitab

Installation:

  1. Install on Velocity
  2. Configure in plugins/velocitab/config.yml

LuckPerms Velocity (Configuration)

Configuration in plugins/LuckPerms/config.yml:

server: velocity

storage-method: mysql

data:
  address: your-db-host:3306
  database: luckperms
  username: luckperms_user
  password: your_password
  
  # Synchronization between servers
  sync-minutes: 3

Part 5: Commands and Management

Velocity Commands (Console or In-Game)

Basic Commands

/velocity dump
- Generate diagnostic dump

/velocity plugins
- List installed plugins

/velocity version
- Display Velocity version

/velocity reload
- Reload configuration (some changes require restart)

Player Commands

/server <name>
- Connect to specific server

/server
- View available servers

Permissions

Configure permissions with LuckPerms:

# Permission to use /server
velocity.command.server

# Permission to see all servers
velocity.command.server.list

# Admin permission
velocity.admin

Part 6: Network Security

Step 1: Firewall on Backend Servers

CRITICAL: Backend servers should NOT be directly accessible from Internet.

UFW Configuration (if applicable)

On each backend server:

# Block external access to server port
ufw deny 25566/tcp

# Allow only Velocity (same machine)
ufw allow from 127.0.0.1 to any port 25566

Note: With Wisp, this can be managed via port allocations.

Step 2: Wisp Allocation Configuration

  1. In Wisp, for each backend server:
  2. Go to Network
  3. Ensure backend ports are not exposed publicly
  4. Only Velocity port should be accessible from outside

Step 3: Modern Forwarding

Velocity's modern forwarding encrypts player information, preventing IP spoofing.

Verification:

In velocity.toml:

[forwarding]
mode = "modern"
secret = "your-secret-key"

In Paper paper-global.yml:

proxies:
  velocity:
    enabled: true
    secret: "your-secret-key"

Keys must match exactly!

Part 7: Connection and Testing

Step 1: Starting Servers

  1. Start all backend servers first:
    • Lobby
    • Survival
    • Creative
    • etc.
  2. Wait for them to fully start
  3. Start Velocity last

Step 2: Console Verification

Velocity console should display:

[INFO] Listening on /0.0.0.0:25577
[INFO] Done! Velocity is ready to accept connections.

Step 3: Connect to Network

  1. Launch Minecraft
  2. Add server with:
    • Address: your-vps-ip:25565 (or configured port)
    • Name: Your network name
  3. Connect
  4. You should arrive at default server (lobby)

Step 4: Navigation Test

Test the /server command:

/server

You should see list of all your servers.

Test connection to another server:

/server survival

You should be teleported to survival server without disconnecting.

Part 8: Troubleshooting

Problem: "Can't connect to server"

Possible causes:

  1. Velocity not started
    • Solution: Check Velocity console
  2. Incorrect port
    • Solution: Check allocations in Wisp
  3. Firewall blocking connection
    • Solution: Check firewall rules

Problem: "Connection but immediate kick"

Possible causes:

  1. No backend server available
    • Solution: Check that backend servers are started
    • Check Velocity logs to see if it can connect to backends
  2. Bad forwarding configuration
    • Solution: Verify secret keys match
    • Verify online-mode=false on backends
  3. Incorrect ports in velocity.toml
    • Solution: Verify ports match backend servers

Problem: "Can't connect to backend server"

Solutions:

  1. Verify backend server is started:
    • In Wisp, go to backend server
    • Check console
  2. Verify ports in velocity.toml:
    lobby = "127.0.0.1:25566"
    

    Port must match server-port in backend's server.properties
  3. Check Velocity logs:
    [ERROR] Unable to connect to server lobby
    

Problem: "Player UUID mismatch"

Cause: Incorrect forwarding configuration

Solutions:

  1. Verify online-mode=false on all backends
  2. Check forwarding configuration:
    • Velocity: velocity.toml[forwarding]secret
    • Paper: paper-global.ymlproxies.velocity.secret
  3. Secrets must be identical
  4. Restart all servers after modification

Problem: "Can't use /server command"

Cause: Missing permissions

Solutions:

  1. Install LuckPerms
  2. Give permission:
    /lp user <player> permission set velocity.command.server true
    
  3. Or give to all players:
    /lp group default permission set velocity.command.server true
    

Part 9: Optimization and Performance

JVM Configuration for Velocity

In Wisp, for your Velocity server:

  1. Go to Startup
  2. Modify JVM arguments:
-Xms512M -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch

Backend Server Configuration

For each Paper backend server:

In paper-global.yml:

# Network optimizations
network:
  kick-on-oversized-packet-exception: true
  
# Chunk optimizations
chunk-loading:
  min-load-radius: 2
  max-concurrent-sends: 2
  
# Disable unnecessary network features
feature-seeds:
  generate-random-seeds-for-all: true

Performance Monitoring

Use these plugins to monitor:

  1. Spark: Profiling and monitoring
  2. Tab: TPS and performance display

Part 10: Advanced Configuration

Shared Database

To share data between servers (inventories, economy, etc.):

MySQL Configuration

  1. Get a MySQL server (VeryCloud can provide)
  2. Create a database
  3. Configure each plugin to use MySQL:

LuckPerms:

storage-method: mysql
data:
  address: mysql.example.com:3306
  database: luckperms
  username: luckperms_user
  password: password

Multiple Lobby System

For multiple lobbies with load balancing:

In velocity.toml:

[servers]
lobby1 = "127.0.0.1:25566"
lobby2 = "127.0.0.1:25570"
lobby3 = "127.0.0.1:25571"
survival = "127.0.0.1:25567"

try = [
  "lobby1",
  "lobby2", 
  "lobby3"
]

Velocity will automatically distribute players among available lobbies.

Maintenance Messages

To display custom message during maintenance:

In velocity.toml:

[forced-hosts]
"maintenance.yourserver.com" = [
  "maintenance"
]

[servers]
maintenance = "127.0.0.1:25580"

Create a "maintenance" server that displays a message.

Part 11: Compatible Backend Plugins

Synchronization Plugins

These plugins work well with Velocity:

  1. MySQLPlayerDataBridge - Inventory sync
  2. RedisBungee - Redis synchronization
  3. SkinsRestorer - Skin sync
  4. BungeeGuard - Additional security
  5. MultiChat - Global chat between servers

Installing Backend Plugins

For plugins that must communicate via Velocity:

  1. Install plugin on all backend servers
  2. Configure shared MySQL database
  3. Restart all servers

Part 12: Backup and Maintenance

Backup Script

Create regular backups:

Velocity Configuration:

# Backup velocity.toml
cp velocity.toml velocity.toml.backup

Via Wisp:

  1. Go to Backups
  2. Create manual backup
  3. Configure automatic backups

Updating Velocity

  1. Download new Velocity version
  2. Stop Velocity server
  3. Replace velocity.jar with new version
  4. Restart server
  5. Check logs for errors

Regular Maintenance

Daily:

  • Check error logs
  • Monitor RAM/CPU usage
  • Check player connections

Weekly:

  • Backup configurations
  • Update plugins
  • Clean old logs

Monthly:

  • Update Velocity and backend servers
  • Review permissions and configurations
  • Test backups

VeryCloud Support

If you encounter difficulties:

Documentation: https://verycloud.fr/docs

Wisp Panel: https://panel.verycloud.fr/

Technical Support:

  • Open ticket from VeryCloud customer area
  • Contact support via Discord
  • Consult online knowledge base

When contacting support, provide:

  • Your Velocity server name
  • Console logs (last 100 lines)
  • Your velocity.toml file (mask secrets)
  • Detailed problem description

Additional Resources

Official Documentation

Community

Plugins and Resources

Conclusion

Your Minecraft network with Velocity is now configured and operational! You can now:

  • Connect multiple servers together
  • Allow players to navigate between servers
  • Centralize permission management
  • Improve security with modern forwarding
  • Scale your network easily

Key points to remember:

  • Modern forwarding is essential for security
  • Backend servers must have online-mode=false
  • Velocity must start after backend servers
  • Backup configurations regularly
  • Monitor performance and logs

Happy gaming and good administration of your Minecraft network with VeryCloud!

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members