TeaHost
Minecraftminecraftauthmeавторизацияплагины4 мин. чтения

Установка AuthMe для офлайн-режима

Установка AuthMe на сервер в офлайн-режиме: конфиг, регистрация и вход, защита UUID, MySQL, работа за прокси и частые ошибки.

Кратко

AuthMe защищает сервер с online-mode=false: без /register и /login игрок не попадёт в мир. Скачайте сборку под своё ядро из официального репозитория, включите в config.yml force-регистрацию, минимальную длину пароля 6+, защиту инвентаря и телепорт на спавн до входа, для нового сервера выберите хэш BCRYPT. Для сети из нескольких серверов переводите базу на MySQL.

Как только в server.properties выставлено online-mode=false, сервер перестаёт спрашивать у Mojang, кто к нему подключился. Ник вводится любой — включая ваш собственный. Установка AuthMe закрывает эту дыру: плагин требует пароль при входе и не пускает игрока в мир, пока тот не авторизуется.

Нужен он не только «пиратским» проектам. Офлайн-режим включают и легальные сборки за прокси, и локальные сервера для сети — везде, где проверка лицензий вынесена наружу или отключена намеренно.

Что сделать до установки AuthMe

Первое — сам офлайн-режим. В server.properties:

код
online-mode=false

Второе — понимать риск. В офлайне UUID генерируется из ника, а не выдаётся Mojang. Значит, при смене ника игрок теряет всё: дом, приваты, деньги, инвентарь. И наоборот, любой, кто подберёт ник, получит чужие вещи, если не будет авторизации.

Третье — отключить или перенастроить всё, что раздаёт права по нику до входа. Особенно права операторов: OP-аккаунт с простым паролем — это готовый способ потерять сервер.

Общая картина по офлайн-серверу разобрана в статье как сделать пиратский сервер Minecraft.

Установка

  1. Скачайте сборку из официального репозитория AuthMeReloaded. В новых версиях плагин выходит отдельными jar-файлами под платформу: для Paper 1.21+, для Spigot 1.20–1.21, для Folia и отдельная Legacy-сборка для старых версий 1.16–1.19. Берите файл, который соответствует вашему ядру.
  2. Остановите сервер, положите файл в plugins (через панель или по SFTP).
  3. Запустите. Плагин создаст plugins/AuthMe/config.yml и базу authme.db в формате SQLite.
  4. Зайдите на сервер и проверьте: должно появиться требование /register <пароль> <пароль>.

Если сообщения нет — смотрите консоль. Чаще всего AuthMe не стартует из-за конфликта с другим плагином авторизации или из-за того, что сервер всё ещё в online-режиме (тогда плагин пишет предупреждение и часть функций отключает).

Ключевые настройки config.yml

Файл большой, но менять нужно немного.

Регистрация:

код
settings:
  registration:
    enabled: true
    force: true
    enableConfirmPassword: true

force: true — без регистрации в мир не пустят. Оставляйте включённым, иначе смысл теряется.

Пароли:

код
settings:
  security:
    minPasswordLength: 6
    maxPasswordLength: 30
    unsafePasswords:
    - '123456'
    - 'password'
    - 'qwerty'

Шесть символов — минимум, ниже опускать не стоит. Список unsafePasswords реально помогает: половина игроков без него ставит 12345.

Ограничения до авторизации:

код
settings:
  restrictions:
    allowChat: false
    allowCommands:
    - /login
    - /register
    - /l
    - /reg
    timeout: 60
    maxRegPerIp: 2
    ProtectInventoryBeforeLogIn: true
    teleportUnAuthedToSpawn: true

ProtectInventoryBeforeLogIn скрывает инвентарь до входа — иначе чужой человек с вашим ником увидит, что у вас лежит. teleportUnAuthedToSpawn уносит неавторизованного на спавн, чтобы он не запоминал координаты базы. maxRegPerIp режет массовую регистрацию ботов.

Сессии:

код
settings:
  sessions:
    enabled: true
    timeout: 30

Полчаса сессии — компромисс: при обрыве связи игрок вернётся без пароля, но чужой с другого IP не зайдёт (проверка по IP включена по умолчанию).

База данных

SQLite годится для сервера на 20–50 человек. Когда игроков больше или серверов несколько, переходите на MySQL:

код
DataSource:
  backend: MYSQL
  mySQLHost: 127.0.0.1
  mySQLPort: '3306'
  mySQLUsername: authme
  mySQLPassword: пароль
  mySQLDatabase: authme
  mySQLTablename: authme

Общая база — единственный нормальный способ сделать одну авторизацию на всю сеть под BungeeCord или Velocity. Игрок вводит пароль один раз в лобби и дальше ходит между серверами свободно.

Алгоритм хэширования по умолчанию — SHA256, для нового сервера лучше сразу BCRYPT: медленнее при входе, зато перебор украденной базы становится бессмысленным.

Команды администратора

код
/authme register Steve пароль
/authme changepassword Steve новыйпароль
/authme unregister Steve
/authme purge 60
/authme reload

purge 60 чистит аккаунты, не заходившие 60 дней — заодно уменьшает базу и освобождает ники. Перед чисткой проверьте, что она не тронет постройки: удаление аккаунта не удаляет регионы, но владелец превратится в «мёртвую» запись.

Права раздаются через LuckPerms, нужное админу — authme.admin.*.

Работа за прокси

Если сервер стоит за BungeeCord или Velocity, офлайн-режим включается на бэкендах, а лицензия проверяется на прокси. В этом случае:

  • на бэкендах обязательно закройте порты снаружи, иначе кто угодно подключится напрямую в офлайне;
  • в конфиге AuthMe включите поддержку прокси и укажите правильный bungeecord: true в разделе Hooks;
  • ставьте AuthMe на бэкенды, а не на прокси, либо используйте специальный мост.

Открытые порты бэкендов — самая частая дыра в сборках с авторизацией. Проверьте их по инструкции как открыть порты на сервере, только в обратную сторону.

Частые ошибки

Игрок пишет «Вы уже авторизованы», но управление не работает. Конфликт с другим плагином, который двигает игрока при входе. Обычно это эссеншлы со спавн-телепортом; отключите teleportUnAuthedToSpawn или спавн-телепорт у второго плагина.

Пароль не принимается после смены хэша. Смена алгоритма не перешифровывает старые пароли. Используйте legacyHashes или заставьте игроков восстановить доступ.

Боты регистрируются пачками. Поднимите maxRegPerIp до 1, включите капчу (useCaptcha) и антибот-режим antiBot.

Всё легло после обновления версии игры. AuthMe жёстко завязан на NMS в части управления игроком. Обновляйте плагин вместе с ядром, а не после.

Коротко

Схема: online-mode=false → AuthMe в plugins → force: true, нормальная длина пароля, защита инвентаря и телепорт на спавн → BCRYPT → MySQL, если серверов больше одного. После этого офлайн-сервер перестаёт быть проходным двором.

Готовую площадку с панелью, где конфиги правятся без SFTP, можно взять на тарифах TeaHost.