Velocity — прокси от команды PaperMC, которую делали как замену BungeeCord: асинхронная работа с сетью, меньше расход CPU при том же числе игроков и, главное, нормальная защита бэкендов через подписанный форвардинг. Настройка Velocity занимает минут двадцать, а на сети из четырёх-пяти серверов разница в отзывчивости чувствуется сразу.
Конфиг здесь в формате TOML, а не YAML, — первое, что сбивает с толку после Bungee.
Что даёт переход с BungeeCord
Три вещи, ради которых обычно и переезжают:
- Modern forwarding. Данные об игроке передаются на бэкенд с криптоподписью. Подделать подключение, зная только порт, невозможно — BungeeGuard больше не нужен.
- Производительность. Velocity многопоточный по-настоящему, на 300+ игроков он держит нагрузку заметно ровнее.
- Плагины. API современнее, поддержка новых версий протокола выходит быстрее.
Минус один: старые bungee-плагины не подходят, нужны нативные velocity-версии. У большинства популярных (LuckPerms, ViaVersion, Geyser) они есть.
Установка и первый запуск
Скачайте velocity-<версия>.jar с papermc.io, положите в отдельную папку и запустите:
java -Xms512M -Xmx1G -XX:+UseG1GC -jar velocity.jarVelocity не любит гигантские хипы — ему хватает 512 МБ–1 ГБ даже на большой сети, память нужна бэкендам. Флаги Aikar для прокси не применяйте, они рассчитаны на серверный GC-профиль.
После старта появятся velocity.toml и файл forwarding.secret. Второй — ключ подписи, его содержимое понадобится на каждом бэкенде.
velocity.toml: настройка по пунктам
config-version = "2.7"
bind = "0.0.0.0:25565"
motd = "&aМоя сеть"
show-max-players = 200
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "127.0.0.1:25566"
survival = "127.0.0.1:25567"
creative = "127.0.0.1:25568"
try = ["lobby"]
[forced-hosts]
"survival.example.ru" = ["survival"]
[advanced]
compression-threshold = 256
login-ratelimit = 3000Разбор ключевых строк:
player-info-forwarding-mode = "modern"— тот самый подписанный форвардинг. Требует Paper 1.13+ на бэкендах; все режимы описаны в документации Velocity. Для старых ядер остаётся"legacy"(совместимость с BungeeCord) или"bungeeguard".try— порядок попыток подключения при входе и при падении сервера. Первый в списке становится лобби.[forced-hosts]— приятная штука: игрок, зашедший поsurvival.example.ru, сразу попадает на выживание, минуя лобби. Домены настраиваются по этой инструкции.login-ratelimit— миллисекунды между попытками входа с одного IP, базовая защита от флуда логинами.
Секция [query] включает ответ на запросы мониторингов — пригодится, если сервер добавлен в топы серверов.
Подключение Paper-бэкендов
На каждом бэкенде правим три места.
server.properties:
server-port=25566
online-mode=false
server-ip=127.0.0.1config/paper-global.yml (Paper 1.19+):
proxies:
velocity:
enabled: true
online-mode: true
secret: сюда_содержимое_forwarding.secretspigot.yml — параметр bungeecord при modern forwarding должен остаться false. Не включайте оба режима сразу: бэкенд будет ждать не тот формат форвардинга, и игроки не смогут зайти.
Секрет копируется как есть, строкой. Если он не совпадает, игрок получит Unable to connect: Invalid proxy response и в логе бэкенда будет прямое указание на несовпадение ключа.
На Paper старше 1.19 настройка живёт в paper.yml в секции settings.velocity-support. Актуальную версию ядра ставьте по инструкции для Paper.
Плагины Velocity
Кладутся в папку plugins прокси. Нужный минимум:
- LuckPerms (velocity) — единые группы и права на сеть, обязателен, если хотите одинаковые префиксы везде. Команды те же, что на бэкенде: шпаргалка.
- ViaVersion / ViaBackwards — вход с разных версий клиента на один бэкенд.
- Geyser + Floodgate (velocity) — кроссплей с Bedrock прямо на прокси, ключ
key.pemкопируется на бэкенды. Детали в статье про Geyser. - VelocityTab / MiniPlaceholders — общий таб-лист и плейсхолдеры.
- SignedVelocity — корректная работа чата и подписи сообщений на 1.19.1+.
Команда перехода — /server <имя>, список — /server. Права на команды раздаются через LuckPerms на прокси, не на бэкенде.
Переезд с BungeeCord
Порядок, который проходит без простоя дольше пары минут:
- Поднимите Velocity на соседнем порту (например, 25575) и пропишите те же бэкенды.
- Переведите бэкенды на modern forwarding, но пока оставьте их доступными и для Bungee — это невозможно одновременно, поэтому шаг делается в окно техработ.
- Проверьте вход через тестовый порт.
- Остановите Bungee, переведите Velocity на 25565.
- Перенесите права: база LuckPerms общая, дополнительных действий не нужно.
Что не переносится автоматически: конфиги bungee-плагинов, кастомные MOTD-скрипты, самописные плагины. Заранее найдите velocity-аналоги, иначе после переезда обнаружите, что таб-лист пустой.
Сравнение двух прокси есть в обзорной статье, а базовая настройка Bungee — здесь.
Частые ошибки
Your server did not send a forwarding request. На бэкенде не включён velocity-режим или включён bungee вместо него.
Invalid proxy response! — секреты не совпадают. Часто виноват лишний перевод строки при копировании.
Игроки видят чужой ник или UUID. Форвардинг в legacy-режиме без защиты. Переходите на modern.
Все с IP 127.0.0.1. То же самое: форвардинг не доехал. Проверьте, что бэкенд действительно Paper, а не Spigot — на чистом Spigot modern forwarding не поддерживается.
Прокси падает по OOM. Почти всегда виноват плагин с утечкой, а не сам Velocity. Профилируйте через Spark, он ставится и на прокси.
Коротко
velocity.toml с modern forwarding, секрет на каждом бэкенде, online-mode=false и server-ip=127.0.0.1 на серверах, LuckPerms на общей базе. После этого сеть держится на одном адресе, а бэкенды физически недоступны снаружи — то, чего в Bungee приходилось добиваться плагинами.
Разворачивать сеть удобнее там, где серверы стоят рядом и общаются по локальной петле — тарифы TeaHost.