Palworld Руководство

Приватный сервер Palworld: пароль на вход и REST-доступ через SSH

Подключите REST API Palworld через SSH без открытия административного порта в интернет.

Приватный сервер Palworld: пароль на вход и REST-доступ через SSH

Задайте разные пароли для входа в Palworld и администрирования, а REST оставьте доступным только по выбранному приватному пути. Pocketpair прямо предупреждает: API не предназначен для прямой публикации в интернете. Наличие пароля это ограничение не отменяет.

Инструкция рассчитана на существующий dedicated-сервер на Linux VPS, SSH-доступ к игровому хосту и OpenSSH с curl на компьютере администратора. Используется REST из актуального руководства сервера. На Windows отличается каталог конфигурации; принцип доступа остаётся тем же.

Через SSH проходит административный HTTP-трафик. Игроки подключаются к отдельному игровому адресу.

Разделите вход в игру, поиск сервера и управление#

ServerPassword отвечает за вход игроков. AdminPassword выдаёт административные права; его же REST использует как пароль в Basic-аутентификации с именем пользователя admin. Это не пароль SSH, не имя Linux-пользователя и не данные Steam.

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

Для небольшой группы удобно зафиксировать три разрешённых пути: игроки к игровому порту, операторы к SSH, приватный мониторинг к REST. Если REST никому не нужен, оставьте его выключенным. Значение в примере контейнера не является причиной включать административный интерфейс.

Меняйте рабочую конфигурацию, сохраняя остальные поля#

Штатно остановите игру и сохраните копию активных настроек. На Linux это Pal/Saved/Config/LinuxServer/PalWorldSettings.ini, на Windows в том же пути используется WindowsServer. Правка DefaultPalWorldSettings.ini не изменяет рабочую конфигурацию.

В существующем значении OptionSettings=(...) задайте разные надёжные ServerPassword и AdminPassword, включите RESTAPIEnabled=True и укажите RESTAPIPort, в примере 8212. Это поля уже существующих настроек, а не отдельные INI-секции. Не заменяйте длинную строку четырьмя полями, потеряв остальные правила мира.

Если контейнер генерирует файл из переменных окружения, изменяйте исходные параметры генератора. Иначе при старте ручная правка исчезнет и вы будете проверять пароль, которого игра не загружала. Названия переменных и их соответствие полям зависят от конкретного образа.

Сначала подготовьте приватный сетевой путь#

Для прямой установки до запуска закройте внешний TCP-доступ к 8212 на уровне провайдера и сетевой политики хоста. SSH-служба на игровом хосте должна иметь возможность обратиться к 127.0.0.1:8212. Не считайте, что RESTAPIPort одновременно задаёт привязку слушателя к loopback.

Для обычной Docker bridge-сети с NAT на актуальном Engine публикуйте REST только на loopback хоста. Нужный элемент в списке ports существующего сервиса Palworld:

yaml
- "127.0.0.1:8212:8212/tcp"

Замените им публикацию этого же порта на все интерфейсы; не оставляйте обе записи. Игровой UDP-порт настраивается отдельно. Это фрагмент Compose, а не полное описание сервиса. Он не относится к host networking, Swarm и маршрутизируемым сетям контейнеров. Docker также документирует доступ соседей по сети к localhost-публикациям в версиях Engine до 28.0.0; обновите Engine либо отдельно учтите это ограничение.

Примените сетевое изменение в согласованный перерыв. С внешней машины убедитесь, что публичный REST недоступен, включая публичный IPv6 при его наличии. Проверяйте реальный маршрут вместе с политикой. Успешный локальный HTTP-запрос ничего не говорит о внешней доступности.

Откройте туннель и запросите информацию#

На своём компьютере замените operator@server.example.com на SSH-пользователя и адрес именно игрового хоста. Оставьте терминал работающим:

bash
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:18212:127.0.0.1:8212 operator@server.example.com

Порт 18212 принадлежит вашему компьютеру, а 8212 — удалённому хосту. Адрес назначения loopback рассматривается со стороны SSH-сервера. Если SSH заканчивается на бастионе или в другом контейнере, его loopback не превращается в адрес игрового хоста. Исправьте маршрут вместо публикации REST наружу.

Во втором локальном терминале запросите информацию о сервере:

bash
curl --noproxy '*' --connect-timeout 5 --max-time 15 --silent --show-error --include --basic --user admin http://127.0.0.1:18212/v1/api/info

curl предложит ввести настроенный AdminPassword. Пароль не попадёт в историю вместе с командой. В Windows PowerShell используйте curl.exe, если имя curl занято алиасом. HTTP-запрос проходит интернет внутри SSH и только на хосте достигает обычного HTTP-сервиса игры. Сама Basic-аутентификация не шифрует канал, а Base64 не заменяет туннель.

Ищите ошибку на соответствующем уровне#

НаблюдениеСледующая проверка
SSH не может занять 18212Выберите свободный локальный порт и измените адрес curl соответственно.
SSH сообщает об ошибке перенаправленного соединенияПроверьте слушатель, рабочую конфигурацию и адрес назначения из сети SSH-хоста.
curl получает отказ или тайм-аутПроверьте, что туннель открыт и направлен на нужный хост и порт.
HTTP 401Проверьте admin, действующий AdminPassword, перезапуск и генератор настроек. Пароль для игроков другой.
HTTP 404Проверьте путь /v1/api/info и убедитесь, что отвечает Palworld, а не соседний сервис.
HTTP 200 с ожидаемой информациейСопоставьте servername, version и worldguid: другой экземпляр тоже способен ответить успешно.

Не проверяйте авторизацию командами выключения, бана или принудительной остановки. /info достаточно для проверки маршрута без изменения мира. Для будущей автоматизации сохраните тот же приватный путь. Административный пароль остаётся привилегированным, даже если интеграция читает только статус: ограничьте доступ к файлу с ним, скрывайте заголовки в журналах и меняйте пароль после раскрытия. Управление инфраструктурой на собственном VPS можно организовать через Nexardo; приватный доступ к игровому API всё равно требует явной настройки.

Источники#