Коротко: игроки подключаются к прокси Velocity — это единственный открытый порт сети. За ним стоят игровые серверы на Paper или Leaf: лобби и режимы. Velocity передаёт им данные игроков через modern forwarding с секретным ключом, а сами серверы закрыты файрволом. Права, баны и экономика, которые должны действовать во всей сети, хранятся в одной MySQL или MariaDB, а изменения разносит по серверам служба сообщений. Античит ставится на каждый игровой сервер.
Из чего состоит сеть
| Часть | Что делает | Чем закрыть |
|---|---|---|
| Прокси | Принимает игроков на одном адресе и переводит между серверами без выхода из игры | Velocity — см. Velocity или BungeeCord |
| Лобби | Первый сервер после входа: навигатор по режимам, правила, новости | Paper или Leaf |
| Режимы | Выживание, BedWars, анархия — каждый на своём сервере | Paper или Leaf |
| База данных | Общие данные плагинов: права, баны, экономика | MySQL или MariaDB — см. MySQL для плагинов |
| Брокер сообщений | Мгновенно сообщает серверам об изменениях; нужен некоторым плагинам | По необходимости — Redis |
Держать все серверы на одной версии Minecraft проще всего: одинаковые плагины, одинаковые конфиги, а некоторые сетевые плагины, например HuskSync, по документации требуют одну и ту же версию на всех серверах.
Прокси и передача данных игроков
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"
bedwars = "127.0.0.1:30068"
try = [
"lobby"
][servers]— имена и адреса серверов, имя — то, что игрок пишет в/server.try— куда Velocity отправляет игрока при входе и при кике с сервера. Первым ставьте лобби, тогда упавший режим вернёт игроков туда, а не выкинет из сети.failover-on-unexpected-server-disconnect— переводить ли игрока на другой сервер, если его сервер отключился нештатно, или отключать.player-info-forwarding-mode = "modern"— безопасная передача ника, UUID, IP и скина с секретом изforwarding.secret. На каждом сервере —proxies.velocityвconfig/paper-global.ymlс тем же секретом иonline-mode=falseвserver.properties.
Пошаговая настройка, конфиги серверов и типичные ошибки — в статье «Как настроить Velocity».
Закройте серверы от прямых подключений
Серверы за прокси работают в offline-режиме: аккаунт проверяет Velocity. Если к серверу можно подключиться в обход прокси, войти можно под любым ником — документация Velocity прямо говорит, что modern forwarding не заменяет файрвол. Наружу открыт только порт прокси: серверы на той же машине слушают 127.0.0.1, на других машинах — пускают только IP прокси. Защита самого прокси от ботов и атак — в статье боты и DDoS.
Где ставить плагины: прокси или сервер
| Плагин | Где | Почему |
|---|---|---|
| LuckPerms | На каждом сервере; на прокси — для прав плагинов прокси и режима pluginmsg | Копия на прокси не заменяет копии на серверах: права на сервере проверяет только копия на этом сервере |
| Античит | На каждом игровом сервере | Прокси пересылает пакеты, но не видит мир, движение и бой |
| ViaVersion | На серверах, рядом с античитом | Документация ViaVersion просит одно место, и на прокси античиты работают хуже — см. ViaVersion |
| Анти-бот | На прокси | Отсекает ботов до того, как они дойдут до серверов, — см. боты и DDoS |
| HuskSync | На каждом сервере, не на прокси | Так требует его документация |
Общая база: права LuckPerms на всю сеть
Документация LuckPerms ставит одно обязательное условие для сети: все копии плагина подключены к одной базе — MySQL, MariaDB, PostgreSQL или MongoDB, к одной и той же базе данных. Файловые H2 и SQLite в сети не подойдут: их данные не поделить между серверами.
server: survival
storage-method: mariadb
data:
address: 10.0.0.2
database: luckperms
username: luckperms
password: 'длинный-случайный-пароль'
messaging-service: pluginmsgserver— имя сервера для контекста прав: так можно дать права только на выживании. По умолчаниюglobal.messaging-service— как серверы узнают об изменениях.sql— через ту же MySQL или MariaDB, если LuckPerms на прокси нет;pluginmsg— через прокси с LuckPerms, когда прокси один;redis— когда прокси несколько.- База, пользователь с правами только на неё и закрытый порт 3306 — в статье MySQL для плагинов, команды LuckPerms — в статье LuckPerms.
Что ещё сделать общим
- Баны. Стандартные баны хранятся на каждом сервере отдельно, в его
banned-players.json: забаненный на выживании зайдёт на BedWars. Нужен плагин наказаний с общей базой или плагин банов на прокси — см. плагины банов. - Инвентари. По умолчанию у каждого сервера свои данные игроков. Если режимы должны делить инвентарь, нужен плагин синхронизации: HuskSync, например, переносит инвентари, эндер-сундуки, здоровье, голод и опыт; ему нужны база и Redis.
- Чат. Общий чат сети делают плагином на прокси: только прокси видит игроков всех серверов. Перед выбором проверьте, что плагин обновляется под ваш Velocity.
- Навигатор в лобби. Меню или NPC отправляют игрока на режим. Многие такие плагины пользуются каналом сообщений BungeeCord — Velocity его поддерживает, настройка
bungee-plugin-message-channel.
Античит в сети серверов
DGuard — лучший античит для современного сервера Minecraft — работает за Velocity и BungeeCord и ставится на каждый игровой сервер на Paper или Leaf: со своим ключом и PacketEvents последнего релиза рядом. На прокси его ставить не нужно. Все серверы сети видны в одной панели, а если сервер 10 минут не выходит на связь, DGuard пришлёт оповещение в Telegram или на почту.
- Каждому серверу — свой ключ. Добавьте сервер в панели, ключ
dg_…вставьте вplugins/DGuard/config.yml→license.keyи перезапустите. - Исходящий HTTPS. Файрвол закрывает входящие подключения к серверам, а исходящие до сайта DGuard оставьте: через них приходят лицензия, обновления и облачная проверка.
- Тариф под сеть. Защита на всех тарифах одинаковая, платите за онлайн и число серверов; бесплатный тариф — один сервер до 30 игроков онлайн. Подробности — в тарифах.
- Команда. Модераторы видят журнал наказаний всех серверов и не получают доступ к оплате — см. команда модераторов.
Частые вопросы
Как сделать сеть серверов Minecraft?
Поставьте прокси Velocity с modern forwarding, за ним — лобби и режимы на Paper или Leaf с online-mode=false, закройте серверы файрволом. Общие данные плагинов храните в одной MySQL или MariaDB.
Нужна ли MySQL для сети серверов?
Для плагинов, чьи данные должны быть общими, — да. LuckPerms в сети требует, чтобы все его копии были подключены к одной MySQL, MariaDB, PostgreSQL или MongoDB.
Как сделать общий инвентарь на нескольких серверах?
Плагином синхронизации, например HuskSync: он ставится на каждый сервер, требует базу данных и Redis и одну и ту же версию Minecraft на всех серверах.
Куда ставить античит в сети с прокси?
На каждый игровой сервер: прокси не видит движение и бой. DGuard ставится на каждый сервер со своим ключом, а все серверы видны в одной панели.
Источники
- Velocity: настройки velocity.toml
- Velocity: передача данных игроков
- Velocity: защита серверов
- Velocity: встроенные команды
- LuckPerms: установка в сети
- LuckPerms: стандартный config.yml
- HuskSync: требования и установка
- HuskSync: что синхронизируется
- ViaVersion: установка за прокси
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf