Сервер Palworld: вимоги щодо гравців і налаштування на Linux
Коротко
У цьому посібнику ви розгорнете виділений сервер Palworld на Ubuntu Server 24.04 LTS: підготуєте безпечний VPS або dedicated-сервер, встановите SteamCMD, налаштуєте світ, автозапуск через systemd, резервні копії та оновлення. Власний сервер дає змогу грати без залежності від публічних кімнат, задавати ліміт гравців, правила світу й контролювати збереження.
- Для 4–8 гравців достатньо 4 vCPU, 16 ГБ RAM і NVMe-диска від 50 ГБ.
- Для 16–32 гравців потрібен процесор із високою продуктивністю на ядро, 32 ГБ RAM і бажано dedicated-сервер.
- Основний ігровий порт Palworld — UDP 8211; для публічного відображення та RCON можуть знадобитися UDP 27015 і TCP 25575.
- Сервер встановлюється через SteamCMD з ідентифікатором застосунку
2394010. - Налаштування світу зберігаються у файлі
PalWorldSettings.ini, а збереження — у каталозіSaved/SaveGames. - Для стабільної роботи використовуйте systemd, щоденні бекапи та вікно обслуговування перед оновленням гри.
Що ми налаштовуємо і навіщо
Palworld — гра з відкритим світом, будівництвом бази, виживанням і спільною грою. Вбудований режим кооперативу зручний для невеликої сесії, але прив’язаний до комп’ютера хоста: світ доступний лише тоді, коли він запущений. Виділений сервер Palworld працює цілодобово на Linux-машині з публічною IP-адресою, тому гравці можуть підключатися незалежно від власника світу.
У результаті налаштування у вас буде окремий ігровий процес PalServer-Linux-Shipping, який запускається від непривілейованого користувача. Він автоматично запускатиметься після перезавантаження сервера, прослуховуватиме ігровий UDP-порт, зберігатиме світ на локальному NVMe-диску та створюватиме архівні копії збережень за розкладом.
Що саме отримує власник сервера
- Постійний світ, доступний за IP-адресою та портом.
- Налаштування складності, швидкості дня, випадання предметів, рейдів, смертності персонажів і Пал-істот.
- Обмеження кількості гравців, пароль сервера та пароль адміністратора.
- Доступ до RCON-консолі для адміністрування без SSH-підключення.
- Контроль над збереженнями, можливістю відновлення світу та перенесенням на інший сервер.
- Незалежність від домашнього NAT, вимкнення домашнього комп’ютера та обмежень хост-кооперативу.
Self-hosted, ігровий хостинг або локальний комп’ютер
| Варіант | Переваги | Обмеження |
|---|---|---|
| Локальний хост-кооператив | Не потребує окремої машини, можна швидко почати | Світ залежить від комп’ютера хоста, зазвичай менше можливостей адміністрування |
| Керований ігровий хостинг | Панель керування, готові бекапи, мінімум Linux-адміністрування | Обмежені ресурси, доступ до системи відсутній, тариф залежить від слотів |
| Власний сервер на VPS | Повний контроль, фіксована інфраструктура, можна запускати моніторинг і власні скрипти | Потрібно самостійно оновлювати гру, захищати SSH і стежити за бекапами |
| Dedicated-сервер | Виділені CPU, висока стабільність для 16–32 гравців | Дорожчий і надлишковий для маленької групи |
VPS особливо зручний для групи друзів із 4–12 осіб. На ньому можна ізолювати Palworld від домашньої мережі, використовувати знімки диска перед великими оновленнями та швидко перенести сервер в іншу локацію. Для великої публічної спільноти важливіша не номінальна кількість vCPU, а стабільна продуктивність одного ядра, відсутність агресивного overselling і швидкий NVMe.
Публічна IP-адреса сервера не є секретом. Пароль адміністратора, SSH-ключі, RCON-пароль і резервні копії — секретні дані. Не публікуйте їх у Discord, репозиторіях і скриншотах конфігурації.
Який VPS-конфіг потрібен для цього завдання
Palworld чутливий до обсягу пам’яті, швидкості диска та продуктивності CPU у моменти автозбереження, завантаження нових зон, рейдів і активної симуляції великої кількості Пал-істот на базах. Кількість підключених гравців — не єдиний показник: вісім гравців із великими базами та десятками робочих Пал можуть створювати більше навантаження, ніж шістнадцять гравців, які лише досліджують карту.
| Сценарій | Гравці | CPU | RAM | Диск | Мережа |
|---|---|---|---|---|---|
| Тестовий або закритий світ | 1–4 | 2 сучасних vCPU | 8–12 ГБ | 40 ГБ NVMe | 100 Мбіт/с |
| Невелика група | 4–8 | 4 vCPU з високою частотою | 16 ГБ | 50–80 ГБ NVMe | 100 Мбіт/с або вище |
| Активний приватний сервер | 8–16 | 6–8 vCPU | 24–32 ГБ | 100 ГБ NVMe | 1 Гбіт/с |
| Публічний сервер | 16–32 | 8 швидких виділених ядер | 32–64 ГБ | 150 ГБ NVMe і сховище для бекапів | 1 Гбіт/с, захист від DDoS |
Для типового сервера на 6–10 друзів практична стартова конфігурація — 4 vCPU, 16 ГБ RAM, 80 ГБ NVMe та порт 1 Гбіт/с. Як один із варіантів можна обрати VPS із зазначеними характеристиками, а потім збільшити ресурси, якщо моніторинг покаже постійну нестачу RAM або високе завантаження процесора.
Чому не варто брати 4 ГБ RAM
Сам ігровий сервер може запускатися з меншим обсягом пам’яті, але Linux використовує файловий кеш, SteamCMD розпаковує оновлення, а світ зростає в міру гри. За нестачі пам’яті ядро почне активно використовувати swap, зросте затримка збережень, а процес може бути зупинений OOM-killer. Для постійного світу 16 ГБ — безпечна нижня межа для невеликої групи.
Коли VPS достатньо
VPS підходить, якщо сервер закритий, онлайн зазвичай не перевищує 8–12 гравців, а провайдер пропонує сучасний CPU і NVMe. Вимірюйте реальне навантаження у вечірній прайм-тайм. Якщо середнє завантаження одного ядра постійно близьке до 100%, а гравці бачать лаги під час завантаження світу, додавання RAM не вирішить проблему: потрібен швидший CPU або виділена машина.
Коли потрібен dedicated
Dedicated-сервер виправданий для 16–32 постійно активних гравців, публічної спільноти, кількох світів Palworld на одній машині або одночасного запуску інших вимогливих сервісів. Він також кращий, якщо потрібна передбачувана продуктивність у години пік і захист від «галасливих сусідів» віртуалізації. Обирайте CPU із високою однопотоковою продуктивністю, а не лише з великою кількістю старих ядер.
Як вибрати локацію
Розміщуйте сервер ближче до більшості гравців. Для динамічної гри різниця між 20 і 120 мс помітна під час боїв і переміщення. Перевірити затримку можна командою ping до тестової IP-адреси провайдера. Якщо половина команди перебуває в Європі, а половина — у Центральній Азії, зазвичай обирають європейську локацію з хорошими маршрутами та перевіряють RTT у кількох гравців до оплати тривалого періоду.
Перевірте до запуску наявність публічної IPv4-адреси та можливість відкрити вхідний UDP-порт 8211. IPv6 корисний додатково, але не має бути єдиним способом підключення: частина гравців і домашніх мереж досі використовує лише IPv4.
Підготовка сервера
Нижче використовується Ubuntu Server 24.04 LTS x86_64 — версія з довгостроковою підтримкою, зручна для ігрового сервера у 2026 році. Команди потрібно виконувати від користувача з правами sudo. Не запускайте Palworld від root: ігровий процес не повинен мати прав на зміну системних файлів.
Оновіть базову систему
Спочатку підключіться до сервера через SSH під користувачем, виданим після провіжинінгу, та встановіть виправлення безпеки.
sudo apt update && sudo apt full-upgrade -y
sudo reboot
Перший рядок оновлює список пакетів і встановлює доступні оновлення; перезавантаження застосовує нове ядро, якщо його було встановлено.
Створіть окремого адміністратора
Якщо ви ввійшли як root, створіть звичайного користувача. Замініть admin на власне ім’я. Надалі адміністратор використовуватиме sudo, а гра працюватиме від окремого облікового запису palworld.
adduser admin
usermod -aG sudo admin
mkdir -p /home/admin/.ssh
chmod 700 /home/admin/.ssh
Команди створюють користувача, надають йому доступ до sudo та готують каталог для відкритого SSH-ключа.
nano /home/admin/.ssh/authorized_keys
chmod 600 /home/admin/.ssh/authorized_keys
chown -R admin:admin /home/admin/.ssh
Вставте у файл вміст вашого відкритого ключа, наприклад рядок, що починається з ssh-ed25519. Відкрийте другу SSH-сесію та переконайтеся, що вхід за ключем працює, перш ніж вимикати вхід за паролем.
Встановіть базові інструменти та захист SSH
sudo apt install -y curl wget nano tmux htop unzip ca-certificates \
fail2ban ufw jq rsync cron
Ця команда встановлює редактор, діагностичні утиліти, firewall, захист від перебору паролів та інструменти для резервного копіювання.
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Створіть окремий файл із безпечними налаштуваннями SSH, а не редагуйте основний конфігураційний файл.
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
sudo sshd -t && sudo systemctl reload ssh
Команда спочатку перевіряє синтаксис конфігурації. Якщо помилок немає, SSH перечитує налаштування без розриву поточного підключення.
Налаштуйте firewall
Не відкривайте «всі порти для надійності». Palworld використовує UDP, тому правило TCP 8211 не допоможе гравцям підключитися. Замініть ВАШ_БІЛИЙ_IP на власну зовнішню IP-адресу, якщо вона постійна. Якщо IP динамічний, тимчасово дозвольте SSH з будь-якої мережі та обов’язково використовуйте ключі.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from ВАШ_БІЛИЙ_IP to any port 22 proto tcp
sudo ufw allow 8211/udp
sudo ufw allow 27015/udp
sudo ufw enable
sudo ufw status verbose
Порт 8211 потрібен для ігрового трафіку. UDP 27015 корисний для Steam query та відображення сервера у списках; його можна не відкривати, якщо гравці завжди підключаються безпосередньо за IP. RCON не слід відкривати для всього інтернету: далі його буде прив’язано до 127.0.0.1 або обмежено окремим правилом.
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Fail2ban відстежує невдалі спроби входу в SSH і тимчасово блокує джерела перебору.
Створіть користувача гри та робочі каталоги
sudo adduser --system --group --home /opt/palworld palworld
sudo install -d -o palworld -g palworld /opt/palworld/server
sudo install -d -o palworld -g palworld /var/backups/palworld
Системний користувач без інтерактивного пароля володітиме файлами гри. Каталог резервних копій відокремлений від робочого каталогу, що спрощує архівування та перенесення даних.
Встановлення ПЗ — покроково
Офіційний Linux dedicated server Palworld поширюється через SteamCMD. У 2026 році гра регулярно отримує оновлення, тому не фіксуйте номер версії вручну: SteamCMD завантажить актуальну стабільну збірку серверного застосунку 2394010. Версію встановленої збірки зручно звіряти за журналом SteamCMD і часом зміни файлів.
Встановіть залежності SteamCMD
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 lib32stdc++6
SteamCMD і деякі компоненти ігрового сервера потребують 32-бітних бібліотек навіть на 64-бітній Ubuntu. Під час встановлення Steam може запросити прийняття ліцензійної угоди — підтвердьте його.
Завантажте виділений сервер Palworld
sudo -u palworld steamcmd \
+force_install_dir /opt/palworld/server \
+login anonymous \
+app_update 2394010 validate \
+quit
Команда запускає SteamCMD від користувача palworld, завантажує сервер у /opt/palworld/server і перевіряє цілісність файлів. Анонімного входу достатньо; обліковий запис Steam і Steam Guard не потрібні.
sudo -u palworld find /opt/palworld/server -maxdepth 3 -type f \
-name 'PalServer.sh' -o -name 'PalServer-Linux-Shipping'
Перевірте, що після завантаження знайдено стартовий скрипт PalServer.sh і виконуваний файл сервера.
Виконайте тестовий запуск у tmux
Перший запуск потрібен для створення каталогів конфігурації та збережень. Використовуйте тимчасову tmux-сесію: вона не завершиться після відключення SSH.
sudo -u palworld tmux new-session -d -s palworld-test \
'cd /opt/palworld/server && ./PalServer.sh \
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS'
Параметри вмикають багатопотокову обробку та зазвичай корисні на сучасних Linux-серверах. Вони не замінюють достатній обсяг CPU і RAM, але можуть зменшити затримки під навантаженням.
sleep 30
sudo -u palworld tmux capture-pane -pt palworld-test | tail -n 40
sudo -u palworld tmux send-keys -t palworld-test C-c
sudo -u palworld tmux kill-session -t palworld-test
Зачекайте близько 30 секунд, перегляньте останні рядки журналу та коректно зупиніть тестовий процес. Після цього має з’явитися каталог Pal/Saved/Config/LinuxServer.
Перевірте шлях до конфігурації
sudo -u palworld find /opt/palworld/server/Pal/Saved \
-type f -name 'PalWorldSettings.ini' -o -name 'GameUserSettings.ini'
У Linux основний файл налаштувань зазвичай розташований за шляхом /opt/palworld/server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. Якщо файл відсутній, скопіюйте шаблон із DefaultPalWorldSettings.ini, як показано в наступному розділі.
Створіть systemd-службу
Systemd перезапустить сервер після збою та запустить його після перезавантаження VPS. Перед створенням служби переконайтеся, що тестову tmux-сесію зупинено: два екземпляри не повинні використовувати один світ і один UDP-порт.
sudo nano /etc/systemd/system/palworld.service
Вставте конфігурацію служби з розділу «Конфігурація», потім активуйте її.
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
sudo systemctl status palworld --no-pager
Команди перечитують unit-файли, вмикають автозапуск, запускають Palworld і показують поточний статус процесу.
Переглядайте журнали без пошуку файлів вручну
sudo journalctl -u palworld -f
Ця команда виводить журнал служби в реальному часі. Для виходу натисніть Ctrl+C. Після оновлення гри та під час діагностики проблем це основне джерело інформації.
Конфігурація
Palworld використовує INI-файли Unreal Engine. Не редагуйте файли всередині Pal/Content: їх буде перезаписано під час оновлення. Робочі налаштування сервера зберігаються в каталозі Pal/Saved/Config/LinuxServer, а самі світи — у Pal/Saved/SaveGames.
Налаштуйте параметри світу
Якщо файл налаштувань ще не створено, скопіюйте офіційний шаблон. Потім змініть значення. Перед редагуванням зупиніть службу, щоб не втратити зміни під час збереження світу.
sudo systemctl stop palworld
sudo -u palworld cp -n \
/opt/palworld/server/DefaultPalWorldSettings.ini \
/opt/palworld/server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
sudo -u palworld nano \
/opt/palworld/server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
Параметр -n не перезапише вже наявний файл. Нижче наведено приклад для закритого сервера на 8 гравців. Palworld очікує один довгий рядок у секції [/Script/Pal.PalGameWorldSettings]; переноси всередині рядка можуть порушити розбір параметрів.
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=None,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.500000,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,EnablePlayerToPlayerDamage=False,EnableFriendlyFire=False,EnableInvaderEnemy=True,ActiveUNKO=False,EnableAimAssistPad=True,EnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,ServerPlayerMaxNum=8,ServerName="Palworld Friends RU",ServerDescription="Private Linux server",AdminPassword="CHANGE_THIS_ADMIN_SECRET",ServerPassword="CHANGE_THIS_JOIN_SECRET",PublicPort=8211,PublicIP="",RCONEnabled=True,RCONPort=25575,Region="EU",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")
Замініть обидва паролі на довгі унікальні значення. Пароль адміністратора надає повний доступ до команд сервера; не використовуйте тут пароль Steam, електронної пошти або SSH. Поле PublicIP зазвичай можна залишити порожнім: сервер визначить адресу автоматично. Якщо сервер працює за складним NAT або має кілька адрес, укажіть його публічний IPv4.
Виберіть правила, які впливають на навантаження
| Параметр | Значення | Практичний ефект |
|---|---|---|
ServerPlayerMaxNum |
4–32 | Максимальна кількість підключень; не встановлюйте 32, якщо ресурси розраховані на 8 гравців |
PalSpawnNumRate |
1.0 за замовчуванням | Збільшення підвищує кількість істот і навантаження на симуляцію |
DropItemMaxNum |
1000–3000 | Занадто велика кількість предметів у світі підвищує навантаження та розмір збереження |
GuildPlayerMaxNum |
10–20 | Ліміт учасників гільдії; не визначає загальну місткість сервера |
EnableInvaderEnemy |
True/False | Вимкнення рейдів може знизити складність і пікове навантаження на бази |
DeathPenalty |
None, Item, ItemAndEquipment, All | Правило втрати предметів після смерті |
Не збільшуйте одночасно швидкість появи Палів, кількість предметів, що випадають, і ліміт гравців. Спочатку змініть один параметр, спостерігайте за навантаженням протягом 1–2 ігрових вечорів і лише потім змінюйте наступний. Це спрощує пошук причини лагів.
Змінні середовища для секретів
Сам Palworld читає паролі з INI-файлу, тому повністю винести секрети в змінні середовища без додаткового шаблонізатора неможливо. Щоб не зберігати їх у unit-файлі та не передавати в командному рядку, використовуйте закритий файл середовища для службових параметрів і обмежте права доступу до INI-файлу.
sudo install -m 600 -o root -g root /dev/null /etc/palworld.env
sudo nano /etc/palworld.env
sudo chmod 600 /opt/palworld/server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
PALWORLD_PORT=8211
PALWORLD_QUERY_PORT=27015
PALWORLD_RCON_PORT=25575
У цьому прикладі файл середовища зберігає не секрети, а змінювані мережеві значення. Секрети залишаються в INI, права доступу до якого обмежено користувачем palworld. Не додавайте цей файл або каталог збережень до Git.
Файл systemd
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/opt/palworld/server
EnvironmentFile=/etc/palworld.env
ExecStart=/opt/palworld/server/PalServer.sh -port=${PALWORLD_PORT} -queryport=${PALWORLD_QUERY_PORT} -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
Restart=on-failure
RestartSec=15
TimeoutStopSec=120
KillSignal=SIGINT
LimitNOFILE=100000
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Параметр KillSignal=SIGINT дає серверу змогу коректно завершити роботу та зберегти світ. Не використовуйте kill -9 для звичайної зупинки. Після вставлення unit-файлу застосуйте його та перевірте запуск.
sudo systemctl daemon-reload
sudo systemctl start palworld
sudo systemctl is-active palworld
sudo ss -lunp | grep -E '8211|27015'
Очікуваний результат першої перевірки — active. У виведенні ss мають бути UDP-сокети Palworld. Залежно від версії сервера query-порт може з’явитися лише після повної ініціалізації.
Перевірка підключення
З Linux-клієнта можна перевірити доступність UDP лише опосередковано: UDP не має повноцінного рукостискання, як TCP. Переконайтеся, що служба працює, firewall містить правило і гравець може підключитися з гри через «Join Multiplayer Game» за адресою ПУБЛІЧНИЙ_IP:8211.
curl -4 https://ifconfig.me
sudo ufw status numbered
sudo journalctl -u palworld -n 100 --no-pager
Перша команда показує зовнішній IPv4, друга — правила firewall, третя — останні 100 рядків журналу. Для перевірки із зовнішньої Linux-машини можна використати nmap -sU -p 8211 ВАШ_IP, але результат UDP-сканування нерідко буде open|filtered; остаточна перевірка — реальне підключення ігрового клієнта.
TLS/HTTPS і Palworld
Ігровий сервер Palworld не надає вебінтерфейсу та не використовує HTTP для ігрового підключення, тому Caddy і Certbot тут не потрібні. Не можна «захистити» UDP 8211 сертифікатом Let’s Encrypt. Якщо згодом ви встановите окрему вебпанель, сторінку стану або моніторинг з HTTP-інтерфейсом, розмістіть їх за Caddy і відкривайте назовні лише HTTPS 443. Не публікуйте RCON через reverse proxy: це не HTTP-протокол.
Резервні копії та обслуговування
Найцінніша частина Palworld-сервера — не інсталяційні файли SteamCMD, а дані світу. Сервер можна завантажити повторно за кілька хвилин, але втрачені бази, персонажів і прогрес гравців без резервної копії не відновити. Бекап має зберігатися за межами основного VPS: локальний архів не врятує в разі видалення диска, помилки провайдера або компрометації сервера.
Що потрібно зберігати
/opt/palworld/server/Pal/Saved/SaveGames/— світи, персонажі та гільдії./opt/palworld/server/Pal/Saved/Config/LinuxServer/— налаштування світу та сервера./etc/systemd/system/palworld.service— unit-файл автозапуску./etc/palworld.env— службові мережеві змінні./etc/ufw/за потреби перенесення всієї мережевої конфігурації.
Не обов’язково щодня архівувати каталог /opt/palworld/server цілком: його можна відновити через SteamCMD. Однак перед великим оновленням корисно зробити знімок диска або повний архів, щоб швидко скасувати невдалу модифікацію.
Простий локальний архів перед відправленням назовні
sudo nano /usr/local/sbin/palworld-backup.sh
sudo chmod 750 /usr/local/sbin/palworld-backup.sh
#!/usr/bin/env bash
set -euo pipefail
DATE=$(date +%F_%H-%M-%S)
BACKUP_DIR=/var/backups/palworld
SOURCE=/opt/palworld/server
ARCHIVE="$BACKUP_DIR/palworld_$DATE.tar.gz"
systemctl stop palworld
tar -C "$SOURCE" -czf "$ARCHIVE" \
Pal/Saved/SaveGames \
Pal/Saved/Config/LinuxServer
systemctl start palworld
find "$BACKUP_DIR" -type f -name 'palworld_.tar.gz' -mtime +7 -delete
Скрипт зупиняє сервер, архівує збереження та конфігурацію, знову запускає службу й видаляє локальні архіви, старші за сім днів. Зупинка робить копію узгодженою: у ній не буде файлів, які одночасно змінюються процесом гри. Для світу невеликої групи пауза зазвичай триває секунди або кілька хвилин, але попередьте гравців.
Відправлення до S3-сумісного сховища через restic
Restic шифрує дані на стороні сервера до завантаження. Підійдуть S3-сумісне об’єктне сховище, окремий сервер із SFTP або інший віддалений backend, який підтримує restic. Не зберігайте пароль репозиторію в самому скрипті.
sudo apt install -y restic
sudo install -d -m 700 /root/.config/restic
sudo nano /root/.config/restic/palworld.env
export RESTIC_REPOSITORY="s3:https://s3.example.net/palworld-backups"
export RESTIC_PASSWORD="REPLACE_WITH_LONG_UNIQUE_RESTIC_PASSWORD"
export AWS_ACCESS_KEY_ID="REPLACE_WITH_S3_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="REPLACE_WITH_S3_SECRET_KEY"
sudo chmod 600 /root/.config/restic/palworld.env
sudo bash -c 'source /root/.config/restic/palworld.env && restic init'
Ініціалізація створює зашифрований репозиторій. Збережіть пароль restic за межами VPS — наприклад, у менеджері паролів. Без нього вміст бекапів відновити неможливо.
sudo nano /usr/local/sbin/palworld-restic.sh
sudo chmod 750 /usr/local/sbin/palworld-restic.sh
#!/usr/bin/env bash
set -euo pipefail
source /root/.config/restic/palworld.env
/usr/local/sbin/palworld-backup.sh
restic backup /var/backups/palworld \
/etc/systemd/system/palworld.service \
/etc/palworld.env
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Цей скрипт створює локальний архів, відправляє його до зовнішнього сховища, залишає сім щоденних, чотири щотижневі та шість щомісячних точок, а потім перевіряє репозиторій. Для великих архівів команду restic check можна виконувати раз на тиждень, щоб не збільшувати щоденний трафік.
Додайте розклад cron
sudo crontab -e
20 5 /usr/local/sbin/palworld-restic.sh >> /var/log/palworld-backup.log 2>&1
Бекап виконуватиметься щодня о 05:20 за серверним часом. Оберіть час із мінімальним онлайном. Періодично перевіряйте журнал /var/log/palworld-backup.log і тестуйте відновлення в окремому каталозі.
sudo bash -c 'source /root/.config/restic/palworld.env && restic snapshots'
sudo bash -c 'source /root/.config/restic/palworld.env && restic restore latest --target /tmp/palworld-restore-test'
Першою командою ви побачите точки відновлення, другою — відновите останню копію в тестовий каталог. Бекап вважається робочим лише після успішної перевірки відновлення.
Оновлення Palworld і Linux
Palworld не підтримує rolling update у сенсі вебзастосунків: два екземпляри не можуть безпечно обслуговувати один світ. Виконуйте оновлення у вікно обслуговування. Попередьте гравців, зупиніть сервер, зробіть бекап, оновіть файли через SteamCMD, потім запустіть процес і перевірте журнал.
sudo systemctl stop palworld
sudo /usr/local/sbin/palworld-backup.sh
sudo -u palworld steamcmd \
+force_install_dir /opt/palworld/server \
+login anonymous \
+app_update 2394010 validate \
+quit
sudo systemctl start palworld
sudo journalctl -u palworld -n 80 --no-pager
Після великих патчів не видаляйте старий бекап щонайменше кілька днів. Якщо нова версія змінила формат світу або спричинила проблеми, наявність точки до оновлення дасть змогу відновити дані. Оновлення Ubuntu встановлюйте окремо від ігрового оновлення, щоб було простіше визначити джерело можливої несправності.
Усунення несправностей + FAQ
Яка конфігурація VPS мінімально підійде?
Для тестового світу на 1–4 гравців мінімально розумними будуть 2 сучасні vCPU, 8–12 ГБ RAM і 40 ГБ NVMe. Для постійної гри невеликої компанії краще одразу обрати 4 vCPU, 16 ГБ RAM і 50–80 ГБ NVMe: буде запас для збережень, оновлень і файлового кешу. Не орієнтуйтеся лише на кількість слотів. Великі бази, робочі Пал-істоти, рейди та високий параметр спавну помітно збільшують споживання ресурсів.
Що обрати — VPS чи dedicated для цього завдання?
Для закритого сервера на 4–12 гравців зазвичай достатньо VPS зі швидким CPU та NVMe. Dedicated варто обирати за постійного онлайна 16–32 гравців, запуску кількох ігрових світів, вимог до передбачуваної продуктивності або за наявності публічної спільноти. Якщо на VPS регулярно спостерігаються фризи за повного завантаження одного ядра, а RAM вільна, перехід на dedicated із потужним процесором буде кориснішим, ніж просте збільшення пам’яті.
Гравці не можуть підключитися до IP:8211. Що перевірити?
Спочатку переконайтеся, що служба активна: виконайте sudo systemctl status palworld. Потім перевірте сокет командою sudo ss -lunp | grep 8211 і правило sudo ufw status. Порт має бути відкритий саме по UDP, а не TCP. Також перевірте firewall у панелі провайдера: хмарні security groups можуть блокувати трафік незалежно від UFW. Підключення слід тестувати із зовнішньої мережі, а не з того самого VPS.
Сервер одразу зупиняється або systemd постійно його перезапускає. Як виправити?
Перегляньте точну помилку через sudo journalctl -u palworld -n 150 --no-pager. Часті причини: неправильний шлях у ExecStart, пошкоджені файли після оновлення, відсутність бібліотек lib32gcc-s1 або зайнятий порт 8211. Виконайте SteamCMD з app_update 2394010 validate, перевірте власника каталогу командою sudo chown -R palworld:palworld /opt/palworld/server і переконайтеся, що другий екземпляр гри не працює в tmux.
Чому сервер лагає, хоча CPU завантажений лише на 30%?
Середнє завантаження всіх ядер може приховувати перевантаження одного головного потоку. Перевірте htop по ядрах, затримку диска через iostat із пакета sysstat і наявність swap командою free -h. Причиною також можуть бути надто велика кількість Пал на базах, високий PalSpawnNumRate, тисячі предметів на землі або недостатня продуктивність CPU VPS. Зменште ліміти світу, очистьте зайві об’єкти та перевірте сервер у піковий час.
Після оновлення SteamCMD налаштування або світ не завантажуються. Що робити?
Не видаляйте каталог Pal/Saved: саме там містяться дані світу. Спочатку зупиніть службу та зробіть копію поточного стану. Перевірте, що PalWorldSettings.ini знаходиться в Pal/Saved/Config/LinuxServer, а не в каталозі шаблонів. Потім виконайте app_update 2394010 validate і вивчіть журнал запуску. Якщо проблема з’явилася одразу після патчу, відновіть перевірений бекап на тестовій копії сервера, а не перезаписуйте робочі файли навмання.
Чи потрібно відкривати RCON-порт 25575 в інтернет?
Ні, для звичайної гри RCON не потрібен гравцям. Відкритий RCON підвищує ризик підбору пароля і не має бути доступним для всіх адрес. Якщо ви використовуєте RCON-клієнт зі своєї домашньої IP-адреси, додайте вузьке правило UFW: sudo ufw allow from ВАШ_IP to any port 25575 proto tcp. Ще безпечніше підключатися до нього через SSH-тунель і не створювати публічне правило firewall. Використовуйте довгий унікальний AdminPassword.
Як дізнатися, скільки місця займає світ і коли потрібно збільшувати диск?
Перевірте загальний обсяг командою sudo du -sh /opt/palworld/server/Pal/Saved/SaveGames і вільне місце через df -h /opt. Намагайтеся залишати щонайменше 20–30% диска вільними: SteamCMD потрібен запас під час розпакування оновлень, а файловій системі — для нормальної роботи. Якщо архіви бекапів зберігаються локально, вони також займають диск. Краще відправляти їх до зовнішнього сховища та видаляти локальні копії відповідно до політики зберігання.
Чи потрібно налаштовувати Caddy, домен і HTTPS для ігрового сервера?
Ні. Клієнти Palworld підключаються через ігровий UDP-протокол до IP-адреси та порту 8211, і TLS-сертифікат для цього не використовується. Домен можна застосувати як зручне ім’я, створивши A-запис на IPv4-адресу сервера, але він не замінює налаштування UDP-порту. Caddy або Certbot потрібні лише якщо ви додатково розгортаєте вебпанель, сторінку статусу або моніторинг із HTTP-інтерфейсом. Не намагайтеся проксувати ігровий UDP-трафік стандартним HTTPS reverse proxy.
Висновки та наступні кроки
Тепер у вас є сервер Palworld на Linux з окремим системним користувачем, firewall, автозапуском systemd, налаштованим світом і зовнішніми резервними копіями. Для невеликої групи почніть із 4 vCPU і 16 ГБ RAM, а рішення щодо масштабування ухвалюйте за фактичним навантаженням, а не лише за кількістю слотів.
- Проведіть тестовий ігровий вечір, перевірте
htop, журнал systemd і розмір збережень. - Налаштуйте сповіщення про невдалий бекап і контролюйте доступне місце на NVMe.
- Перед кожним великим патчем створюйте точку відновлення й оновлюйте сервер лише в оголошене вікно обслуговування.