Как включить белый список (Whitelist)

1. Подготовка и доступ к серверу через панель proxify.cloud

  1. Авторизуйтесь в панели управления proxify.cloud.
  2. В списке услуг выберите нужный выделенный сервер (Dedicated Server) с установленным Ubuntu.
  3. Перейдите во вкладку Console (Консоль) или VNC для прямого доступа к командной строке сервера.
    Рекомендуется использовать SSH-клиент (Termius, PuTTY, OpenSSH) для комфортной работы: ssh root@<IP-адрес_сервера>. IP-адрес указан в деталях услуги в панели proxify.cloud.
  4. Убедитесь, что вы находитесь в системе с правами root или пользователя, от имени которого запускается сервер (например, minecraft). Дальнейшие команды предполагают выполнение от root с переключением на пользователя сервера при необходимости.

2. Остановка Minecraft-сервера перед редактированием конфигурации

Никогда не редактируйте server.properties или файлы whitelist.json, пока сервер запущен — изменения будут перезаписаны при сохранении мира или перезагрузке.

  1. Зайдите в консоль управления сервером (screen/tmux/systemd).
    • Если используется systemd (стандарт для Ubuntu на proxify.cloud):
      systemctl stop minecraft
      
    • Если сервер запущен в screen (сессия mc):
      screen -r mc
      # В консоли сервера введите:
      stop
      # Дождитесь полной остановки (появление приглашения bash).
      
    • Если используется Docker (контейнер mc-server):
      docker stop mc-server
      
  2. Проверьте, что процесс Java остановлен:
    pgrep -f "minecraft_server\|paper\|purpur\|fabric\|forge"
    
    Команда не должна вернуть PID.

3. Редактирование server.properties — активация whitelist

  1. Перейдите в директорию сервера. Типовые пути на выделенных серверах proxify.cloud:

    • /opt/minecraft
    • /home/minecraft/server
    • /var/lib/minecraft
    • /root/minecraft (если запускали от root вручную)
    cd /opt/minecraft  # Замените на ваш реальный путь
    
  2. Откройте файл конфигурации:

    nano server.properties
    
  3. Найдите параметр white-list (в новых версиях — enforce-whitelist и white-list). Приведите к следующему виду:

    white-list=true
    enforce-whitelist=true
    
    • white-list=true — включает проверку белого списка при входе.
    • enforce-whitelist=trueкритически важно: кикает игроков, не в списке, даже если они уже на сервере (после перезагрузки/релоада). Защищает от случаев, когда whitelist включили «на горячую» через консоль, но файл не обновился.
  4. Сохраните: Ctrl+O, Enter, Ctrl+X.

4. Управление белым списком: файлы и команды

4.1. Файл whitelist.json (современный формат, UUID)

Начиная с Minecraft 1.7.10/1.8, используется JSON с UUID. Путь: <путь_к_серверу>/whitelist.json.

Структура записи:

[
  {
    "uuid": "123e4567-e89b-12d3-a456-426614174000",
    "name": "PlayerName"
  }
]

Добавление игрока вручную (файловый метод):

  1. Узнайте UUID игрока по нику через официальный API Mojang:

    curl -s "https://api.mojang.com/users/profiles/minecraft/PlayerName" | jq .
    

    Ответ: {"id":"123e4567e89b12d3a456426614174000","name":"PlayerName"}. Вставьте дефисы в UUID: 123e4567-e89b-12d3-a456-426614174000.

  2. Отредактируйте файл:

    nano whitelist.json
    

    Добавьте объект в массив. Если файл пуст или отсутствует — создайте массив [].

  3. Сохраните и выйдите.

4.2. Команды в консоли сервера (оперативное управление)

Этот метод предпочтительнее — сервер сам обновит whitelist.json и применит изменения без рестарта.

  1. Запустите сервер:

    systemctl start minecraft
    # или
    screen -dmS mc java -Xms4G -Xmx4G -jar paper.jar nogui
    
  2. Зайдите в консоль:

    screen -r mc
    # или journalctl -u minecraft -f (только чтение)
    
  3. Выполните команды (требует прав оператора/оператора консоли):

    • Добавить игрока:
      whitelist add PlayerName
      
    • Удалить игрока:
      whitelist remove PlayerName
      
    • Посмотреть список:
      whitelist list
      
    • Перезагрузить список с диска (если правили файл вручную):
      whitelist reload
      
    • Включить/выключить принудительно (дублирует server.properties):
      whitelist on
      whitelist off
      
  4. Отсоединитесь от screen: Ctrl+A, затем D.

5. Настройка прав доступа к файлам (важно для безопасности на Ubuntu)

На выделенном сервере proxify.cloud сервер должен работать от отдельного пользователя, а не от root.

  1. Создайте пользователя (если нет):

    adduser --disabled-password --gecos "" minecraft
    
  2. Назначьте владельца директории сервера:

    chown -R minecraft:minecraft /opt/minecraft
    chmod -R 750 /opt/minecraft
    
  3. Настройте systemd-юнит /etc/systemd/system/minecraft.service для запуска от minecraft:

    [Unit]
    Description=Minecraft Server (Paper)
    After=network.target
    
    [Service]
    User=minecraft
    Group=minecraft
    WorkingDirectory=/opt/minecraft
    ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar paper.jar nogui
    Restart=on-failure
    RestartSec=10
    StandardInput=tty-force
    
    [Install]
    WantedBy=multi-user.target
    

    Перезагрузите демон: systemctl daemon-reload.

6. Автоматизация: скрипт для массового добавления (опционально)

Если нужно добавить список ников из файла players.txt (по одному нику в строке):

#!/bin/bash
# add_whitelist_bulk.sh
# Запуск: sudo -u minecraft bash add_whitelist_bulk.sh

SERVER_DIR="/opt/minecraft"
INPUT_FILE="players.txt"

cd "$SERVER_DIR" || exit 1

while IFS= read -r name; do
    [[ -z "$name" ]] && continue
    echo "Processing: $name"
    uuid=$(curl -s "https://api.mojang.com/users/profiles/minecraft/$name" | jq -r '.id // empty')
    if [[ -n "$uuid" ]]; then
        # Форматируем UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        uuid_fmt="${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}"
        # Добавляем через jq в whitelist.json
        tmp=$(mktemp)
        jq --arg uuid "$uuid_fmt" --arg name "$name" '. + [{"uuid": $uuid, "name": $name}]' whitelist.json > "$tmp" && mv "$tmp" whitelist.json
        echo "Added: $name ($uuid_fmt)"
    else
        echo "WARN: UUID not found for $name (name change or invalid?)"
    fi
    sleep 0.1 # Rate limit Mojang API
done < "$INPUT_FILE"

echo "Done. Run 'whitelist reload' in server console."

Сделайте исполняемым: chmod +x add_whitelist_bulk.sh.

7. Проверка работоспособности

  1. Убедитесь, что сервер запущен: systemctl status minecraft.
  2. Зайдите в консоль: screen -r mc.
  3. Выполните whitelist list. Должен вывестись список UUID и ников.
  4. Попробуйте зайти на сервер с аккаунта, не в списке. Ожидаемое сообщение: You are not whitelisted on this server!.
  5. Зайдите с аккаунта, добавленного в whitelist. Вход должен пройти успешно.
  6. Проверьте enforce-whitelist: добавьте себя в список, зайдите, затем удалите себя командой whitelist remove YourName не выходя с сервера. Через несколько секунд (обычно мгновенно) вас должно кикнуть с сообщением You are not whitelisted on this server!.

8. Резервное копирование whitelist.json

Настройте бэкап через панель proxify.cloud (снимки диска / Snapshots) или скриптом в cron:

# /etc/cron.daily/backup-mc-whitelist
#!/bin/bash
cp /opt/minecraft/whitelist.json /opt/backups/whitelist_$(date +%F).json
find /opt/backups -name "whitelist_*.json" -mtime +30 -delete

chmod +x /etc/cron.daily/backup-mc-whitelist.


Возможные проблемы и решения

1. Игрок не может зайти, хотя ник в whitelist list

  • Причина: В whitelist.json старый ник, а игрок сменил имя. UUID совпадает, но сервер сверяет ник при логине (в новых версиях — только UUID, но кэш клиента/сервера может глючить).
  • Решение: Выполните whitelist reload в консоли. Сервер обновит ники по UUID из профилей Mojang. Либо удалите и добавьте заново: whitelist remove OldName -> whitelist add NewName.

2. whitelist add пишет Player not found / Could not find profile

  • Причина: Игрок никогда не покупал лицензию (пиратка) / ошибка в нике / проблемы с API Mojang.
  • Решение:
    • Для пиратских серверов (с плагином AuthMe и online-mode=false): whitelist на уровне сервера не работает по UUID. Используйте плагин Whitelist (например, SimpleWhitelist или LuckPerms с нодой whitelist.bypass) или настройте whitelist в BungeeCord/Velocity.
    • Для лицензионных: проверьте ник на https://namemc.com. Подождите 1-2 минуты (кэш API Mojang).

3. После ребута сервера