Pterohost docs

Whitelist, бан и модерация Palworld-сервера

Модерация Palworld: бан и кик по SteamID через RCON, banlist.json, BanListURL от Pocketpair, приватный вход через ServerPassword и bUseAuth, защита от гриферов.

Публичный Palworld-сервер без модерации быстро превращается в помойку: боты-регистрации, гриферы, ломающие чужие базы, спам в чате. У Palworld нет привычного whitelist из коробки, но есть полноценный арсенал для контроля - бан и кик по SteamID через RCON и внутриигровые команды, глобальный список банов Pocketpair, приватный вход по паролю и набор anti-grief параметров в конфиге. В этой статье собран рабочий workflow модерации: как банить и разбанивать, где хранятся баны, чем заменить отсутствующий whitelist и как закрутить гайки против гриферов. Установку сервера тут не дублируем - она разобрана в установке Palworld dedicated server, а базовый PalWorldSettings.ini - в настройках Palworld-сервера.

Модель идентификации игроков

Вся модерация в Palworld строится вокруг SteamID64 - 17-значного числа, привязанного к Steam-аккаунту игрока. При включённой авторизации (bUseAuth=True) сервер знает реальный Steam ID каждого подключившегося, и именно по нему выдаются баны и кики.

Есть два формата идентификатора, и их важно не путать:

ФорматПримерГде встречается
SteamID64 (raw)76561198012345678Вывод ShowPlayers, banlist.json
Palworld UIDsteam_76561198012345678Аргумент команд BanPlayer/KickPlayer
Внутриигровой PlayerUID123456789Некоторые команды и REST API

Первым делом получаем список онлайна с идентификаторами - без него банить некого. Команда ShowPlayers возвращает CSV: имя, PlayerUID и SteamID.

rcon -a 127.0.0.1:25575 -p strong-admin-pass "ShowPlayers"

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

name,playeruid,steamid
Griefer99,123456789,76561198012345678
FriendlyBob,987654321,76561198087654321

SteamID из последней колонки - это то, что нужно для бана. Подробный разбор всех RCON-команд собран в RCON-командах Palworld.

Бан и кик через RCON

RCON - основной канал модерации на боевом сервере: работает с любого клиента (rcon-cli, mcrcon), не требует захода в игру и легко скриптуется. Убедитесь, что в PalWorldSettings.ini включено RCONEnabled=True и задан RCONPort=25575.

Команды модерации

КомандаАргументДействие
KickPlayer steam_<SteamID64>SteamID64Отключить игрока сейчас, вход не блокируется
BanPlayer steam_<SteamID64>SteamID64Забанить: кик + запись в banlist.json
UnBanPlayer steam_<SteamID64>SteamID64Снять бан, удалить из banlist.json
ShowPlayers-Список онлайна с SteamID
Broadcast <text>текстПредупреждение в чат (подчёркивания = пробелы)

Практические примеры. Кикнуть игрока (например, за AFK или мелкое нарушение - вход остаётся открытым):

rcon -a 127.0.0.1:25575 -p strong-admin-pass "KickPlayer steam_76561198012345678"

Забанить гриффера навсегда:

rcon -a 127.0.0.1:25575 -p strong-admin-pass "BanPlayer steam_76561198012345678"

Снять ошибочный бан:

rcon -a 127.0.0.1:25575 -p strong-admin-pass "UnBanPlayer steam_76561198012345678"

Важные нюансы:

  • Префикс steam_ обязателен. Команда BanPlayer 76561198012345678 без префикса на большинстве билдов не срабатывает или банит “в никуда”.
  • Кик не равен бану. KickPlayer только разрывает текущую сессию - игрок тут же может зайти снова. Для перманентной блокировки нужен BanPlayer.
  • Бан действует моментально. Забаненный получает разрыв соединения, а при попытке переподключиться отсекается на этапе авторизации.

Внутриигровые команды администратора

Если вы играете на своём сервере и вошли как админ (ввели AdminPassword через меню или команду /AdminPassword <pass> в чате), те же действия доступны прямо в игровом чате:

/BanPlayer steam_76561198012345678
/KickPlayer steam_76561198012345678
/UnBanPlayer steam_76561198012345678
/ShowPlayers

Внутриигровые команды удобны для быстрой реакции “на месте”, но для полноценной модерации публичного сервера RCON надёжнее - он не зависит от того, залогинен ли админ в мире. Полный список админ-команд смотрите в админ-командах Palworld.

Где хранятся баны: banlist.json

После первого BanPlayer сервер создаёт файл со списком банов:

Pal/Saved/SaveGames/Config/banlist.json

Формат - простой JSON-массив строк с идентификаторами в Palworld-нотации:

[
  "steam_76561198012345678",
  "steam_76561198055554444"
]

Этот файл - источник правды для локальных банов. Что с ним важно знать:

  • Правка вручную возможна, но только при остановленном сервере. Palworld держит список в памяти и перезаписывает файл при выходе - если редактировать на живом сервере, изменения затрутся. Останавливаем сервис, правим JSON, запускаем.
  • Массовый импорт. Если переносите баны со старого сервера или хотите заранее забанить известных читеров - просто сформируйте корректный JSON-массив и положите его в Config/banlist.json до старта.
  • Бэкап. Файл крохотный, но при переустановке сервера его легко потерять. Включите Config/ в свой бэкап-скрипт вместе с папкой SaveGames.
  • Синтаксис критичен. Битый JSON (лишняя запятая, незакрытая скобка) может привести к тому, что сервер проигнорирует весь список. После ручной правки проверьте файл через python3 -m json.tool banlist.json.

Пример проверки и бэкапа:

# Валидация JSON
python3 -m json.tool /home/palworld/palserver/Pal/Saved/SaveGames/Config/banlist.json

# Бэкап конфигов вместе с сейвами
tar -czf /backups/palworld-config-$(date +%F).tar.gz \
  -C /home/palworld/palserver/Pal/Saved SaveGames/Config

Глобальный BanListURL от Pocketpair

Помимо локального banlist.json, Palworld умеет сверять подключающихся с глобальным списком банов Pocketpair. За это отвечает параметр в PalWorldSettings.ini:

BanListURL="https://api.palworldgame.com/api/banlist.txt"

Это значение стоит по умолчанию и менять его не нужно. Сервер при старте и подключении игроков подгружает список забаненных глобально аккаунтов (пойманные на читах, массовом гриферстве) и не пускает их. По сути это бесплатный anti-cheat-слой от разработчика.

Когда трогать этот параметр:

  • Оставить как есть - рекомендованный вариант для 99% серверов. Глобальный список работает в вашу пользу.
  • Свой URL - только если у вас сеть серверов и вы хотите централизованно раздавать собственный список банов. Тогда BanListURL указывает на ваш эндпоинт, отдающий .txt с идентификаторами. Это продвинутый сценарий, требующий своей инфраструктуры.
  • Пустое значение отключает сверку с глобальным списком - делать так не стоит, вы лишаетесь защиты без всякой выгоды.

Pterohost - игровой хостинг с DDoS-защитой и RCON из коробки для быстрой модерации Palworld. Промокод 4START даёт -20% на первый заказ. Арендовать Palworld сервер

Whitelist: чем заменить отсутствующий белый список

Главное разочарование администраторов: в ванильном Palworld нет whitelist по SteamID. Нельзя задать список разрешённых аккаунтов и отсечь всех остальных штатными средствами. Но задачу “пускать только своих” решают три подхода.

Вариант 1: ServerPassword - приватный сервер по паролю

Самый простой и надёжный способ сделать сервер закрытым - задать пароль входа:

ServerPassword="secret2026"

При заданном ServerPassword клиент запрашивает пароль перед заходом в мир. Никто без пароля не подключится - фактически это whitelist “по знанию пароля”. Плюсы: работает из коробки, не требует модов. Минусы: пароль легко расшарить, отозвать доступ конкретному человеку без смены пароля для всех нельзя.

Практика: для клановых и приватных серверов ServerPassword закрывает 90% потребности. Меняйте пароль периодически, если состав игроков поменялся.

Вариант 2: bUseAuth - защита от ботов и пираток

bUseAuth=True

Это не whitelist, но обязательный базовый барьер. С включённой авторизацией:

  • Каждый игрок подключается под реальным Steam-аккаунтом, SteamID виден в ShowPlayers.
  • Боты и клиенты без валидной Steam-аутентификации отсекаются - именно они массово регистрируются и гриферят на открытых серверах.
  • Баны по SteamID работают надёжно, потому что идентификатор нельзя подделать.

bUseAuth=True должен стоять на любом публичном сервере. Отключать его - значит открыть дверь ботоводам.

Вариант 3: community-моды для белого списка

Если нужен именно классический whitelist по SteamID (пускать только перечисленные аккаунты), это реализуют сторонние решения:

  • Серверные плагины на базе UE4SS-модов, читающие свой whitelist.txt и кикающие всех, кого в нём нет.
  • Внешние обёртки-мониторы (скрипты, дергающие REST API /v1/api/players и вызывающие KickPlayer для чужаков).

Минус - нестабильность: моды не поддерживаются Pocketpair и ломаются с обновлениями сервера. Про моддинг-инфраструктуру подробнее в статье о модах Palworld-сервера. Для боевого сервера комбинация ServerPassword + bUseAuth обычно предпочтительнее хрупких модов.

ЗадачаШтатное решениеОговорка
Закрыть сервер для чужихServerPasswordПароль расшаривается, точечно не отозвать
Отсечь ботов и пираткиbUseAuth=TrueОбязательно на публичных серверах
Список разрешённых SteamIDcommunity-модНестабилен, ломается на обновлениях
Заблокировать конкретногоBanPlayerРаботает из коробки, самый надёжный

Защита от гриферов: anti-grief настройки

Даже с закрытым входом гриферство возможно - внутри клана или на публичном PvE. Несколько параметров PalWorldSettings.ini снимают львиную долю проблем.

Урон между игроками и постройками

bEnablePlayerToPlayerDamage=False
bEnableFriendlyFire=False

bEnablePlayerToPlayerDamage=False полностью выключает урон игрок-по-игроку. Это база любого мирного PvE-сервера: нельзя убить чужого перса, нельзя устраивать засады на новичков. bEnableFriendlyFire=False дополнительно защищает от урона по своим внутри гильдии.

Ограничение зон строительства

bBuildAreaLimit=True
bEnableDefenseOtherGuildPlayer=False

bBuildAreaLimit=True запрещает застраивать чужие базовые зоны - классический приём гриферов, которые ставят фундаменты вокруг чужой базы, блокируя выход и NPC. С включённым лимитом это не пройдёт.

Лимит спама в чате

ChatPostLimitPerMinute=10

Ограничивает число сообщений от одного игрока в минуту. Значение 10 - разумный дефолт: живому человеку хватает, а спам-боты и провокаторы упираются в лимит. Для более строгих серверов можно снизить до 5.

Сводная таблица anti-grief

ПараметрЗначениеЧто предотвращает
bEnablePlayerToPlayerDamageFalseУбийства игроков, PvP-засады
bEnableFriendlyFireFalseУрон по своим в гильдии
bBuildAreaLimitTrueЗастройку и блокировку чужих баз
bEnableDefenseOtherGuildPlayerFalseАгрессию защитных палов на чужих
ChatPostLimitPerMinute10Спам и флуд в чате
bUseAuthTrueБотов и поддельные аккаунты
bCanPickupOtherGuildDeathPenaltyDropFalseКражу дропа чужой смерти

После правки любого из этих параметров сервер нужно перезапустить. Полный конфиг с расшифровкой всех опций - в настройках Palworld-сервера.

Готовый workflow модерации

Как это работает вместе на боевом публичном сервере:

  1. Базовый барьер входа. В конфиге стоят bUseAuth=True и BanListURL по умолчанию - боты и глобально забаненные не заходят. Для клановых серверов дополнительно ServerPassword.
  2. Anti-grief по умолчанию. bEnablePlayerToPlayerDamage=False, bBuildAreaLimit=True, ChatPostLimitPerMinute=10 - гриферу нечего ломать, а спамить не даёт лимит.
  3. Реакция на инцидент. Жалоба в чате -> ShowPlayers через RCON -> находим SteamID нарушителя.
  4. Первое нарушение - предупреждение и кик. Broadcast с предупреждением, затем KickPlayer если игнорирует.
  5. Повтор - перманентный бан. BanPlayer steam_<id>, запись автоматически уходит в banlist.json.
  6. Разбор ошибок. Ошибочный бан снимается UnBanPlayer, при необходимости - ручной правкой banlist.json на остановленном сервере.
  7. Бэкап. Папка Config/ (с banlist.json) и SaveGames/ попадают в ежедневный бэкап.

Пример скрипта быстрого бана с предупреждением всем:

#!/bin/bash
# ban.sh steam_76561198012345678 "reason"
RCON="rcon -a 127.0.0.1:25575 -p strong-admin-pass"
STEAMID=$1
REASON=$2

$RCON "Broadcast Player_banned_for_${REASON}"
$RCON "BanPlayer ${STEAMID}"
echo "Banned ${STEAMID} at $(date)" >> /var/log/palworld-bans.log

Ведение лога банов (последняя строка скрипта) помогает разбирать спорные ситуации и не банить одного и того же по кругу.

Pterohost - готовый Palworld в один клик с бэкапами конфигов и защитой от DDoS. Промокод 4START даёт -20% на первый заказ. Заказать Palworld хостинг

Часто задаваемые вопросы

Как забанить игрока на Palworld-сервере по SteamID?

Через RCON командой BanPlayer steam_<SteamID64> или внутриигровой командой /BanPlayer для админа. SteamID64 берётся из вывода ShowPlayers. Бан заносится в Config/banlist.json и действует сразу, кикая игрока с сервера.

Есть ли в Palworld whitelist из коробки?

Нет, официальный белый список отсутствует. Ограничить вход можно через ServerPassword (приватный сервер по паролю) и bUseAuth=True (проверка Steam-аккаунтов от ботов). Полноценный whitelist по SteamID реализуют только community-моды.

Где хранится список банов Palworld?

В файле Pal/Saved/SaveGames/Config/banlist.json внутри папки сервера. Он создаётся после первого бана и содержит массив SteamID в формате steam_. Файл можно править вручную при остановленном сервере.

Что такое BanListURL и нужно ли его менять?

BanListURL - ссылка на глобальный список банов Pocketpair (api.palworldgame.com). Сервер сверяет по нему подключающихся и не пускает глобально забаненных читеров. Значение по умолчанию менять не нужно - оставьте его как есть.

Как защитить Palworld-сервер от гриферов?

Отключите PvP-урон через bEnablePlayerToPlayerDamage=False, запретите постройки в чужих зонах через bBuildAreaLimit=True, ограничьте спам чата через ChatPostLimitPerMinute и включите bUseAuth. Злостных нарушителей банят по SteamID через RCON.