Сервер Palworld на VPS: установка и оптимизация

Игровые серверы
Сервер Palworld на VPS: установка и оптимизация

Palworld — одна из самых ресурсоёмких выживалок последних лет: даже небольшой приватный сервер на 4–8 игроков стабильно потребляет 12–16 ГБ RAM в активной игре. Если вы хотите развернуть palworld сервер для своей компании и получить стабильный аптайм без лагов — обычного бюджетного VPS не хватит. В этой статье разберём честные требования к железу, пошаговую установку через SteamCMD на Ubuntu, тонкую настройку конфигурационных файлов и оптимизацию использования памяти. Никаких обещаний «запустить на минималках» — только рабочие рекомендации.

Требования к железу: честно о ресурсах

Прежде чем перейти к установке, важно понять реальные требования Palworld Dedicated Server.

ИгрокиRAMCPUДиск
2–412 ГБ6+ vCPU20 ГБ
4–816 ГБ8+ vCPU30 ГБ
8–1620–24 ГБ12+ vCPU40 ГБ
16–3228–32 ГБ16+ vCPU50 ГБ

Palworld активно использует многопоточность и потребляет память пропорционально числу активных игроков, загруженных чанков и пойманных палов.

Рекомендуемый тариф для Palworld на Cheap-Host:

  • До 8 игроков: Pro (750 ₽/мес) — 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe
  • До 16–32 игроков: Ultra (1500 ₽/мес) — 20 vCPU, 32 ГБ RAM, 192 ГБ NVMe

Тариф Start (8 ГБ RAM) для Palworld не подходит — сервер будет нестабилен уже при 2–3 одновременных игроках.

Подробный разбор требований к ресурсам разных игровых серверов — в статье Сколько ресурсов нужно игровому серверу.

Подготовка сервера Ubuntu

Все команды выполняются от root или через sudo. Рекомендуемая ОС — Ubuntu 22.04 LTS.

# Обновляем систему
apt update && apt upgrade -y

# Устанавливаем необходимые зависимости
apt install -y \
    lib32gcc-s1 \
    steamcmd \
    curl \
    wget \
    screen \
    htop \
    unzip

Если steamcmd недоступен в стандартных репозиториях — добавляем multiverse и i386:

add-apt-repository multiverse
dpkg --add-architecture i386
apt update
apt install -y steamcmd

Создание отдельного пользователя

Запускать игровой сервер от root — плохая практика. Создадим отдельного пользователя:

useradd -m -s /bin/bash palworld
passwd palworld

# Переходим под пользователя
su - palworld

Все дальнейшие команды выполняются от пользователя palworld.

Установка Palworld Dedicated Server через SteamCMD

# Создаём директории
mkdir -p ~/palworld-server
mkdir -p ~/steamcmd

# Скачиваем SteamCMD (если не установлен через apt)
cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

# Устанавливаем Palworld Dedicated Server
# App ID: 2394010
~/steamcmd/steamcmd.sh \
    +@sSteamCmdForcePlatformType linux \
    +force_install_dir ~/palworld-server \
    +login anonymous \
    +app_update 2394010 validate \
    +quit

Загрузка займёт несколько минут — размер сервера около 5–7 ГБ. SteamCMD покажет прогресс в процентах.

Проверка установки

ls -la ~/palworld-server/
# Должны увидеть: PalServer.sh, Engine/, Pal/ и другие директории

# Проверяем исполняемый файл
file ~/palworld-server/PalServer.sh

Первый запуск и генерация конфигов

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

cd ~/palworld-server
./PalServer.sh \
    -port=8211 \
    -players=16 \
    -useperfthreads \
    -NoAsyncLoadingThread \
    -UseMultithreadForDS \
    &

# Ждём 30–60 секунд, затем останавливаем
sleep 60
kill %1

После первого запуска появится файл конфигурации:

ls ~/palworld-server/Pal/Saved/Config/LinuxServer/
# PalWorldSettings.ini — основной конфиг

Настройка PalWorldSettings.ini

Это главный конфигурационный файл сервера. Откройте его:

nano ~/palworld-server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

Базовая конфигурация для стабильной работы:

[/Script/Pal.PalGameWorldSettings]
OptionSettings=(
    Difficulty=None,
    DayTimeSpeedRate=1.000000,
    NightTimeSpeedRate=1.000000,
    ExpRate=1.000000,
    PalCaptureRate=1.000000,
    PalSpawnNumRate=1.000000,
    PalDamageRateAttack=1.000000,
    PalDamageRateDefense=1.000000,
    PlayerDamageRateAttack=1.000000,
    PlayerDamageRateDefense=1.000000,
    PlayerStomachDecreaceRate=1.000000,
    PlayerStaminaDecreaceRate=1.000000,
    PlayerAutoHPRegeneRate=1.000000,
    PlayerAutoHpRegeneRateInSleep=1.000000,
    PalStomachDecreaceRate=1.000000,
    PalStaminaDecreaceRate=1.000000,
    PalAutoHPRegeneRate=1.000000,
    PalAutoHpRegeneRateInSleep=1.000000,
    BuildObjectDamageRate=1.000000,
    BuildObjectDeteriorationDamageRate=1.000000,
    CollectionDropRate=1.000000,
    CollectionObjectHpRate=1.000000,
    CollectionObjectRespawnSpeedRate=1.000000,
    EnemyDropItemRate=1.000000,
    DeathPenalty=All,
    bEnablePlayerToPlayerDamage=False,
    bEnableFriendlyFire=False,
    bEnableInvaderEnemy=True,
    bActiveUNKO=False,
    bEnableAimAssistPad=True,
    bEnableAimAssistKeyboard=False,
    DropItemMaxNum=3000,
    DropItemMaxNum_UNKO=100,
    BaseCampMaxNum=128,
    BaseCampWorkerMaxNum=15,
    DropItemAliveMaxHours=1.000000,
    bAutoResetGuildNoOnlinePlayers=False,
    AutoResetGuildTimeNoOnlinePlayers=72.000000,
    GuildPlayerMaxNum=20,
    PalEggDefaultHatchingTime=72.000000,
    WorkSpeedRate=1.000000,
    bIsMultiplay=True,
    bIsPvP=False,
    bCanPickupOtherGuildDeathPenaltyDrop=False,
    bEnableNonLoginPenalty=True,
    bEnableFastTravel=True,
    bIsStartLocationSelectByMap=True,
    bExistPlayerAfterLogout=False,
    bEnableDefenseOtherGuildPlayer=False,
    CoopPlayerMaxNum=4,
    ServerPlayerMaxNum=16,
    ServerName="My Palworld Server",
    ServerDescription="Powered by Cheap-Host",
    AdminPassword="ЗАМЕНИТЕ_НА_НАДЁЖНЫЙ_ПАРОЛЬ",
    ServerPassword="",
    PublicPort=8211,
    PublicIP="",
    RCONEnabled=False,
    RCONPort=25575,
    Region="",
    bUseAuth=True,
    BanListURL="https://api.palworldgame.com/api/banlist.txt"
)

Обязательно замените AdminPassword на надёжный пароль.

Оптимизация памяти для Palworld

Palworld известен утечками памяти и высоким потреблением RAM. Несколько методов оптимизации:

Параметры запуска для снижения нагрузки

./PalServer.sh \
    -port=8211 \
    -players=16 \
    -useperfthreads \
    -NoAsyncLoadingThread \
    -UseMultithreadForDS \
    -malloc=system \
    EpicApp=PalServer

Параметры:

  • -useperfthreads — оптимизирует использование потоков CPU
  • -NoAsyncLoadingThread — снижает нагрузку на память при загрузке
  • -UseMultithreadForDS — включает многопоточность для выделенных серверов
  • -malloc=system — использует системный аллокатор памяти вместо встроенного

Настройка swap-файла

Даже если у вас Ultra-тариф с 32 ГБ RAM, swap лишним не будет — он защитит от OOM-killer в пиковые моменты:

# Создаём swap-файл 8 ГБ
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# Добавляем в /etc/fstab для автомонтирования
echo '/swapfile none swap sw 0 0' >> /etc/fstab

# Настраиваем swappiness (10 = использовать swap только при крайней необходимости)
sysctl vm.swappiness=10
echo 'vm.swappiness=10' >> /etc/sysctl.conf

Проверяем:

free -h
swapon --show

Ограничение числа активных палов и объектов

В PalWorldSettings.ini снижение этих параметров заметно уменьшает потребление RAM:

DropItemMaxNum=2000,          # было 3000
BaseCampWorkerMaxNum=10,      # было 15
DropItemAliveMaxHours=0.500000,  # было 1.0

Автозапуск через systemd

Systemd обеспечит автоматический перезапуск сервера при сбоях и после перезагрузки VPS:

# Создаём unit-файл (от root)
sudo nano /etc/systemd/system/palworld.service
[Unit]
Description=Palworld Dedicated Server
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/home/palworld/palworld-server
ExecStart=/home/palworld/palworld-server/PalServer.sh \
    -port=8211 \
    -players=16 \
    -useperfthreads \
    -NoAsyncLoadingThread \
    -UseMultithreadForDS \
    EpicApp=PalServer
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Включаем и запускаем:

sudo systemctl daemon-reload
sudo systemctl enable palworld
sudo systemctl start palworld

# Проверяем статус
sudo systemctl status palworld

# Смотрим логи
sudo journalctl -u palworld -f

Настройка брандмауэра

Palworld использует следующие порты:

ПортПротоколНазначение
8211UDPОсновной игровой порт
8211TCPВспомогательный
27015UDPSteam Query
25575TCPRCON (если включён)
# UFW
sudo ufw allow 8211/udp
sudo ufw allow 8211/tcp
sudo ufw allow 27015/udp
sudo ufw enable

# Проверяем правила
sudo ufw status

Обновление сервера

При выходе обновлений Palworld нужно обновить серверные файлы:

# Останавливаем сервер
sudo systemctl stop palworld

# Запускаем обновление через SteamCMD
su - palworld -c "
~/steamcmd/steamcmd.sh \
    +@sSteamCmdForcePlatformType linux \
    +force_install_dir ~/palworld-server \
    +login anonymous \
    +app_update 2394010 validate \
    +quit
"

# Запускаем сервер
sudo systemctl start palworld

Для автоматических обновлений и резервного копирования мира смотрите статью Бэкапы и автоперезапуск игрового сервера.

Мониторинг ресурсов

Palworld потребляет много ресурсов — важно следить за состоянием сервера:

# Общий мониторинг: CPU, RAM, нагрузка
htop

# Потребление RAM процессом сервера
ps aux | grep PalServer | grep -v grep | awk '{print $6/1024 " MB"}'

# Статус systemd-сервиса
sudo systemctl status palworld

# Последние 100 строк лога
sudo journalctl -u palworld -n 100

# Место на диске
df -h ~/palworld-server/Pal/Saved/

Если RAM заканчивается — проверьте параметры запуска и снизьте лимиты объектов в конфиге.

Защита сервера

Публичный игровой сервер — мишень для DDoS и брутфорса. Базовые меры безопасности:

# Смена SSH-порта
sudo nano /etc/ssh/sshd_config
# Меняем Port 22 на нестандартный, например 2222
sudo systemctl restart ssh

# Установка fail2ban
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Подробнее о защите игрового сервера — в статье Защита игрового сервера.

Частые вопросы

Почему сервер Palworld потребляет столько RAM?

Palworld — Unreal Engine 5-игра с открытым миром. Сервер загружает в память чанки карты вокруг всех игроков, данные о палах, строениях и предметах. При 8+ игроках активных чанков становится очень много. Это особенность движка, радикально снизить потребление без ущерба для игры не получится — можно только ограничить количество объектов в конфиге.

Сколько игроков выдержит тариф Pro (16 ГБ RAM)?

Реально — 6–10 стабильных игроков. При 12–16 игроках в активной игре памяти начнёт не хватать. Для 16+ игроков берите Ultra (32 ГБ RAM).

Почему сервер виден в списке, но игроки не могут подключиться?

Проверьте: открыт ли порт 8211/UDP в брандмауэре (sudo ufw status), правильно ли указан PublicPort в конфиге, не блокирует ли трафик провайдер. Выполните sudo netstat -ulnp | grep 8211 — порт должен быть в состоянии LISTEN.

Как сделать резервную копию мира?

Данные мира хранятся в /home/palworld/palworld-server/Pal/Saved/SaveGames/. Скопируйте эту директорию в безопасное место. Рекомендуется автоматизировать бэкапы через cron или systemd timer — подробная инструкция в статье Бэкапы и автоперезапуск игрового сервера.

Palworld обновился, клиент не соответствует серверу — что делать?

Остановите сервер (sudo systemctl stop palworld), обновите через SteamCMD командой app_update 2394010 validate, затем снова запустите. После крупных обновлений рекомендуется сделать бэкап мира перед обновлением.


Palworld сервер требует серьёзных ресурсов — не стоит экономить на железе и потом страдать от лагов и крашей. Тариф Ultra от 1500 ₽/месяц на Cheap-Host даёт 20 vCPU, 32 ГБ RAM и 192 ГБ NVMe на KVM-виртуализации с аптаймом 99,9% и сервером в Москве. Этого хватит даже для крупного сервера на 20+ игроков. Сервер готов через 45–60 секунд после оплаты.

Читайте также