TeaHost
Minecraftminecraftvelocityпроксисеть4 мин. чтения

Настройка прокси Velocity

Настройка Velocity: velocity.toml, modern forwarding и forwarding.secret, подключение Paper-бэкендов, плагины и переезд с BungeeCord без потерь.

Кратко

Velocity — прокси от PaperMC с подписанным modern forwarding. В velocity.toml задайте player-info-forwarding-mode = «modern» и список серверов, а на каждом Paper-бэкенде включите proxies.velocity.enabled в paper-global.yml, вставьте содержимое forwarding.secret и поставьте online-mode=false. Прокси хватает 512 МБ–1 ГБ памяти, плагины нужны velocity-версии.

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.jar

Velocity не любит гигантские хипы — ему хватает 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.1

config/paper-global.yml (Paper 1.19+):

код
proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: сюда_содержимое_forwarding.secret

spigot.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

Порядок, который проходит без простоя дольше пары минут:

  1. Поднимите Velocity на соседнем порту (например, 25575) и пропишите те же бэкенды.
  2. Переведите бэкенды на modern forwarding, но пока оставьте их доступными и для Bungee — это невозможно одновременно, поэтому шаг делается в окно техработ.
  3. Проверьте вход через тестовый порт.
  4. Остановите Bungee, переведите Velocity на 25565.
  5. Перенесите права: база 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.