Guide Velocity configuration and setup guide

Overwrite

New member
Sep 10, 2022
2
1
3
⦁ Point 1 - Install and run
There should be no problems here, because here the process is similar to installing a regular core for a server or a bungee.
1) Download Velocity from the Papermc website.
2) Put the one you downloaded .jar file to a specific folder, then create a file in it start.bat (start.sh if linux) , in which write the following: java -Xmx2G -Xms2G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar (Note. You will need Java version 11 or higher!)
3) Now run it. After that, wait until all folders and files are created and after a message like "Done (2,2s)!" close the console window that opens. Run it again after full configuration.

⦁ Point 2 - Velocity setting
Velocity has one configuration file - velocity.toml. It can be opened using any text editor. (I prefer Notepad++)
YAML:
# Config version. Do not change this
config-version = "2.5"

# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577.
bind = "0.0.0.0:25577"

# What should be the MOTD? This gets displayed when the player adds your server to
# their server list. Legacy color codes and JSON are accepted.
motd = "&#09add3A Velocity Server"

# What should we display for the maximum number of players? (Velocity does not support a cap
# on the number of players online.)
show-max-players = 500

# Should we authenticate players with Mojang? By default, this is on.
online-mode = true

# Should the proxy enforce the new public key security standard? By default, this is on.
force-key-authentication = true

prevent-client-proxy-connections = false

player-info-forwarding-mode = "NONE"

forwarding-secret-file = "forwarding.secret"

# Announce whether or not your server supports Forge. If you run a modded server, we
# suggest turning this on.
announce-forge = false

# If enabled (default is false) and the proxy is in online mode, Velocity will kick
# any existing player who is online if a duplicate connection attempt is made.
kick-existing-players = false

ping-passthrough = "DISABLED"

# If not enabled (default is true) player IP addresses will be replaced by <ip address withheld> in logs
enable-player-address-logging = true

[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
lobby = "127.0.0.1:30066"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"

# In what order we should try servers when a player logs in or is kicked from a server.
try = [
  "lobby"
]

[forced-hosts]
# Configure your forced hosts here.
"lobby.example.com" = [
  "lobby"
]
"factions.example.com" = [
  "factions"
]
"minigames.example.com" = [
  "minigames"
]

[advanced]
# How large a Minecraft packet has to be before we compress it. Setting this to zero will
# compress all packets, and setting it to -1 will disable compression entirely.
compression-threshold = 256

# How much compression should be done (from 0-9). The default is -1, which uses the
# default level of 6.
compression-level = -1

# How fast (in milliseconds) are clients allowed to connect after the last connection? By
# default, this is three seconds. Disable this by setting this to 0.
login-ratelimit = 3000

# Specify a custom timeout for connection timeouts here. The default is five seconds.
connection-timeout = 5000

# Specify a read timeout for connections here. The default is 30 seconds.
read-timeout = 30000

# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then
# don't enable it.
haproxy-protocol = false

# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
tcp-fast-open = false

# Enables BungeeCord plugin messaging channel support on Velocity.
bungee-plugin-message-channel = true

# Shows ping requests to the proxy from clients.
show-ping-requests = false

failover-on-unexpected-server-disconnect = true

# Declares the proxy commands to 1.13+ clients.
announce-proxy-commands = true

# Enables the logging of commands
log-command-executions = false

# Enables logging of player connections when connecting to the proxy, switching servers
# and disconnecting from the proxy.
log-player-connections = true

[query]
# Whether to enable responding to GameSpy 4 query responses or not.
enabled = false

# If query is enabled, on what port should the query protocol listen on?
port = 25577

# This is the map name that is reported to the query services.
map = "Velocity"

# Whether plugins should be shown in query response by default or not
show-plugins = false

Now let's go to the setup.
First of all, let's decide on the type of "forwarding"
Actually here I am ready to give you advice. If your server versions is 1.13 or newer, then as indicated, use the player-info-forwarding-mode = "modern" mode.
If your server version is 1.12 and below, you are STRONGLY recommended to use the player-info-forwarding-mode = "bungeeguard" mode.
Specify this value according to what is suitable for you.
Next, we need to come up with a key and specify it in the file that is specified in the column forwarding-secret = "forwarding.secret" If you are using version 1.13+, then this key will need to be set in paper.yml by finding the velocity-support field, then activating it by setting enabled: true, then finding the secret: field, the default: field in it, and inserting the key you invented into quotes. If you use versions 1.12 and below, you will need to download the BungeeGuard plugin and insert the one you invented.
Important note:
In the spigot.yml file there is a line bungeecord: false
If you have configured player-info-forwarding-mode = "modern" and enabled velocity support in paper.yml, this field should remain false. If you have the bungeeguard value, it should be set to true!

Next, we need to configure the servers. Everything is simple here. In the servers section, you already have examples of configured servers. You just need to substitute your values and, if necessary, rename the servers in your own way. Just specify the server name = "Server IP:server port" (the server port is located in server.properties and it can be changed).
After you have added all the servers you need, specify the server to which the player will be connected immediately after entering in the try column =

Now let's look at some settings that you are likely to change.
1) tcp-fast-open = false - set to true if you are running the server on Lunix, that is, on a VDS/VPS server.
announce-proxy-commands = true - set it to false if you don't want the autocomplete to issue commands to your proxy players.
2) ping-passthrough = "description" - set the value to DISABLED if you want to see a green check mark for compatibility with mods on the client.

⦁ Point 3 - Velocity Commands.

By default, Velocity has 5 commands:
/velocity (version|plugins|reload|dump) - shows the velocity version | shows the velocity plugins | reloads the proxy | unloads the dump with proxy information, respectively
/end - disables the proxy
/shutdown - the same as end
/glist - shows how many players are on proxy.
/glist all - shows how many players are where
/server - allows you to move between servers (see point 4, section 2)

You can see permissions here: https://docs.velocitypowered.com/en/latest/users/commands.html

⦁ Point 4 - Useful utilities:

1) Probably the most important part is protection from bots. This function is performed by the following two plugins: LimboFilter + LimboApi. Actually, after installing them, everything depends on you. You can completely customize the anti-bot checks. I will not advise you on any particular mode of operation of the plugin, because it is individual.

2) It is important to think about the restriction of players in using proxy server commands. For example, the /server command is available to all. You can block this command, but much easier to remove the permissions from the players. The LuckPermsVelocity plugin will help with this. As soon as you install it on the proxy server, Write /lpv group default permission set velocity.command.server false.

3) On cycling, as you could see, there are no commands that are in the bungeecord, such as /send, /find, etc. In order to add them, use the VelocityTools plugin. In addition to these commands, it includes useful functions, by the type of command / lobby, the ability to restrict connections directly from a digital IP, and so on.

4) The CommandSync plugin may be quite useful for you. Recently, cycling support has been added to it, which has made it relevant again. In short, it is needed in order to execute proxy commands on servers. Very handy if you can't use the database, but you have several game modes.

5) It is also worth thinking about blocking commands. If you need to restrict other commands on the proxy server, it is recommended that you use the CommandWhitelist plugin. By the name, I think it's already clear what it does.

Point 5 - Useful links.

https://velocitypowered.com/wiki / - of. wiki
https://docs.papermc.io/velocity - of. velocity page on the papermc website
 
Last edited:
  • Like
Reactions: KungfuEpt