Whitelist не работает: диагностика
Добавил друга в whitelist, а сервер его не пускает — или того хуже, whitelist вроде включён, а заходит кто попало. Это одна из тех проблем, где причина почти всегда банальная, но найти её с наскока сложно, потому что вариантов сразу несколько: не тот параметр, не тот UUID, не перечитанный файл. Разберём по шагам, где именно чаще всего ломается whitelist и как это проверить, не гадая.
Содержание
white-list=false: самая частая причина
Первое, что стоит проверить, даже если кажется, что «я точно включал» — сам параметр в server.properties, в корне сервера:
white-list=true
Если тут стоит false, сервер полностью игнорирует содержимое whitelist.json, каким бы полным и правильным оно ни было. Это самая частая причина, с которой приходят в поддержку: человек аккуратно добавил всех через /whitelist add, всё выглядит нормально в файле — а параметр включения где-то по пути слетел или вообще не был выставлен изначально, если сервер настраивали руками, а не через команду.
Проверить быстро:
grep white-list server.properties
Если строки нет вообще — допиши её вручную и перезапусти сервер (параметры из server.properties читаются при старте, «на лету» этот конкретный флаг не подхватывается через reload, в отличие от самого списка). Если сервер уже запущен и лезть в конфиг неохота — включить можно прямо из консоли или RCON:
/whitelist on
Эта команда действует немедленно и заодно сама выставляет white-list=true в файле, так что после неё можно не перезапускать сервер отдельно ради конфига. Базовую настройку с нуля — что такое whitelist и зачем он нужен — можно посмотреть в статье whitelist: как настроить доступ на сервер, здесь я исхожу из того, что whitelist уже когда-то настраивался, но что-то пошло не так.
Неверный ник или UUID в whitelist.json
Вторая по частоте причина — запись в списке технически есть, но она не соответствует тому, кто реально подключается. whitelist.json выглядит так:
[
{
"uuid": "069a79f4-44e9-4726-a5be-fca90e38aec5",
"name": "Notch"
}
]
Ключевое поле здесь — uuid, а не name. Сервер сверяет подключение именно по UUID, ник — вторичное поле, которое обновляется само при следующем входе. Отсюда две типичные ошибки:
- Опечатка в нике при ручном добавлении через
/whitelist add ИмяИгрока. Ники в Minecraft чувствительны к регистру только косметически, но сама опечатка (лишняя буква, перепутанные символы) приведёт к тому, что команда либо не найдёт аккаунт вообще, либо привяжет UUID не того игрока, если ник случайно совпал с чужим. - Ручная правка файла с произвольным или устаревшим UUID. Если кто-то скопировал UUID из старого бэкапа, с другого сервера или просто ошибся при копировании из сервиса проверки UUID — запись в файле есть, но она ни на кого не указывает или указывает не на того человека.
Проверить UUID конкретного игрока можно через любой сторонний сервис проверки Mojang-аккаунтов по нику (в поиске — «minecraft uuid lookup»), либо довериться серверу: если он в онлайн-режиме, команда /whitelist add Ник сама обратится к серверам авторизации Mojang и подставит правильный UUID — ручной ввод UUID в этом случае вообще не нужен и только повышает риск опечатки.
Поднять сервер Minecraft за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверonline-mode true/false: почему UUID не совпадают
Это отдельная и частая засада, особенно на серверах, которые когда-то мигрировали между режимами или изначально настроены под пиратские клиенты. В server.properties есть параметр:
online-mode=true
Он определяет, проверяет ли сервер клиентов через авторизацию Mojang/Microsoft. От него напрямую зависит, откуда берётся UUID:
online-mode=true(лицензионный режим). UUID — настоящий, привязанный к аккаунту, выдаётся серверами авторизации. Он одинаковый на любом сервере, где играет этот же аккаунт.online-mode=false(офлайн-режим). UUID генерируется локально самим сервером на основе одного только ника (детерминированная функция от строки имени). Это значит, что офлайн-UUID для ника «Notch» на одном сервере будет совпадать с офлайн-UUID того же ника на другом офлайн-сервере — но категорически не совпадёт с настоящим лицензионным UUID того же аккаунта.
Проблема возникает, когда whitelist заполняли одним способом, а сервер работает в другом режиме — например, кто-то добавил игроков через сторонний сервис проверки лицензионных UUID, а сервер при этом в online-mode=false. Игрок подключается, сервер генерирует ему офлайн-UUID по нику, сверяет с whitelist — и не находит совпадения, потому что там лежит лицензионный UUID того же человека.
Решение: если сервер офлайн, добавляй игроков строго через /whitelist add Ник, пока сервер запущен именно в офлайн-режиме — тогда UUID в файле будет сгенерирован тем же алгоритмом, что и при реальном подключении, и они совпадут. Смешивать режимы (сначала играли в online-mode true, потом переключились на false, оставив старый whitelist) — гарантированный способ получить массовые отказы у половины списка.
Файл поправили, а сервер не заметил: нужен reload
Третья по частоте причина — файл whitelist.json отредактирован руками (например, скопирован большой список при переезде с другого сервера), но сервер продолжает работать со старой версией списка, загруженной в память при старте.
Minecraft-сервер не следит за файлом whitelist.json в реальном времени — он читает его один раз при запуске и держит в памяти. Любая ручная правка файла напрямую (через SFTP, файловый менеджер панели, текстовый редактор) не применяется автоматически. Нужно либо перезапустить сервер целиком, либо, что быстрее и не требует даунтайма, выполнить команду:
/whitelist reload
Она перечитывает файл с диска и подхватывает изменения без рестарта. Это же касается ситуации наоборот — если whitelist правили через команды /whitelist add/remove на одном инстансе, а потом файл синхронизировался куда-то ещё (например, при работе через панель с несколькими нодами) — на другом инстансе тоже нужен reload, чтобы файл в памяти совпал с файлом на диске.
Отдельно стоит проверять валидность JSON после ручной правки: лишняя запятая после последнего элемента массива или незакрытая фигурная скобка уронит парсинг всего файла при старте или reload, и тогда список вообще не загрузится — часто без явной ошибки в чате, только в логе сервера. Если после reload что-то пошло не так и сервер ведёт себя странно — как искать причину в логе, разобрано в статье логи и краш-репорты: как читать и искать причину.
Диагностика через консоль: /whitelist list и логи
Прежде чем гадать, что не так, всегда полезно посмотреть, что сервер реально считает загруженным списком, а не что лежит в файле на диске — это не всегда одно и то же, особенно если недавно правили конфиг вручную.
/whitelist list
Команда выводит в консоли (или в чате, если выполняется от игрока с правами оператора) реальный список ников, которые сервер держит в памяти прямо сейчас. Если игрока там нет — значит либо он не добавлен, либо файл не перечитан после правки, либо запись битая и не распарсилась.
Дальше стоит подключиться к серверу через SSH или консоль панели и проверить сам файл:
cat whitelist.json
Сравни вывод команды /whitelist list с содержимым файла на диске. Если они расходятся — почти наверняка не хватает /whitelist reload. Если игрока нет вообще нигде — значит проблема на шаге добавления (опечатка, не тот режим online-mode). Если файл не парсится (пустой список после reload, хотя строки в нём видны) — ищи синтаксическую ошибку JSON, самый быстрый способ — прогнать содержимое через любой онлайн-валидатор JSON или python3 -m json.tool whitelist.json, которая сразу укажет на битую строку.
Для удалённой диагностики без прямого доступа к консоли удобен RCON — команды выше выполняются точно так же через него, что особенно полезно, если нужно проверить сервер не заходя в саму игру. Подключение и базовые команды RCON разобраны в статье RCON: подключение и основные команды.
Пошаговый чек-лист: от простого к сложному
Если непонятно, с чего начинать — вот порядок, который экономит время, потому что идёт от самых частых причин к самым редким:
- Проверь
white-list=trueвserver.properties(grep white-list server.properties). - Выполни
/whitelist listи сравни с тем, кого ожидаешь там увидеть. - Если игрока нет — добавь заново командой
/whitelist add Ник, не редактируя файл руками. - Если правил
whitelist.jsonвручную — выполни/whitelist reloadили перезапусти сервер. - Проверь
online-modeвserver.properties— совпадает ли режим с тем, в каком добавлялся игрок. - Проверь валидность JSON, если после reload список выглядит пустым или урезанным.
- Убедись, что нет опечатки в нике — самый надёжный способ обойти это: добавлять по нику через команду, а не копировать UUID руками.
Таблица для быстрой сверки симптома и вероятной причины:
| Симптом | Вероятная причина |
|---|---|
| Whitelist «включён», но пускает всех подряд | white-list=false в server.properties |
| Игрока не пускает, хотя он есть в whitelist.json | UUID не совпадает с online-mode, или нужен reload |
| После правки файла ничего не изменилось | Не выполнен /whitelist reload / рестарт |
/whitelist list показывает меньше игроков, чем в файле | Битый JSON — часть записей не распарсилась |
| Сам себя не пускает на собственный сервер | Забыл добавить свой аккаунт, либо неверный UUID из-за online-mode |
Поднять сервер Minecraft за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Whitelist включён, но пускает вообще всех — в чём дело?
В 9 случаях из 10 это white-list=false в server.properties, несмотря на заполненный whitelist.json. Проверь параметр и включи через /whitelist on или правкой конфига с рестартом.
Добавил игрока по нику, а он всё равно не заходит — почему?
Скорее всего расхождение online-mode: игрока добавили в одном режиме авторизации, а сервер работает в другом, из-за чего UUID не совпадают. Переставь запись, добавив игрока заново, когда сервер уже в нужном режиме.
Правил whitelist.json вручную, а изменения не применяются — что не так?
Файл читается сервером один раз при старте и не отслеживается в реальном времени. После ручной правки нужен /whitelist reload (без рестарта) или полный перезапуск сервера.
Как узнать, что сервер реально считает загруженным whitelist прямо сейчас?
Команда /whitelist list в консоли или RCON — она показывает список в памяти, а не то, что лежит в файле на диске. Если они расходятся, дело в отсутствующем reload или битом JSON.
Можно ли доверять ручному вводу UUID вместо добавления по нику?
Можно, но это лишний риск опечатки. Надёжнее добавлять командой /whitelist add Ник — сервер в online-mode сам подтянет правильный UUID через авторизацию, без ручного копирования.