
VeloAuth
Плагин VeloAuth для Velocity - это система аутентификации с автовходом для премиум-игроков и регистрацией/логином для пиратов. Защищает ники, шифрует пароли BCrypt и работает с любой limbo-сервером.
VeloAuth
VeloAuth - это полноценный плагин аутентификации для прокси-сервера Velocity. Он решает главную проблему любого сервера, где играют и лицензионные, и пиратские игроки: как пустить первых без лишних телодвижений, а вторых заставить зарегистрироваться, при этом не дать украсть чужой ник. Всё это происходит на уровне прокси, до того как игрок попадёт на твой лобби или выживание.
Что это и зачем нужно
Если ты держишь сервер Майнкрафт с Velocity, то рано или поздно столкнёшься с тем, что пираты могут занять ник лицензионного игрока. Или наоборот - премиум-игроки будут проходить регистрацию каждый раз, хотя могли бы залетать автоматически. VeloAuth разруливает оба сценария: проверяет аккаунт через Mojang, кэширует статус в три слоя (память → база данных → внешний API) и пускает премиум-игроков без ввода пароля. Пиратам же придётся пройти /register и /login - пароли хранятся в BCrypt с защитой от брутфорса.
Ключевые возможности
- Умная защита ников - премиум-ники резервируются за их владельцами, если их уже не занял пират
- Автовход для премиума - владельцы лицензионного Minecraft пропускают логин автоматически
- Автоматическое обновление ника - если игрок сменил имя в Mojang, VeloAuth сам обновит запись в базе
- Безопасная аутентификация - BCrypt-хэширование паролей + защита от перебора
- Поддержка Floodgate - Bedrock-игроки могут пропустить сервер аутентификации (опционально)
- Forced Hosts - если игрок заходит через
pvp.server.com, его направят на нужный сервер после логина - Умное скрытие команд -
/loginи/registerисчезают из tab-completion после входа - Высокая производительность - трёхуровневый кэш премиум-статуса: память → БД → внешний API, статус хранится 24 часа
- Опциональная 2FA (TOTP) - поддержка Google Authenticator, Authy, Aegis (RFC 6238)
- Решение конфликтов - админские инструменты для управления спорными никами (
/vauth conflicts) - Мульти-БД - MySQL, PostgreSQL, H2, SQLite
- 17 языков - EN, PL, DE, FR, RU, TR, SI, FI, ZH_CN, ZH_HK, JA, HI, VI, KO, TH, ID, PT_BR
- Совместимость с LimboAuth - 100% совместимость баз данных (миграция не нужна)
- Discord-уведомления - вебхуки для событий безопасности
- Virtual Threads - построен на Java 21 для максимальной производительности
- bStats - анонимная статистика использования
Когда стоит использовать VeloAuth
- У тебя Velocity-прокси с одним или несколькими бэкенд-серверами, и нужна аутентификация на уровне прокси (не на каждом сервере отдельно)
- Ты принимаешь и премиум, и пиратских игроков - хочешь, чтобы первые залетали без логина, а вторые проходили регистрацию через BCrypt
- Ты уже используешь LimboAuth и хочешь перейти без потери данных - VeloAuth читает ту же схему БД
- Тебе нужна предсказуемая производительность - премиум-статус резолвится через трёхуровневый кэш (память → БД → Mojang/Ashcon API), виртуальные потоки и нулевое блокирование на событиях Velocity
Если у тебя один сервер (Paper/Spigot/Folia) без прокси - VeloAuth не нужен, используй плагин аутентификации на самом сервере.
Рекомендуемые профили настройки
VeloAuth поставляется с тремя режимами работы. Все настройки живут в premium: в plugins/VeloAuth/config.yml.
Профиль 1 - Строгий смешанный (по умолчанию, рекомендуется)
premium:
check-enabled: true
allow-cracked-on-premium-nicks: false
Что получаешь: премиум-игроки заходят автоматически со своим реальным Mojang UUID (без /login); пираты проходят /register + BCrypt; премиум-ники зарезервированы за их владельцами.
Что теряешь: пиратские клиенты, пытающиеся подключиться с премиум-ником (чужим именем), будут отклонены с сообщением "You are not logged into your Minecraft account."
Когда использовать: публичный сервер, принимающий и премиум, и пиратских игроков, где важна защита ников.
Профиль 2 - Только пираты
premium:
check-enabled: false
Что получаешь: ноль HTTP-запросов к Mojang/Ashcon, ноль записей в PREMIUM_UUIDS, все игроки принудительно в офлайн-режиме с детерминированным офлайн UUID. Все регистрации через /register.
Что теряешь: автовход для премиума отключён для всех - даже существующие владельцы премиума с записью PREMIUMUUID будут понижены до офлайн UUID. Защита от кражи ников отсутствует; кто первый зарегистрировал ник - тот и владелец.
Когда использовать: сервер только для пиратов, тестовая среда или любая установка, где не нужен Mojang.
Профиль 3 - Либеральный смешанный
premium:
check-enabled: true
allow-cracked-on-premium-nicks: true
Что получаешь: существующие владельцы премиума (уже в AUTH с PREMIUMUUID) сохраняют свой премиум UUID и пропускают /login. Пиратские клиенты могут зарегистрировать премиум-подобный ник, если его ещё нет в базе.
Что теряешь: новые премиум-игроки, подключающиеся впервые, получают офлайн UUID навсегда - у Velocity нет режима "попробуй онлайн, упади в офлайн" (см. PaperMC/Velocity#1590). Как только ник зарегистрирован как офлайн в VeloAuth, настоящий владелец Mojang больше не может забрать его автоматически - только через /vauth conflicts.
Когда использовать: сервер с приоритетом пиратов, который хочет принимать премиум-подобные ники без киков.
Быстрый выбор профиля
| Если хочешь... | Используй профиль |
|---|---|
| Максимальная защита, сохранение премиум UUID | 1 - Строгий смешанный |
| Без контакта с Mojang, полностью пиратский | 2 - Только пираты |
| Принять всех, премиум-ники не резервируются | 3 - Либеральный смешанный |
Нет профиля, который "даёт премиум-владельцам премиум UUID и пускает пиратов на тот же ник" - для этого нужна функция Velocity API, которой пока нет.
Требования
- Java 21 или новее
- Velocity proxy (API 3.4.0+)
- Limbo сервер: NanoLimbo, LOOHP/Limbo, LimboService, PicoLimbo, hpfxd/Limbo или любой другой
- База данных: MySQL, PostgreSQL, H2 или SQLite
Быстрая установка
- Скачай VeloAuth с Modrinth
- Помести файл в папку
plugins/твоего Velocity - Запусти Velocity - плагин создаст
config.yml - Останови Velocity и настрой базу данных и имя auth-сервера в
plugins/VeloAuth/config.yml - Перезапусти Velocity
Важно: поддержка Floodgate отключена по умолчанию. Включай её только если реально используешь Geyser/Floodgate.
Настройка Velocity (velocity.toml)
[servers]
limbo = "127.0.0.1:25566" # Auth/limbo сервер (NanoLimbo, LOOHP/Limbo и т.д.)
lobby = "127.0.0.1:25565" # Типичный бэкенд-сервер
survival = "127.0.0.1:25567" # Ещё один бэкенд-сервер
try = ["lobby", "survival"] # Порядок важен. НЕ ставь 'limbo' сюда.
Настройка VeloAuth (config.yml)
Минимальная конфигурация auth-сервера:
auth-server:
server-name: limbo
timeout-seconds: 300 # Секунд до кика неавторизованного игрока. 0 = отключить кик.
Политика сложности пароля (опционально, по умолчанию выключена)
По умолчанию только длина (8-72 символа) - дружелюбно для казуальных серверов и обратно совместимо с LimboAuth.
security:
min-password-length: 8
max-password-length: 72
password-policy:
min-digits: 0 # 0 = выкл., например 1 = требуется хотя бы одна цифра
min-uppercase: 0 # 0 = выкл., например 1 = требуется хотя бы одна заглавная буква
min-lowercase: 0 # 0 = выкл., например 1 = требуется хотя бы одна строчная буква
min-special: 0 # 0 = выкл., например 1 = требуется хотя бы один спецсимвол (не буква и не цифра)
Отключение уведомлений "нет доступного сервера"
Если у тебя стоит DiscordSRV или другой плагин, который кикает игроков до того, как VeloAuth завершит переброску на бэкенд, можно отключить сообщения в чате "Waiting for a server..." без форка плагина: открой файл языка plugins/VeloAuth/lang/messages_<lang>.properties и поставь пустые значения:
connection.waiting_for_server=
connection.error.no_servers=
Пустое значение = sendMessage подавляется; логи всё ещё пишутся. Попытки переброски продолжаются.
Команды игроков
| Команда | Описание | Ограничения |
|---|---|---|
/register <пароль> <подтверждение> | Создать новый аккаунт | Скрывается после логина. Не для премиум-ников |
/login <пароль> | Войти в аккаунт | Скрывается после логина. Работает для всех |
/changepassword <старый> <новый> | Сменить пароль | Нужно быть в онлайне |
/2fa setup | Настроить TOTP аутентификатор | Нужно быть в онлайне |
/2fa verify <код> | Подтвердить настройку ИЛИ пройти 2FA при входе | - |
/2fa disable <код> | Отключить 2FA на аккаунте | Требуется валидный код |
/2fa qr / /2fa status | Показать QR / статус 2FA | Нужно быть в онлайне |
Админские команды
| Команда | Право | Описание |
|---|---|---|
/unregister <ник> | veloauth.admin | Удалить аккаунт игрока (решает конфликты) |
/vauth reload | veloauth.admin | Перезагрузить конфигурацию |
/vauth cache-reset [игрок] | veloauth.admin | Очистить кэш авторизации |
/vauth stats | veloauth.admin | Показать статистику плагина |
/vauth conflicts | veloauth.admin | Список конфликтов ников |
/vauth 2fa-remove <ник> | veloauth.admin | Сбросить 2FA токен игрока (восстановление) |
Как это работает
Процесс аутентификации:
- Игрок подключается к Velocity.
- VeloAuth проверяет кэш авторизации в памяти (мгновенно, без I/O).
- Если нет в памяти - проверяет кэш премиума в базе данных (сохраняется между перезапусками).
- Если нет в кэше БД - резолвит через Mojang/Ashcon API параллельно на виртуальных потоках.
- Если не премиум - игрок отправляется на auth-сервер (если не включён обход для Floodgate Bedrock).
- Игрок вводит
/loginили/register. - VeloAuth проверяет учётные данные через BCrypt.
- Игрок перенаправляется на бэкенд-сервер согласно конфигурации
try.
Премиум резолвинг (3 слоя):
Подключение → [Кэш в памяти] → [Кэш в БД] → [Mojang/Ashcon API]
~0ms ~1ms ~200-500ms
Все API-запросы выполняются параллельно на виртуальных потоках. Результаты кэшируются в БД и переживают перезапуски прокси.
Обнаружение смены ника:
Когда премиум-игрок заходит с другим ником (переименовал аккаунт в Mojang), VeloAuth автоматически обнаруживает несоответствие и обновляет запись в БД без вмешательства админа.
Система защиты ников:
Премиум-ники резервируются за их владельцами (если их уже не занял пират). При конфликтах есть инструменты для админов. Пираты блокируются при попытке использовать премиум-ник.
Миграция с LimboAuth:
VeloAuth полностью совместим с базами данных LimboAuth:
- Останови LimboAuth на бэкенд-серверах.
- Установи VeloAuth на Velocity.
- Настрой VeloAuth на ту же БД, что и LimboAuth.
- Запусти Velocity - все существующие аккаунты будут работать автоматически.
