Коротко: Velocity принимает игроков на порту 25565 и раздаёт их по серверам из раздела `[servers]` в `velocity.toml`. Игровые серверы переводятся в offline-режим и получают данные игроков от прокси через modern forwarding с секретом из файла forwarding.secret. Последний и обязательный шаг — закрыть серверы файрволом, чтобы к ним можно было подключиться только через прокси.
Если вы ещё выбираете прокси, сначала прочитайте «Velocity или BungeeCord». Здесь — практическая настройка.
Схема сети
Возьмём типичную сеть на одной машине. Velocity слушает порт 25565 — это единственный адрес для игроков. Лобби работает на 127.0.0.1:30066, выживание — на 127.0.0.1:30067. Оба сервера — Paper или Leaf; держать их на одной версии Minecraft проще всего. Если сервер стоит на другой машине, адрес в конфиге будет внешним, и файрвол становится строго обязательным.
Установка Velocity
- 1
Установите Java
Актуальный Velocity требует Java 25 или новее. У серверов Paper свои требования: Paper 1.21 работает на Java 21.
- 2
Скачайте Velocity
Возьмите последнюю стабильную сборку на papermc.io/downloads/velocity и положите jar в отдельную папку — только для прокси.
- 3
Запустите один раз
При первом старте Velocity создаст
velocity.tomlи файлforwarding.secretсо случайной строкой. Остановите прокси командойendв консоли.
#!/bin/sh
java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity*.jarНастройка velocity.toml
bind = "0.0.0.0:25565"
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "127.0.0.1:30066"
survival = "127.0.0.1:30067"
try = [
"lobby"
]
[forced-hosts]
# удалите примеры или впишите свои доменыbind— адрес и порт, на которых прокси принимает игроков. По умолчанию все адреса машины, порт 25565.online-mode = true— аккаунты игроков проверяет прокси. Не выключайте: в offline-режиме Velocity сам пишет в лог, что это риск для безопасности.player-info-forwarding-mode = "modern"— безопасная передача ника, UUID, IP и скина серверам. По умолчанию стоит"NONE", и тогда все игроки приходят с адресом прокси и offline-UUID.[servers]— имена и адреса серверов. Имя слева — то, что игрок пишет в/server.try— куда отправлять игрока при входе и при кике с сервера. Первым ставьте лобби.[forced-hosts]— привязка доменов к серверам, напримерsurvival.example.comсразу на выживание. Примеры из стандартного конфига ссылаются на серверыlobby,factionsиminigames: если таких нет в[servers], Velocity не запустится.
Настройка серверов Paper
Каждый сервер за прокси настраивается одинаково. Ниже — для лобби; для выживания отличается только порт.
- 1
server.properties
online-mode=false— аккаунт уже проверил прокси. Порт — тот, что указан вvelocity.toml:server-port=30066. Если прокси и серверы на одной машине, добавьтеserver-ip=127.0.0.1— сервер будет принимать только локальные подключения. Остальные настройки — в статье о server.properties. - 2
spigot.yml
settings.bungeecord: false— передача в стиле BungeeCord с modern forwarding не нужна, документация Velocity просит её выключить. - 3
config/paper-global.yml
В разделе
proxies.velocity:enabled: true,online-mode: true(как вvelocity.toml),secret— строка изforwarding.secret. - 4
Перезапустите и проверьте
Перезапустите сервер, зайдите через адрес прокси и убедитесь, что у вас ваш скин и правильный UUID.
proxies:
velocity:
enabled: true
online-mode: true
secret: "строка-из-forwarding.secret"Файрвол: самый важный шаг
Теперь серверы работают в offline-режиме. Документация Velocity предупреждает прямо: если к серверу можно подключиться в обход прокси, кто угодно сможет войти под любым ником. Modern forwarding усложняет подделку, но, по словам той же документации, не заменяет файрвол. Варианты защиты из документации Velocity:
- Привязка к localhost. Прокси и серверы на одной машине —
server-ip=127.0.0.1вserver.propertiesкаждого сервера. Проще всего, но не подходит, если серверы на разных машинах или на общем хостинге. - Файрвол ОС — iptables или nftables на Linux, Брандмауэр Windows: порты серверов открыты только для IP прокси. Velocity настоятельно рекомендует этот способ.
- Шифрованный туннель между машинами — WireGuard, OpenVPN и подобные. Надёжно, но сложно в настройке.
- Плагин белого списка IP — последняя линия обороны, если другие способы недоступны, например на общем хостинге.
Проверьте результат снаружи: с другой машины подключение к адресу сервера на порту 30066 или 30067 не должно устанавливаться. Открытым для игроков остаётся только порт прокси. Про защиту самого прокси от ботов и DDoS — в отдельной статье о ботах и DDoS.
Переходы между серверами и команды
Команда /server встроена в Velocity и по умолчанию доступна всем (право velocity.command.server): без аргумента показывает текущий сервер и список остальных, с именем — переводит туда. Другие встроенные команды: /glist — онлайн по сети (по умолчанию право не выдано никому), /send — перенести игрока или всех на другой сервер, /velocity reload — перечитать velocity.toml.
В лобби обычно ставят плагин-навигатор: меню или NPC, которые отправляют игрока на режим. Многие такие плагины пользуются каналом сообщений BungeeCord — Velocity поддерживает его, настройка bungee-plugin-message-channel в разделе [advanced]. Права на прокси выдаёт плагин прав под Velocity, например LuckPerms; в сети все его копии подключают к одной базе — MySQL, MariaDB, PostgreSQL или MongoDB.
DGuard на каждом сервере сети
Прокси пересылает пакеты, но мира не видит, поэтому античит ставят на игровые серверы. С DGuard это выглядит так:
- 1
Добавьте каждый сервер в панель
Лобби и выживание — отдельные серверы в панели DGuard, у каждого свой ключ
dg_…. Ключ показывают один раз — сохраните его. - 2
Поставьте PacketEvents и DGuard на каждый сервер
В
plugins/каждого игрового сервера — последний релиз PacketEvents и DGuard.jar. На прокси DGuard не ставится. - 3
Вставьте ключ и перезапустите
Ключ — в
plugins/DGuard/config.yml→license.key, затем перезапуск. Команда/dguard licenseпокажет состояние лицензии.
Серверу с DGuard нужен исходящий HTTPS до сайта DGuard: лицензия, обновления и облачная проверка правил аима и TriggerBot. Файрвол выше закрывает входящие подключения к серверам — исходящие оставьте открытыми. Решите и про лобби: если там есть PvP-зона или паркур, читеры с Fly и KillAura появятся и там.
Ещё одна мысль для сети: стандартные баны Minecraft хранятся на каждом сервере отдельно, в его banned-players.json, поэтому игрок, забаненный на выживании, может зайти на другой режим. Чтобы бан действовал во всей сети, используйте плагин наказаний с общей базой данных для всех серверов или плагин банов на прокси.
Частые ошибки
- «Server '…' for forced host '…' does not exist» — в
[forced-hosts]остались примеры с серверами, которых нет в[servers]. Удалите их или поправьте имена. - «Fallback server … is not registered in your configuration» — в
tryуказан сервер, которого нет в[servers]. - Игроки без скинов и с чужими UUID — не включена передача данных: нужен
player-info-forwarding-mode = "modern"вvelocity.tomlиproxies.velocity.enabled: trueна сервере. - Сервер не пускает игроков после настройки —
secretвpaper-global.ymlне совпадает сforwarding.secretилиproxies.velocity.online-modeне совпадает сonline-modeпрокси. - ViaVersion и на прокси, и на серверах — документация ViaVersion просит ставить его в одно место: либо на прокси, либо на серверы за ним. И предупреждает, что на прокси античиты могут работать хуже, потому что перевод протокола идёт на другом уровне. Держите ViaVersion на игровых серверах, рядом с античитом — подробнее в статье о ViaVersion.
Частые вопросы
Нужно ли ставить online-mode=false на серверах за Velocity?
Да, в server.properties каждого сервера за прокси online-mode=false: аккаунты проверяет Velocity. В velocity.toml при этом online-mode = true, а серверы обязательно закрываются файрволом.
Где взять секрет для paper-global.yml?
Velocity создаёт файл forwarding.secret со случайной строкой при первом запуске. Эту строку вставьте в proxies.velocity.secret в config/paper-global.yml каждого сервера.
Почему игроки на сервере за Velocity без скинов?
Скорее всего, не включена передача данных: в velocity.toml должно быть player-info-forwarding-mode = "modern", а на сервере — proxies.velocity.enabled: true с тем же секретом.
Как перейти на другой сервер в сети Velocity?
Командой /server <имя> — она встроена в Velocity и по умолчанию доступна всем. Без имени команда покажет, где вы сейчас и какие серверы есть.
Куда ставить античит в сети Velocity?
На каждый игровой сервер: прокси не видит движение и бой. DGuard ставится на каждый сервер со своим ключом и последним релизом PacketEvents рядом.
Источники
- Velocity: начало работы
- Velocity: настройки velocity.toml
- Velocity: стандартный velocity.toml
- Velocity: передача данных игроков
- Velocity: защита серверов
- Velocity: встроенные команды
- Paper: paper-global.yml
- LuckPerms: установка в сети
- ViaVersion: установка за прокси
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf