Как добавить игрока в белый список

Введение

Данная инструкция описывает процесс добавления игрока в белый список (whitelist) Minecraft-сервера, развернутого на выделенном сервере с Ubuntu под управлением панели proxify.cloud (виртуализация Proxmox). Рассматриваются три основных способа: через консоль сервера, через файл конфигурации и через RCON. Все команды проверены на актуальных версиях Paper/Spigot/Purpur (1.18–1.21.x).


1. Подготовка и доступ к серверу

1.1. Вход в панель proxify.cloud

  1. Откройте браузер и перейдите по адресу вашей панели proxify.cloud (обычно https://panel.proxify.cloud или кастомный домен).
  2. Авторизуйтесь под учётной записью администратора.
  3. В списке серверов выберите нужный контейнер (CT) или виртуальную машину (VM) с Ubuntu, где запущен Minecraft-сервер.
  4. Нажмите кнопку Console (Консоль) или используйте SSH-доступ (рекомендуется для работы с файлами).

Совет: SSH-доступ быстрее и удобнее для редактирования файлов. Данные для подключения (IP, порт, логин/пароль или ключ) указаны во вкладке Network или Access панели proxify.cloud.

1.2. Подключение по SSH

ssh root@<IP-адрес_сервера> -p <SSH-порт>
# Пример:
ssh root@192.0.2.10 -p 2222

Если используется ключ:

ssh -i ~/.ssh/id_rsa root@192.0.2.10 -p 2222

1.3. Переход в пользователя сервера (best practice)

На панели proxify.cloud серверы часто запускаются от отдельного пользователя (например, minecraft, mcserver или ubuntu). Не работайте от root внутри контейнера.

su - minecraft
# или
sudo -u minecraft -s

Перейдите в директорию сервера (стандартный путь на proxify.cloud):

cd /home/minecraft/server
# или
cd /opt/minecraft/server
# Уточните точный путь командой:
ls -la /home/minecraft/  # или /opt/

2. Проверка статуса белого списка

Перед добавлением убедитесь, что whitelist включен.

2.1. Через консоль сервера (в панели proxify.cloud или screen/tmux)

Если сервер запущен в screen (стандарт для proxify.cloud):

screen -r minecraft
# В консоли сервера введите:
whitelist list

Вывод покажет текущих игроков в списке и статус: Whitelist is enabled / disabled.

2.2. Через файл server.properties

cat server.properties | grep whitelist

Ожидаемый результат:

enforce-whitelist=true
white-list=true

Если false — включите (см. раздел 5).


3. Способ 1: Добавление через игровую консоль (Команды оператора)

Самый быстрый способ, не требующий перезагрузки сервера. Требует прав оператора (OP) или доступа к консоли панели proxify.cloud.

3.1. Открытие консоли

  • В панели proxify.cloud: вкладка Console у нужного контейнера/VM.
  • Через SSH: screen -r minecraft (для выхода: Ctrl+A затем D).

3.2. Выполнение команд

Добавление игрока по нику (игрок не обязан быть онлайн):

whitelist add <Ник_Игрока>

Пример:

whitelist add Steve_Builder

Успешный ответ:

[Server thread/INFO]: Added Steve_Builder to the whitelist

Добавление нескольких игроков сразу (через пробел не работает, вводите по очереди или используйте цикл в bash — см. раздел 6).

3.3. Проверка

whitelist list

Вывод:

[Server thread/INFO]: Whitelisted players: Steve_Builder, Alex_Miner
[Server thread/INFO]: Whitelist is enabled.

4. Способ 2: Редактирование файла whitelist.json (Ручное/Автоматизированное)

Файл whitelist.json хранит UUID и ники. Находится в корневой папке сервера.

4.1. Остановка сервера (Обязательно!)

Редактирование файла на работающем сервере приведет к потере изменений при следующей автосохранке или перезаписи сервером. В консоли proxify.cloud или SSH:

stop

Дождитесь полной остановки (процесс исчезнет из screen -ls или htop).

4.2. Получение UUID игрока

Ники в файле привязаны к UUID. Используйте официальный API Mojang:

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

Ответ:

{
  "id": "123e4567e89b12d3a456426614174000",
  "name": "Steve_Builder"
}

Если jq не установлен: apt update && apt install -y jq (требует root/sudo).

4.3. Редактирование файла

nano whitelist.json

Структура массива объектов:

[
  {
    "uuid": "123e4567-e89b-12d3-a456-426614174000",
    "name": "Steve_Builder"
  },
  {
    "uuid": "987fcdeb-56a8-4321-b876-543210fedcba",
    "name": "Alex_Miner"
  }
]

Важно: UUID записывайте с дефисами (стандартный формат 8-4-4-4-12). Сервер сам приведет к нужному виду при загрузке, но стандарт безопаснее.

Добавьте новый объект в массив, соблюдая запятые между элементами. После последнего элемента запятая не нужна.

Сохранить: Ctrl+O, Enter. Выйти: Ctrl+X.

4.4. Запуск сервера

В панели proxify.cloud нажмите Start или через SSH:

screen -S minecraft -d -m bash start.sh
# или ваш скрипт запуска, например:
./start.sh

5. Способ 3: Использование RCON (Для автоматизации и панелей управления)

Если у вас настроен RCON (порт и пароль в server.properties), можно добавлять игроков удаленно без входа в консоль proxify.cloud.

5.1. Проверка настроек RCON

grep -E "rcon\.(port|password|enable)" server.properties

Пример вывода:

enable-rcon=true
rcon.port=25575
rcon.password=StrongPassword123

5.2. Установка rcon-cli (на локальной машине или сервере)

# Ubuntu/Debian
sudo apt update && sudo apt install -y golang-go
go install github.com/itzg/rcon-cli@latest
# Бинарник будет в ~/go/bin/rcon-cli

5.3. Команда добавления

~/go/bin/rcon-cli -a <IP_сервера>:25575 -p "StrongPassword123" "whitelist add Steve_Builder"

Для локального вызова (из контейнера proxify.cloud):

~/go/bin/rcon-cli -a 127.0.0.1:25575 -p "StrongPassword123" "whitelist add Steve_Builder"

6. Массовое добавление игроков (Скрипт Bash)

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

6.1. Создание скрипта bulk_whitelist.sh

nano bulk_whitelist.sh

Содержимое:

#!/bin/bash
# Путь к файлу с никами
INPUT_FILE="players.txt"
# Путь к whitelist.json
WL_FILE="whitelist.json"
# API Mojang
API_URL="https://api.mojang.com/users/profiles/minecraft/"

# Проверка файлов
if [[ ! -f "$INPUT_FILE" ]]; then
    echo "Файл $INPUT_FILE не найден!"
    exit 1
fi

# Создаем бэкап
cp "$WL_FILE" "${WL_FILE}.bak.$(date +%F_%H-%M-%S)"

# Читаем текущий JSON в переменную (массив)
# Используем jq для безопасного манипулирования
JSON_CONTENT=$(cat "$WL_FILE")

while IFS= read -r NICK || [[ -n "$NICK" ]]; do
    # Пропуск пустых строк и комментариев
    [[ -z "$NICK" || "$NICK" =~ ^# ]] && continue

    echo "Обработка: $NICK"
    
    # Запрос UUID
    RESPONSE=$(curl -s -H "Accept: application/json" "${API_URL}${NICK}")
    UUID=$(echo "$RESPONSE" | jq -r '.id // empty')
    NAME=$(echo "$RESPONSE" | jq -r '.name // empty')

    if [[ -z "$UUID" ]]; then
        echo "  [WARN] Игрок $NICK не найден (премиум/пиратка/ошибка API). Пропуск."
        continue
    fi

    # Форматирование UUID с дефисами
    UUID_FORMATTED=$(echo "$UUID" | sed -E 's/(.{8})(.{4})(.{4})(.{4})(.{12})/\1-\2-\3-\4-\5/')

    # Проверка на дубликат в текущем JSON
    if echo "$JSON_CONTENT" | jq -e --arg uuid "$UUID_FORMATTED" 'map(.uuid) | index($uuid)' > /dev/null; then
        echo "  [INFO] $NAME ($UUID_FORMATTED) уже в списке."
        continue
    fi

    # Добавление в JSON
    JSON_CONTENT=$(echo "$JSON_CONTENT" | jq --arg uuid "$UUID_FORMATTED" --arg name "$NAME" '. + [{"uuid": $uuid, "name": $name}]')
    echo "  [OK] Добавлен: $NAME ($UUID_FORMATTED)"
    
    # Пауза чтобы не попасть в rate limit Mojang (100 req/мин)
    sleep 0.6
done < "$INPUT_FILE"

# Запись результата
echo "$JSON_CONTENT" | jq '.' > "$WL_FILE"
echo "Готово. Обновлен $WL_FILE"

6.2. Запуск

chmod +x bulk_whitelist.sh
# Остановите сервер перед запуском!
stop
# В консоли сервера или через панель proxify.cloud
./bulk_whitelist.sh
# Запустите сервер
./start.sh

7. Включение белого списка (Если был выключен)

Если white-list=false в server.properties: