SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-13

Як вибрати VPS для ігрового сервера

Дізнайтеся, який VPS потрібен ігровому серверу: швидке одне ядро CPU, достатньо RAM, правильні порти, systemd, резервні копії та локація для низької затримки.

Який саме ігровий VPS ви маєте на увазі?

VPS для ігрових серверів добре підходить для одного завдання: запуску виділеного сервера, до якого ви та ваші друзі підключаєтеся зі своїх комп’ютерів. Для іншого завдання, яке люди мають на увазі під цим висловом, він підходить погано: запуску гри безпосередньо на VPS через віддалений робочий стіл. Для цих двох завдань потрібне різне обладнання. Виділеному серверу потрібне одне швидке ядро CPU і достатній обсяг RAM для зберігання ігрового світу. Для запуску гри потрібен GPU (графічний процесор), а стандартний тариф VPS його не має.

Усе нижче стосується першого завдання. Друге варто розглянути протягом двох хвилин, оскільки багато людей купують для нього невідповідний сервер.

Чому на VPS не можна грати в ігри

Стандартний VPS надає віртуальні ядра CPU без графічної карти. Фізичний хост не передає жодного графічного пристрою, тому грі немає чим виконувати апаратний рендеринг. Перевірити, що саме ви отримали, можна так:

sudo apt install -y pciutils
lspci | grep -iE "vga|3d"

У відповідь ви побачите віртуальний відеоадаптер, наприклад пристрій Cirrus Logic або virtio GPU. Він потрібен провайдеру для відображення екрана у вебконсолі та не має апаратного 3D-прискорення. Якщо встановити поверх нього графічне середовище та VNC-сервер, glxinfo -B покаже renderer як llvmpipe — програмний renderer Mesa, що працює на CPU. Сучасна 3D-гра, яку рендерить CPU, працюватиме з кількома кадрами за секунду. Тому вона буде непридатною для гри ще до того, як будь-які дані залишать сервер. Інстанси Windows стикаються з тією самою проблемою з іншого боку. Багато ігор завершуються під час запуску з повідомленням, що не вдалося створити пристрій Direct3D, оскільки немає відеоадаптера, на основі якого його можна створити.

Друга проблема — передавання даних до вас. Під час гри на віддаленому сервері кожен кадр кодується у відео, передається через інтернет і декодується на вашому екрані. Це додає час кодування та декодування до затримки введення самої гри. RDP і VNC розроблялися для роботи з робочим столом, а не для передавання рухомого зображення зі швидкістю 60 кадрів за секунду. Хмарні ігрові сервіси вирішують цю проблему за допомогою повноцінного GPU та спеціалізованого протоколу потокового передавання. Звичайний VPS не має ні того, ні іншого. Якщо ви хочете грати, орендуйте час GPU. Якщо хочете розміщувати ігри, читайте далі.

Що насправді потрібно виділеному ігровому серверу

Ігровий сервер — це цикл симуляції. Він зберігає світ у пам’яті та оновлює його фіксовану кількість разів на секунду. Потім кожному підключеному гравцеві надсилається та частина цього світу, яку він може бачити.

Ця структура визначає вимоги до обладнання. Цикл здебільшого виконується в одному потоці, тому швидкість ядра важливіша за кількість ядер. Світ зберігається в пам’яті, тому саме обсяг RAM зазвичай першим стає обмеженням. Під час гри диск майже не використовується, але активно працює під час завантаження та збереження. Мережевий маршрут визначає ping, і жоден тарифний план цього не змінить.

Швидкість одного ядра важливіша за кількість ядер

Більшість ігрових серверів обробляє світ в одному основному потоці. Так працюють цикл тактів Minecraft і серверний кадр рушія Source. Для кожного такту є обмежений час виконання. Minecraft Java працює з частотою 20 тактів на секунду, тому на кожен такт припадає 50 мілісекунд. Якщо робота не вкладається в цей час, сервер виводить саме це:

[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind

Цей рядок означає, що один потік не встиг завершити роботу. Додавання ядер не збільшує доступний цьому потоку час. План із 2 швидкими vCPU забезпечить стабільну частоту тактів, тоді як план із 8 повільними vCPU її знижуватиме, оскільки потрібну роботу виконує лише одне з цих 8 ядер.

Перед вибором плану виміряйте швидкість одного потоку:

sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Перегляньте рядок events per second. Саме по собі це число нічого не означає. Воно має значення лише для порівняння, тому запустіть тест на двох планах-кандидатах і порівняйте результати поруч. У повному тестуванні VPS так само перевіряються диск і мережа.

Додаткові ядра також потрібні. Вони можуть запускати другий ігровий сервер, базу даних, нічне резервне копіювання та попереднє генерування чанків, не забираючи час у потоку тактів. Серверне програмне забезпечення також навчається розподіляти навантаження, а Paper, популярний форк сервера Minecraft, переносить частину роботи з основного потоку тактів. Тому обирайте план із кількома швидкими ядрами, а не з великою кількістю повільних.

На сторінці плану ніколи не вказують одне число, хоча саме воно визначає, чи справді ви отримуєте оплачене швидке ядро:

vmstat 1 5

Стовпець st показує, який відсоток часу ваш віртуальний CPU був готовий виконувати роботу, але фізичний хост передавав ядро іншому клієнту. Стабільне значення st понад кілька відсотків означає, що хост перевантажений клієнтами. Гравці відчувають це як ривки, тоді як top на вашому сервері все ще показує вільний CPU, оскільки цей вільний час вам не належить.

Скільки RAM потрібно ігровому серверу?

ChartCommon starting RAM per game server (published guidance, not a measurement)
The data behind this chart
[
  {
    "label": "Minecraft Java, vanilla",
    "players": 10,
    "ram_gb": 2
  },
  {
    "label": "Minecraft Java, large modpack",
    "players": 10,
    "ram_gb": 8
  },
  {
    "label": "Valheim",
    "players": 10,
    "ram_gb": 4
  },
  {
    "label": "Palworld",
    "players": 32,
    "ram_gb": 16
  }
]

Це початкові обсяги пам’яті, наведені в документації до ігор і модпаків станом на August 2026. Це орієнтири, а не результати вимірювань на одному сервері. Для Vanilla Minecraft Java достатньо приблизно 2 GB heap для близько 10 гравців. Така сама кількість гравців на великому модпаку потребує 8 GB, оскільки моди додають сутності та згенеровані структури, які зберігаються в цьому heap. Власний зазначений мінімум Valheim становить 2 GB, але оператори невеликих світів повідомляють, що процес зазвичай використовує близько 3 GB, тому розумно почати з 4 GB. Palworld є винятком: для максимуму 32 гравців Pocketpair рекомендує 16 GB.

Обсяг RAM не масштабується пропорційно кількості підключень. Він залежить від обсягу завантаженого світу. Для кожного гравця завантажується область навколо нього, тому два гравці поруч споживають значно менше ресурсів, ніж два гравці, які досліджують протилежні кути мапи. Тому «RAM на гравця» є лише приблизним орієнтиром, а реальним визначальним фактором є «RAM на активну область». Через це невелика група гравців, яка любить дослідження, може перевищити ресурси тарифу, розрахованого на вдвічі більшу кількість гравців.

Для Java-серверів діють ще два правила. Встановіть мінімальний і максимальний heap на однакове значення, щоб JVM не призупиняла роботу для зміни його розміру:

java -Xms4G -Xmx4G -jar server.jar nogui

Залиште запас пам’яті. JVM використовує пам’ять поза виділеним heap для стеків потоків і native buffers, а kernel потребує page cache для швидкого читання файлів світу. На сервері з 6 GB RAM розумно виділити heap обсягом 4 GB, але не 6 GB.

Дві помилки, пов’язані з пам’яттю, виглядають зовсім по-різному, тому запам’ятайте обидва повідомлення. Якщо heap замалий, помилка виникає всередині Java, а сервер зазвичай продовжує працювати з перебоями:

java.lang.OutOfMemoryError: Java heap space

Якщо heap більший за доступну пам’ять сервера, весь процес примусово завершується ззовні. У консолі відображається лише Killed, а доказ міститься в журналі kernel:

sudo dmesg -T | grep -i "out of memory"

Додавання swap запобігає завершенню процесу, але не усуває проблему. Якщо tick loop змушений зчитувати дані світу зі swap, він пропускає кожен дедлайн. У результаті гравці отримують завислий сервер, а не сервер, що аварійно завершив роботу.

Примітка щодо версій, актуальна станом на August 2026: Minecraft Java 1.20.5 і новіші версії потребують Java 21. Старіший runtime запускається, а потім завершується з помилкою unsupported class file version. Вона схожа на повідомлення компілятора і спочатку часто вводить в оману.

sudo apt install -y openjdk-21-jre-headless
java -version

Чи має швидкість диска значення для ігрового сервера?

Під час гри — менше, ніж зазвичай очікують, але у два конкретні моменти — дуже. Світ зчитується в пам’ять під час запуску та записується назад під час автоматичного збереження. Тому швидкість диска проявляється як повільний запуск і пауза під час збереження. В інший час більшість операцій читання обробляється з RAM.

Є два чинники, через які диск має більше значення, ніж випливає з цього узагальнення. Під час дослідження нові чанки або зони завантажуються з диска, коли гравці переміщуються. Це читання відбувається в межах бюджету тіку. Автоматичне збереження великого світу записує багато даних одночасно. На повільному томі цей запис може заблокувати цикл достатньо надовго, щоб з’явилося наведене вище попередження "Can't keep up". В обох випадках проблема пов’язана із затримкою, а не з пропускною здатністю. Саме тому різниця між NVMe та SATA SSD на VPS тут важливіша, ніж можна припустити за показником мегабайтів за секунду. Важливо, скільки часу займає одна мала операція.

Розраховуйте розмір тому з урахуванням зростання. Світ збільшується щоразу, коли хтось вирушає в нове місце, а резервні копії примножують обсяг цих даних. Запускайте du -sh world раз на тиждень протягом місяця — і ви дізнаєтеся свій фактичний темп зростання.

Тактова частота, ping і різниця між ними

Тактова частота визначає, скільки разів на секунду сервер перераховує стан світу. Minecraft Java працює на рівні 20. Сервери Source engine зазвичай працюють на рівні 64. У Minecraft не можна просто придбати вищу частоту, оскільки вона є частиною дизайну гри. Тому мета — стабільно підтримувати 20, а не перевищувати це значення.

Ping — це час проходження сигналу від одного гравця до сервера й назад. Ці два явища спричиняють різні проблеми, тому розрізняйте їх, перш ніж витрачати кошти. Якщо сервер пропускає тики, усі гравці одночасно бачать відкат позицій, і сервер прямо повідомляє про це в журналі. Якщо в одного гравця довгий мережевий маршрут, затримка виникає лише в нього, а в решти групи все працює нормально. Потужніший CPU ніколи не усуне проблему другого типу.

Затримка залежить від розташування, а не від рівня тарифу

Світло у волоконно-оптичному кабелі проходить приблизно 200 кілометрів за мілісекунду. Двосторонній обмін охоплює відстань двічі, тому нижня межа становить приблизно 1 мс на кожні 100 км між гравцем і сервером. Жоден провайдер не може перевищити це обмеження, і жодне підвищення рівня тарифу його не змінить.

ChartRound trip floor by distance, fibre physics only
The data behind this chart
[
  {
    "label": "Toronto to New York",
    "distance_km": 550,
    "rtt_floor_ms": 5.5
  },
  {
    "label": "Dallas to Chicago",
    "distance_km": 1290,
    "rtt_floor_ms": 12.9
  },
  {
    "label": "Dallas to Los Angeles",
    "distance_km": 1990,
    "rtt_floor_ms": 19.9
  },
  {
    "label": "New York to London",
    "distance_km": 5570,
    "rtt_floor_ms": 55.7
  },
  {
    "label": "Los Angeles to Sydney",
    "distance_km": 12070,
    "rtt_floor_ms": 120.7
  }
]

Це нижні межі, обчислені за відстанню великого кола. Реальне волокно не прокладають по прямій, а кожен маршрутизатор на шляху додає певну затримку, тому хороший реальний результат зазвичай приблизно вдвічі більший за нижню межу. Гравець у Торонто, який підключається до сервера в Нью-Йорку на відстані 550 км, має нижню межу 5.5 мс і зазвичай побачить значення в межах десятків мілісекунд. Для маршруту Лос-Анджелес — Сідней нижня межа становить 120.7 мс, і жодна сума грошей її не зменшить.

Тому розміщуйте сервер поблизу гравців, які ним користуються. Якщо ваша група розподілена по різні боки океану, хтось матиме довгий маршрут. Зазвичай справедливим рішенням є регіон, у якому перебуває більшість гравців.

Замість припущень виміряйте маршрут:

sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10

Спочатку прочитайте останній рядок. У ньому вказано сервер, а його втрати пакетів і затримка — єдині показники, які визначають сприйняття гри. Втрати, показані на проміжному вузлі за відсутності втрат на кінцевому вузлі, майже завжди означають обмеження частоти відповідей ICMP на цьому маршрутизаторі, оскільки маршрутизатори знижують пріоритет відповідей на пакети зонда, але нормально пересилають звичайний трафік. Нехай кожен гравець запустить цю перевірку до сервера, оскільки кожен із них використовує інший маршрут.

Як обчислюється нижня межа двосторонньої затримки

Світло у склі рухається приблизно з двома третинами швидкості у вакуумі, що дає близько 200 км за мілісекунду. Двосторонній обмін охоплює відстань двічі, тому нижня межа в мілісекундах дорівнює односторонній відстані в кілометрах, поділеній на 100. Відстань між Нью-Йорком і Лондоном становить 5,570 км, а 5570, поділене на 100, дає 55.7 мс. Кожне виміряне значення буде вищим, оскільки кабелі прокладають уздовж узбережжя, а маршрутизаторам потрібен час на обробку.

Відкривайте лише порти, потрібні грі

Ігровому серверу потрібно відкрити один або два порти, і більше нічого. Типові значення за замовчуванням:

  • Minecraft Java Edition: TCP 25565
  • Minecraft Bedrock Edition: UDP 19132
  • Valheim: UDP 2456 і UDP 2457
  • Palworld: UDP 8211
  • Ігри на рушії Source, наприклад Counter-Strike 2: UDP 27015

Перевірте документацію самої гри, оскільки деякі ігри використовують додатковий query-порт. Valheim — найочевидніший приклад: через 2456 проходить ігровий трафік, а на 2457 відповідає Steam server query, завдяки якому сервер відображається у списку серверів. Відкриття цих портів для TCP нічого не дасть, оскільки Valheim використовує лише UDP.

Дозвольте SSH до ввімкнення firewall. Інакше ви заблокуєте собі доступ до власного сервера:

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose

Багато провайдерів також запускають network firewall у панелі керування окремо від firewall на самому сервері. Порт, відкритий у ufw, але закритий у панелі провайдера, не прийматиме з’єднання. Ззовні це проявляється так само, тому перевірте обидва рівні, перш ніж редагувати конфігураційні файли.

Перевірити TCP-порт з іншої машини просто:

sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565

UDP не можна перевірити таким способом. Закритий UDP-порт зазвичай не відповідає, тому відсутність відповіді на probe нічого не підтверджує. Натомість перевірте порт на самому сервері та переконайтеся, що процес гри прослуховує очікуваний порт:

sudo ss -lunp | grep 2456

Ніколи не відкривайте RCON, протокол віддаленої консолі, для доступу з інтернету. За замовчуванням це один пароль, який передається через незашифроване з’єднання на порту 25575. Прив’яжіть його до 127.0.0.1 і підключайтеся через SSH tunnel. Також запускайте ігровий сервер від окремого непривілейованого користувача, щоб помилка в моді не дала доступу до решти системи. У розділі Перші десять хвилин на новому VPS описано налаштування облікового запису та посилення захисту SSH, які передбачаються виконаними в цьому розділі.

Запускайте сервер через systemd, щоб він перезапускався

Сервер, запущений вручну в SSH-сеансі, завершує роботу після закриття сеансу та не запускається після перезавантаження. systemd вирішує обидві проблеми. Створіть /etc/systemd/system/minecraft.service:

[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Restart=on-failure запускає сервер після збою та залишає його вимкненим після коректного завершення роботи. Це потрібна поведінка. Restart=always заважатиме щоразу, коли ви навмисно зупиняєте сервер. TimeoutStopSec=180 має більше значення, ніж може здатися. systemctl stop надсилає SIGTERM. Vanilla Minecraft server перехоплює цей сигнал і зберігає світ перед завершенням роботи. Після завершення тайм-ауту systemd надсилає SIGKILL. Великий світ може записуватися довше за стандартні 90 секунд. Усе, що не встигло потрапити на диск до надсилання SIGKILL, буде втрачено.

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f

Успішний запуск завершується рядком на кшталт Done (12.345s)! For help, type "help". Якщо unit постійно переходить між станами activating і failed, journalctl -u minecraft -n 50 містить причину. Зазвичай проблема полягає в неправильному шляху у WorkingDirectory або в обсязі heap, який перевищує доступну пам’ять сервера.

systemd не надає інтерактивної консолі, тому подбайте про це заздалегідь. Використовуйте RCON на localhost для виконання команд або запускайте сервер у сеансі tmux. Такий самий підхід дає змогу зберігати тривалий сеанс Claude Code на VPS між підключеннями.

Для ігор, які поширюються через Steam, перед цим потрібен SteamCMD. Пакет Ubuntu є 32-бітним бінарним файлом, тому в конфігурації вказано архітектуру. Якщо пропустити цей рядок, apt повідомить, що пакета немає серед доступних для встановлення:

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

Деякі ігрові сервери поступово збільшують споживання пам’яті під час роботи. Запланований перезапуск у період низького навантаження є прийнятим обхідним рішенням, а не виправленням причини. Таймер systemd, який викликає systemctl restart, простіше контролювати, ніж запис у cron, оскільки systemctl list-timers точно показує час наступного запуску.

Регулярно створюйте резервні копії світу

На ігровому сервері все можна відновити, крім каталогу світу та даних гравців. Повторне встановлення гри займає кілька хвилин. Відновлення того, що ваша група будувала місяцями, може тривати місяці.

Надійна резервна копія створюється тоді, коли жоден процес не записує дані. Найпростіший спосіб гарантувати це — зупинити сервер на хвилину:

sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

Якщо нічна пауза неприйнятна, спочатку примусово запишіть дані світу. У консолі Minecraft команда save-off вимикає автоматичне збереження, save-all flush записує всі дані, що залишилися в черзі, а save-on знову вмикає автоматичне збереження після завершення копіювання. Копіювання світу під час запису сервером може захопити файл регіону, записаний лише частково. Ви виявите це лише тоді, коли знадобиться відновлення.

Зберігайте принаймні одну копію поза сервером. Резервна копія на тому самому диску не переживе відмову диска, а snapshot провайдера — це радше зручний засіб, ніж резервна копія, оскільки він зберігається в тому самому обліковому записі, який ви можете втратити. Регулярні резервні копії restic у віддалене сховище забезпечують зберігання версій і дедуплікацію, тому місяць щоденних копій світу не заповнить ваш том.

Після цього виконайте відновлення. Резервна копія, з якої ви ніколи не виконували відновлення, є лише припущенням. Розпакуйте архів за минулу ніч в окремий каталог, вкажіть його тестовому серверу та переконайтеся, що світ завантажується, а будівлі залишилися на своїх місцях.

Перевірте VPS, перш ніж купувати його

Придбайте один місяць, а не рік, і протестуйте сервер із реальними гравцями протягом одного вечора. Запустіть тест одного потоку sysbench, а потім нехай кожен гравець виконає mtr у напрямку сервера. Повна процедура тестування VPS описує ці інструменти та показує, який вигляд має поганий результат, а скільки насправді коштує VPS на місяць допоможе перевірити, що ви платите за ресурс, який обмежує продуктивність сервера, а не за той, який найбільшим шрифтом указаний на сторінці тарифу.

Два матеріали продовжують тему цього матеріалу. Як створити Minecraft-сервер на VPS — це покрокова версія всього описаного вище для гри, з якої починає більшість користувачів. Розширений список завдань, для яких можна використовувати VPS варто прочитати, якщо ви хочете, щоб сервер виконував корисні завдання між ігровими вечорами.

FAQ

Чи можна грати в ігри на VPS замість придбання ігрового ПК?

Ні. Стандартний VPS не має GPU, а використовує лише віртуальний відеоадаптер для консолі провайдера. Після встановлення графічного середовища glxinfo -B показує програмний рендерер llvmpipe, тому 3D-гра працює з кількома кадрами на секунду. Навіть підключений GPU не вирішує проблему: віддалена гра додає кодування та декодування відео до проходження кожного кадру в обидва боки, а RDP і VNC для цього не призначені. VPS використовують для розміщення dedicated server, до якого підключається ваша група. Якщо ви хочете грати, орендуйте GPU або скористайтеся cloud gaming service.

Скільки ядер CPU потрібно ігровому серверу?

Для більшості ігор два швидкі ядра кращі за вісім повільних, оскільки симуляція світу працює в одному головному потоці, а додаткові ядра не допомагають цьому потоку вкластися в ліміт 50 ms. Порівнюйте доступні плани за допомогою sysbench cpu --cpu-max-prime=20000 --threads=1 run і переглядайте показник events per second. За додаткові ядра варто платити, якщо на тому самому сервері ви також запускаєте другий сервер або базу даних. Тоді ці навантаження не забиратимуть час у потоку ігрових тактів.

Скільки RAM потрібно серверу Minecraft?

Приблизно 2 GB heap для vanilla world приблизно з 10 гравцями та 8 GB для великого modpack за тієї самої кількості гравців. Встановіть -Xms і -Xmx на однакове значення та залиште від 1 GB до 2 GB вільної пам’яті для операційної системи. JVM використовує пам’ять поза heap, а kernel потребує page cache. Якщо heap більший за обсяг пам’яті сервера, kernel завершить процес. У dmesg це буде видно як повідомлення про нестачу пам’яті, а не як помилку Java.

Чому гравці стикаються з лагами, коли сервер має вільні CPU і RAM?

Цей опис відповідає двом причинам. Перевірте журнал сервера на наявність Can't keep up! Is the server overloaded?. Це означає, що один головний потік не вклався у свій бюджет такту 50 ms, тоді як інші ядра простоювали. Якщо цього рядка немає, проблема пов’язана з мережевим маршрутом. Нехай кожен гравець виконає mtr -rwzc 100 203.0.113.10 для адреси вашого сервера та перегляне останній рядок. Також перевірте стовпець st у vmstat 1. Значення steal time понад кілька відсотків означає, що host перевантажений і доступний вам idle CPU насправді недоступний.

Які порти потрібно відкрити для ігрового сервера?

Лише порт самої гри та SSH. Minecraft Java використовує TCP 25565, Minecraft Bedrock — UDP 19132, Valheim — UDP 2456 і 2457, а Palworld — UDP 8211. Додайте правило для SSH перед запуском ufw enable, інакше втратите доступ до сервера. Пам’ятайте, що багато провайдерів мають додатковий firewall у панелі керування. Порт має бути відкритий в обох firewall. Ніколи не відкривайте RCON на порту 25575 для доступу з інтернету, оскільки це один пароль, який передається у відкритому вигляді.