Запустити два ігрові сервери, такі як Core Keeper та Icarus, на одному VPS можна без конфліктів, використовуючи унікальні порти (наприклад, 27015 для Core Keeper та 7778 для Icarus), окремих системних користувачів та systemd-юніти з cgroups для керування ресурсами CPU і RAM, що запобігає взаємному уповільненню.
У світі онлайн-ігор, де кожен хоче мати свій виділений сервер для комфортної гри з друзями, часто виникає дилема: запускати окремий VPS для кожної гри чи спробувати розмістити кілька на одній машині? Якщо ви та ваша компанія друзів захоплюєтеся різними проєктами, такими як пригодницька виживалка Core Keeper та суворий симулятор виживання Icarus, платити за два хостинги може бути накладно. На щастя, сучасний VPS дозволяє ефективно розмістити кілька ігрових серверів на одному VPS, якщо підійти до налаштування з розумом. У цій статті ми детально розберемо, як запустити Core Keeper dedicated server та Icarus dedicated server на одній віртуальній машині, уникаючи конфліктів та забезпечуючи стабільну роботу.
Чому вигідно та ефективно розміщувати кілька ігрових серверів на одному VPS?
Рішення розмістити кілька ігрових серверів на одній віртуальній машині має низку переваг, які роблять його привабливим для ігрових спільнот та невеликих компаній друзів. Це не тільки економія коштів, а й спрощення керування.
Економія ресурсів та бюджету при запуску двох серверів на одному VPS
Основна причина для консолідації – це фінансова вигода. Замість того, щоб орендувати два або більше окремих VPS, кожен з яких буде простоювати більшу частину часу або використовувати лише малу частку своїх ресурсів, ви можете вибрати один, більш потужний VPS. Це дозволить значно скоротити щомісячні витрати на хостинг. Наприклад, один VPS з 8 GB RAM та 4 vCPU часто обходиться дешевше, ніж два VPS по 4 GB RAM та 2 vCPU. Економія може досягати 20-40% від загальної вартості, що особливо відчутно у довгостроковій перспективі.
Централізоване керування та гнучкість
Керування кількома ігровими серверами з однієї точки входу спрощує адміністрування. Вам не потрібно підключатися до різних серверів, щоб оновити ігри, перезапустити служби або налаштувати фаєрвол. Усі операції виконуються на одній машині. Це також дає більшу гнучкість у розподілі ресурсів. Якщо одна гра тимчасово потребує більше потужності (наприклад, під час великого оновлення або івенту), ви можете динамічно перерозподілити доступні ресурси, не зачіпаючи інші VPS.
Підготовка VPS: ОС, користувачі та каталоги для Core Keeper та Icarus
Перш ніж приступати до встановлення ігрових серверів, необхідно правильно підготувати операційну систему вашого VPS. Це ключовий крок для забезпечення безпеки, стабільності та запобігання конфліктам.
Вибір ОС та базові налаштування
Для ігрових серверів рекомендується використовувати дистрибутиви Linux, такі як Ubuntu Server (20.04 LTS або 22.04 LTS) або Debian (11 або 12). Вони відрізняються стабільністю, продуктивністю та широкою підтримкою спільноти. Після розгортання VPS виконайте базове оновлення системи:
sudo apt update && sudo apt upgrade -y
Встановіть необхідні утиліти, такі як `screen` (для запуску консольних застосунків у фоновому режимі), `git` (якщо потрібно клонувати репозиторії) та `htop` (для моніторингу ресурсів):
sudo apt install screen git htop -y
Також настійно рекомендуємо налаштувати фаєрвол UFW для обмеження доступу до портів. За замовчуванням UFW блокує всі вхідні з'єднання, крім тих, що явно дозволені, що значно підвищує безпеку вашого сервера. Дозвольте SSH-доступ:
sudo ufw allow ssh
sudo ufw enable
Надалі ми додамо правила для ігрових портів.
Створення окремих користувачів та каталогів для Core Keeper та Icarus
Один з найефективніших способів ізолювати ігрові сервери один від одного – це запуск кожного з них під окремим системним користувачем. Це запобігає потенційним конфліктам файлів, спрощує керування дозволами та підвищує безпеку, обмежуючи область впливу у разі компрометації одного з серверів.
Користувач та каталог для Core Keeper
Створіть нового користувача `corekeeper` без доступу до інтерактивної оболонки (для підвищення безпеки) та його домашню директорію:
sudo adduser --system --no-create-home --group corekeeper
sudo mkdir /opt/corekeeper
sudo chown corekeeper:corekeeper /opt/corekeeper
Каталог `/opt/corekeeper` буде використовуватися для встановлення сервера Core Keeper.
Користувач та каталог для Icarus
Аналогічно створіть користувача `icarus` та його директорію:
sudo adduser --system --no-create-home --group icarus
sudo mkdir /opt/icarus
sudo chown icarus:icarus /opt/icarus
Каталог `/opt/icarus` буде використовуватися для встановлення сервера Icarus.
Тепер у нас є два ізольовані середовища, що є чудовою основою для подальшого налаштування.
Шукаєте надійний сервер для ваших проєктів?
VPS від $10/міс та виділені сервери від $9/міс з NVMe, DDoS-захистом та підтримкою 24/7.
Переглянути пропозиції →Ігрові сервери: порти, конфлікти та їх вирішення
Конфлікти портів – найчастіша проблема при спробі запустити два сервери на одному VPS. Кожна служба, яка очікує вхідні з'єднання, повинна "слухати" на унікальному порту. Якщо дві служби намагаються використовувати один і той же порт, тільки одна з них зможе його зайняти, а інша завершиться з помилкою.
Розуміння мережевих портів
Мережеві порти – це логічні точки, через які програми обмінюються даними по мережі. Вони являють собою числа від 1 до 65535. Ігрові сервери зазвичай використовують певні порти для ігрового трафіку (UDP/TCP) та для запитів статусу (Query UDP). Наприклад:
- Core Keeper Dedicated Server:
- Ігровий порт (Game): 27015 (UDP/TCP)
- Порт запитів (Query): 27016 (UDP)
- Icarus Dedicated Server:
- Ігровий порт (Game): 7777 (UDP)
- Порт запитів (Query): 27015 (UDP)
Як видно з прикладу вище, стандартні конфігурації Icarus та Core Keeper конфліктують за портом 27015 (Icarus Query та Core Keeper Game). Це ідеальний сценарій для демонстрації вирішення проблеми.
Вибір унікальних портів для Core Keeper та Icarus
Щоб уникнути конфліктів, ми змінимо порти для Icarus:
- Core Keeper:
- Game Port: 27015 (UDP/TCP)
- Query Port: 27016 (UDP)
- Icarus:
- Game Port: 7778 (UDP)
- Query Port: 27017 (UDP)
Тепер усі порти унікальні. Це критично важливо для коректної роботи обох серверів.
Налаштування фаєрволу (UFW) для ігрових серверів
Після вибору портів необхідно дозволити вхідні з'єднання на ці порти через фаєрвол UFW. Виконайте наступні команди:
sudo ufw allow 27015/tcp comment 'Core Keeper Game TCP'
sudo ufw allow 27015/udp comment 'Core Keeper Game UDP'
sudo ufw allow 27016/udp comment 'Core Keeper Query UDP'
sudo ufw allow 7778/udp comment 'Icarus Game UDP'
sudo ufw allow 27017/udp comment 'Icarus Query UDP'
sudo ufw status verbose
Перевірте, що UFW активний і нові правила додані. Тепер ваш VPS готовий приймати підключення до обох ігрових серверів.
Як встановити Core Keeper Dedicated Server на VPS
Тепер, коли VPS підготовлений і порти розподілені, приступимо до встановлення Core Keeper dedicated server. Ми будемо використовувати SteamCMD для завантаження файлів сервера.
Завантаження SteamCMD та Core Keeper
Переключіться на користувача `corekeeper` та завантажте SteamCMD. Якщо ви ще не встановили SteamCMD, зробіть це:
sudo apt install steamcmd -y
Потім перейдіть в каталог `/opt/corekeeper` та завантажте файли сервера. Оскільки користувач `corekeeper` є системним і не має домашньої директорії, ми будемо виконувати команди від його імені через `sudo -u`:
sudo -u corekeeper mkdir -p /opt/corekeeper/steamcmd
sudo -u corekeeper /usr/games/steamcmd +force_install_dir /opt/corekeeper +login anonymous +app_update 1963720 validate +quit
App ID для Core Keeper Dedicated Server – 1963720.
Для більш детальної інформації щодо встановлення та налаштування Core Keeper ви можете ознайомитися з нашою статтею: Власний сервер Core Keeper: встановлення та налаштування на VPS/bare metal.
Базова конфігурація сервера Core Keeper
Після завантаження файлів сервера Core Keeper необхідно створити або відредагувати файл конфігурації. Зазвичай це робиться у файлі `server_settings.json` або через параметри командного рядка. Приклад мінімальної конфігурації:
sudo -u corekeeper nano /opt/corekeeper/server_settings.json
Вміст файлу (замініть `YourWorldName` та `YourPassword`):
{
"world_name": "MyValebyteCoreKeeperWorld",
"world_seed": "",
"max_players": 10,
"server_password": "StrongPassword123",
"game_port": 27015,
"query_port": 27016,
"save_interval": 300
}
Переконайтеся, що `game_port` та `query_port` відповідають обраним нами портам (27015 та 27016).
Автоматичний запуск Core Keeper через systemd з обмеженням ресурсів
Для автоматичного запуску сервера та керування його ресурсами ми створимо systemd-юніт. Це дозволить Core Keeper запускатися при старті системи, а також обмежити споживання CPU та пам'яті, щоб він не "задушив" Icarus.
sudo nano /etc/systemd/system/corekeeper.service
Вміст unit-файлу:
[Unit]
Description=Core Keeper Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
User=corekeeper
Group=corekeeper
ExecStart=/opt/corekeeper/CoreKeeperServer -settings /opt/corekeeper/server_settings.json
WorkingDirectory=/opt/corekeeper
StandardOutput=journal
StandardError=journal
Restart=always
RestartSec=5
# Обмеження ресурсів через cgroups
CPUWeight=500 # 50% від доступного CPU за замовчуванням (1024)
MemoryMax=4G # Максимальне споживання пам'яті 4GB
IOWeight=500 # 50% від доступного I/O
[Install]
WantedBy=multi-user.target
Пояснення до обмежень:
- `CPUWeight=500`: Встановлює вагу CPU для цього юніта. За замовчуванням вага дорівнює 1000. Значення 500 означає, що Core Keeper отримає приблизно 50% від доступного CPU, якщо є інші процеси з вагою 1000. Якщо інших навантажених процесів немає, він може використовувати 100%.
- `MemoryMax=4G`: Жорстко обмежує споживання оперативної пам'яті до 4 гігабайт. Якщо сервер спробує використовувати більше, він буде завершений.
- `IOWeight=500`: Аналогічно CPU, регулює пріоритет дискових операцій.
Збережіть файл, потім увімкніть та запустіть службу:
sudo systemctl daemon-reload
sudo systemctl enable corekeeper.service
sudo systemctl start corekeeper.service
sudo systemctl status corekeeper.service
Переконайтеся, що сервер Core Keeper запущений і працює коректно.
Як встановити Icarus Dedicated Server на VPS
Тепер встановимо Icarus dedicated server, дотримуючись тієї ж логіки ізоляції ресурсів та користувачів.
Завантаження SteamCMD та Icarus
Переключіться на користувача `icarus` та завантажте файли сервера Icarus:
sudo -u icarus mkdir -p /opt/icarus/steamcmd
sudo -u icarus /usr/games/steamcmd +force_install_dir /opt/icarus +login anonymous +app_update 2089300 validate +quit
App ID для Icarus Dedicated Server – 2089300.
Більш детальний посібник зі встановлення Icarus доступний тут: Власний сервер Icarus: встановлення та налаштування на VPS/bare metal.
Базова конфігурація сервера Icarus
Конфігурація Icarus здійснюється через файли `Game.ini` та `ServerSettings.ini`. Створіть їх у каталозі `Icarus/Saved/Config/LinuxServer/` всередині вашої інсталяції Icarus.
sudo -u icarus mkdir -p /opt/icarus/Icarus/Saved/Config/LinuxServer/
sudo -u icarus nano /opt/icarus/Icarus/Saved/Config/LinuxServer/Game.ini
Приклад `Game.ini` (у цьому файлі зазвичай налаштовуються ігрові параметри):
[/Script/Icarus.IcarusServerSettings]
ServerName="MyValebyteIcarusServer"
ServerPassword="AnotherStrongPassword456"
MaxPlayers=8
Difficulty="Medium"
AllowPvP=False
EnableProximityVoiceChat=True
Тепер створіть `ServerSettings.ini` для портів:
sudo -u icarus nano /opt/icarus/Icarus/Saved/Config/LinuxServer/ServerSettings.ini
Вміст `ServerSettings.ini`:
[IcarusServerSettings]
Port=7778
QueryPort=27017
Переконайтеся, що `Port` та `QueryPort` відповідають обраним нами портам (7778 та 27017).
Автоматичний запуск Icarus через systemd з обмеженням ресурсів
Створіть systemd-юніт для Icarus:
sudo nano /etc/systemd/system/icarus.service
Вміст unit-файлу:
[Unit]
Description=Icarus Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
User=icarus
Group=icarus
ExecStart=/opt/icarus/Icarus/Binaries/Linux/IcarusServer -Port=7778 -QueryPort=27017 -log
WorkingDirectory=/opt/icarus/Icarus/Binaries/Linux/
StandardOutput=journal
StandardError=journal
Restart=always
RestartSec=5
# Обмеження ресурсів через cgroups
CPUWeight=500 # 50% від доступного CPU за замовчуванням (1024)
MemoryMax=6G # Максимальне споживання пам'яті 6GB
IOWeight=500 # 50% від доступного I/O
[Install]
WantedBy=multi-user.target
Пояснення до обмежень:
- `CPUWeight=500`: Аналогічно Core Keeper, Icarus отримає приблизно 50% від доступного CPU.
- `MemoryMax=6G`: Icarus зазвичай вимагає більше пам'яті, ніж Core Keeper, тому тут встановлено 6 GB.
Збережіть файл, потім увімкніть та запустіть службу:
sudo systemctl daemon-reload
sudo systemctl enable icarus.service
sudo systemctl start icarus.service
sudo systemctl status icarus.service
Тепер обидва сервери повинні бути запущені та працювати під своїми користувачами, з унікальними портами та з індивідуальними обмеженнями ресурсів.
Моніторинг та діагностика: як відстежити використання ресурсів VPS?
Коли ви запускаєте кілька ігрових серверів на одному VPS, вкрай важливо мати інструменти для моніторингу їхньої продуктивності та споживання ресурсів. Це дозволить швидко виявити та усунути проблеми, якщо один сервер починає "душити" інший.
Інструменти моніторингу (htop, glances, systemd-cgtop)
- `htop`: Інтерактивний монітор процесів, який показує споживання CPU, пам'яті, а також список запущених процесів. Запустіть `htop` у терміналі. Ви зможете побачити, скільки CPU та RAM споживає кожен процес, включно з вашими ігровими серверами.
- `glances`: Більш просунутий інструмент моніторингу, який надає комплексну інформацію про систему: CPU, RAM, дискове введення-виведення, мережу, процеси тощо. Встановіть його командою `sudo apt install glances` та запустіть `glances`.
- `systemd-cgtop`: Цей інструмент особливо корисний, коли ви використовуєте cgroups для обмеження ресурсів. Він показує споживання ресурсів групами контролю (cgroups), до яких прив'язані наші systemd-юніти. Запустіть `systemd-cgtop`, щоб побачити, скільки CPU та RAM споживають групи `corekeeper.service` та `icarus.service`. Це дозволяє точно відстежити, як дотримуються встановлені вами ліміти.
Логування та налагодження
Systemd за замовчуванням направляє стандартний вивід та помилки (StandardOutput, StandardError) ваших юнітів у журнал systemd. Ви можете переглянути логи для кожного сервера окремо:
sudo journalctl -u corekeeper.service -f
sudo journalctl -u icarus.service -f
Флаг `-f` дозволяє стежити за логами в реальному часі. Ці логи допоможуть виявити помилки запуску, проблеми з конфігурацією або збої в роботі ігрового сервера.
Скільки ігрових серверів можна запустити на одному VPS?
Питання про те, скільки ігрових серверів можна запустити на одному VPS, не має однозначної відповіді. Це сильно залежить від кількох факторів.
Фактори, що впливають на продуктивність
- Сама гра: Деякі ігри, як Icarus, значно більш вимогливі до CPU та RAM, ніж інші, наприклад, Core Keeper або Terraria.
- Кількість гравців: Чим більше одночасно граючих користувачів, тим вище навантаження на сервер.
- Модифікації та плагіни: Додатковий контент може значно збільшити споживання ресурсів.
- Налаштування світу: Розмір світу, щільність об'єктів, частота збереження – все це впливає на навантаження.
- Характеристики VPS: Кількість vCPU, об'єм RAM, тип диска (NVMe SSD значно швидший за звичайний SSD) та пропускна здатність мережі.
Для 5-10 одночасних гравців у Core Keeper та 4-6 гравців у Icarus (з урахуванням їхніх вимог) достатньо 4 vCPU, 8 GB RAM та NVMe-диска на 80 GB.
| Гравців (Core Keeper + Icarus) | vCPU | RAM | Диск | Порт | Орієнтовна ціна VPS (Valebyte, $/міс) |
|---|---|---|---|---|---|
| 5 + 4 | 4 | 8 GB | 80 GB NVMe | 1 Gbps | Від $25 |
| 10 + 6 | 6 | 12 GB | 120 GB NVMe | 1 Gbps | Від $40 |
| 15 + 8 | 8 | 16 GB | 160 GB NVMe | 1 Gbps | Від $60 |
| 20 + 10 | 12 | 24 GB | 240 GB NVMe | 1 Gbps | Від $90 |
Ціни є орієнтовними для пропозицій Valebyte станом на липень 2024 року та можуть змінюватися залежно від акцій та локації.
Рекомендації щодо вибору VPS
Для успішного розміщення двох серверів на одному VPS (особливо таких вимогливих, як Icarus) вкрай важливий потужний процесор з високою тактовою частотою та швидкий NVMe-диск. Хоча кількість vCPU важлива, їхня продуктивність (частота та архітектура) відіграє не меншу роль. Valebyte пропонує високопродуктивні VPS з NVMe-дисками, які ідеально підходять для таких завдань.
При виборі тарифного плану завжди закладайте невеликий запас по ресурсах, особливо по RAM. Якщо один із серверів періодично використовуватиме більше пам'яті, ніж ви очікували, це може призвести до нестабільності або завершення процесів. Наявність cgroups з `MemoryMax` допоможе запобігти цим проблемам, але краще мати достатній об'єм пам'яті для всіх запущених служб.
Часті запитання
Чи можна запустити Core Keeper та Icarus на одному VPS без конфліктів?
Так, це абсолютно реально і навіть рекомендовано для економії ресурсів. Головне — забезпечити кожному серверу унікальні мережеві порти, використовувати окремих системних користувачів та файлові каталоги, а також налаштувати systemd-юніти з обмеженнями ресурсів (CPUWeight, MemoryMax) через cgroups. Це запобіжить конфліктам та гарантує стабільну роботу обох ігрових серверів на одній машині.
Які порти потрібно відкрити для Core Keeper та Icarus на одному VPS?
Для Core Keeper зазвичай використовуються порти 27015 (UDP/TCP для гри) та 27016 (UDP для запитів). Для Icarus у нашому сценарії ми змінили стандартні порти на 7778 (UDP для гри) та 27017 (UDP для запитів), щоб уникнути конфлікту з Core Keeper. Усі ці порти необхідно дозволити через фаєрвол, наприклад, UFW, щоб гравці могли підключатися.
Скільки RAM та CPU потрібно для двох ігрових серверів?
Вимоги залежать від ігор та кількості гравців. Для Core Keeper (до 10 гравців) та Icarus (до 6 гравців) на одному VPS рекомендується мінімум 8 GB RAM та 4 vCPU. Icarus більш вимогливий до CPU та RAM, тому переконайтеся, що у вас є достатній запас. Для більшої кількості гравців або більш вимогливих ігор може знадобитися 12-16 GB RAM та 6-8 vCPU.
Як обмежити ресурси одного ігрового сервера, щоб він не заважав іншому?
Для обмеження ресурсів використовуйте systemd-юніти з директивами cgroups. Наприклад, CPUWeight=500 встановить вагу CPU, а MemoryMax=4G обмежить споживання оперативної пам'яті до 4 гігабайт для конкретного сервісу. Це гарантує, що один сервер не зможе використовувати всі доступні ресурси і тим самим уповільнити або "задушити" інший.
Чи можна використовувати systemd для автоматичного запуску та перезапуску серверів?
Так, systemd — це стандартний та найефективніший спосіб керування службами в Linux. Створення service-файлів для Core Keeper та Icarus дозволяє не тільки автоматично запускати їх при старті системи, але й налаштовувати автоматичний перезапуск у разі збоїв (за допомогою Restart=always та RestartSec=5), а також централізовано керувати їхнім статусом та ресурсами.
Висновки
Запуск двох ігрових серверів, таких як Core Keeper та Icarus, на одному VPS – це не тільки економічно вигідне, а й технічно реалізоване рішення. Ключ до успіху лежить у ретельній ізоляції ресурсів через окремих системних користувачів, унікальні мережеві порти та ефективне керування за допомогою systemd-юнітів та cgroups. Рекомендується використовувати VPS з NVMe-дисками та достатнім об'ємом RAM (від 8 GB) та vCPU (від 4) для забезпечення стабільної роботи обох серверів під навантаженням.
NVMe VPS з активацією за 60 секунд: повний root-доступ, 20+ локацій, оплата карткою або криптою.
Обрати тариф