SSD Nodes Learn Hosting plans →
Посібники Matt ConnorВід Matt Connor

Як запустити FiveM-сервер на VPS з Ubuntu

Встановіть FXServer на Ubuntu, зафіксуйте artifact, додайте licence key Cfx.re та відкрийте порт 30120 для TCP і UDP. Не публікуйте txAdmin в інтернеті.

Що потрібно FiveM-серверу на VPS

FiveM-сервер на VPS потребує одного непривілейованого користувача Linux, однієї збірки artifact із Cfx.re, одного licence key і відкритого порту для TCP та UDP. Установлення займає приблизно десять хвилин. Решта цього посібника присвячена параметрам, від яких залежить можливість гри на сервері: швидкості одного ядра CPU, обсягу пам’яті, потрібного вашим ресурсам, і панелі керування, яку не можна залишати відкритою за публічною адресою.

Є три обов’язкові передумови. Бінарні файли сервера, які називають artifacts, надходять з офіційного списку збірок Cfx.re. Licence key отримують на порталі Cfx.re за адресою portal.cfx.re, який у старіших посібниках називають keymaster. Ключ прив’язаний до адреси машини, яка його використовує. Кожен гравець, який підключається, повинен мати власну легальну копію GTA V (Grand Theft Auto V) у Steam, Rockstar Games Launcher або Epic Games, а також безкоштовний обліковий запис Cfx.re. Клієнт перевіряє право власності на гру під час запуску. Тому сервер, побудований на будь-чому іншому, не працює. Цей посібник не охоплює жодних обхідних способів.

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

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

FXServer, бінарний файл сервера FiveM, виконує ігрову логіку в одному головному потоці. Усі скрипти ресурсів, обробники подій і оновлення стану проходять через цей цикл. Додаткові ядра допомагають kernel, базі даних і мережевому стеку. Вони не розподіляють ігровий цикл між ядрами. Тому сервер із 4 vCPU на повільному ядрі може працювати ривками під навантаженням, тоді як сервер із 2 vCPU на швидкому ядрі працює плавно.

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

lscpu | grep -E 'Model name|MHz'

Потім знайдіть опублікований показник швидкодії одного потоку для цієї моделі. Рейтинг PassMark single thread і показник Geekbench single-core є загальнодоступними. Обидва вимірюють роботу одного ядра. Саме це число має значення в цьому випадку. Після цього виміряйте фактичні характеристики виділеного вам сервера:

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

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

Потім перевірте, чи справді ядро доступне вам:

vmstat 1 5

В останньому стовпці, st, указано steal time — частку часу, коли ваш віртуальний CPU був готовий виконувати роботу, але hypervisor змусив його чекати. Стабільне значення понад 1 або 2 означає, що ви ділите фізичне ядро з іншими завантаженими сусідами. Ігровий цикл одразу реагує на це ривками та rubber banding. У матеріалі Steal time через завантаженого сусіда описано, як читати цей стовпець і що з цим робити.

Обсяг пам’яті залежить від ресурсів, які ви запускаєте, а не лише від кількості слотів. Базові дані сервера від Cfx.re займають кілька сотень мегабайтів. Roleplay framework із сорока або п’ятдесятьма ресурсами та базою даних MariaDB на тому самому сервері — це вже інша конфігурація: 4 GB є практичним мінімумом, а 8 GB достатньо для 32–64 слотів. Це типові значення, опубліковані в конфігураціях спільноти. Використовуйте їх як початкові орієнтири та контролюйте free -m під реальним навантаженням від гравців.

Створіть користувача та встановіть залежності

Запускайте сервер від імені звичайного користувача, ніколи не використовуйте root. Є дві причини. Використовувати root — погана практика для будь-якого сервісу, доступного з Інтернету. Крім того, артефакт для Linux працює всередині вбудованої кореневої файлової системи Alpine Linux, тому файли, розпаковані від імені root, не можуть виконувати інші користувачі. Це найпоширеніша причина, через яку щойно встановлений сервіс не запускається.

sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem

Усі наведені нижче дії виконуються від імені користувача fivem. Потрібен xz-utils, оскільки завантажений файл є архівом .tar.xz, а git використовується для клонування базових даних сервера.

Завантаження закріпленої збірки артефакту

Збірка для Linux доступна в каналі build_proot_linux на сервері артефактів Cfx.re. На сторінці завантаження сервера Cfx.re одна збірка позначена як Recommended, а новіша — як Latest. Після виходу нових релізів обидві позначки переходять до нових збірок. Натомість закріпіть пронумеровану папку. Тоді наступного місяця під час повторної збірки сервера ви отримаєте той самий бінарний файл, який протестували цього місяця. Оновлення стане свідомим рішенням.

mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz
tar xf fx.tar.xz
ls

Під час моєї перевірки сторінки завантаження сервера Cfx.re 9 October 2026 збірка 35245 мала позначку Recommended. Відкрийте цю сторінку, виберіть Linux і скопіюйте назву папки з поточного посилання fx.tar.xz у URL. Назва складається з номера збірки та хешу коміту. Старий список каталогів артефактів, на який досі посилаються багато інструкцій, тепер перенаправляє на цю саму сторінку.

Навіть закріплена збірка має обмежений строк підтримки. Cfx.re підтримує артефакт із позначкою Recommended протягом шести тижнів після виходу наступного артефакту. У політиці також зазначено, що непідтримувані серверні артефакти, старші за три місяці, не можна буде знайти через браузер серверів. Застаріла збірка продовжить працювати, але гравці більше не зможуть підключатися до неї через браузер. Тому плануйте оновлення заздалегідь, а не закріплюйте збірку назавжди.

У ls тепер мають відображатися run.sh і каталог alpine. Цей каталог є ключовим: артефакт для Linux містить власну невелику кореневу файлову систему Alpine і запускає сервер усередині неї за допомогою proot — інструмента користувацького простору, який емулює chroot без привілеїв root. Саме тому одне завантаження працює в Ubuntu, Debian і Rocky без пакетів, специфічних для дистрибутива.

Тепер клонуйте базові дані сервера. Вони містять ресурси за замовчуванням, з якими запускається ваш server.cfg:

git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data

Отримайте licence key і запишіть server.cfg

Увійдіть на portal.cfx.re за допомогою облікового запису Cfx.re та створіть server key. Портал запитає IP-адресу машини, яка використовуватиме ключ, і прив’яже ключ до цієї адреси. Перенесення на новий VPS означає редагування ключа на порталі, а не створення другого ключа. Зміни застосовуються одразу, але FXServer повторно перевіряє ключ лише після перезапуску.

Запишіть ~/FXServer/server-data/server.cfg:

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap

sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false

sv_licenseKey ChangeMe

add_ace group.admin command allow
add_principal identifier.fivem:1 group.admin

sv_maxclients приймає значення від 1 до 2048. Для значення 32 або більше потрібно встановити onesync у on або legacy, а для значення понад 64 потрібен on. OneSync визначає режим обізнаності сервера про стан гри. Саме він дає змогу серверу перевищити малу базову кількість слотів гри. Якщо встановити 128 слотів із вимкненим OneSync, сервер не матиме 128 слотів. Натомість він отримає конфігурацію, яку відхилить.

sv_licenseKey приймає ключ без лапок і пробілу в кінці. FXServer розділяє цей рядок за пробілами, тому будь-який зайвий символ порушує перевірку, і сервер відмовляється запускатися.

rcon_password навмисно відсутній у цьому файлі. RCON (remote console) вмикається лише тоді, коли змінну встановлено. Після цього він прослуховує той самий UDP-порт, що й гра. Пароль RCON на публічному порту створює канал віддаленого виконання команд на вашому сервері. Не встановлюйте його без конкретної потреби. Якщо він потрібен, використовуйте довгий випадковий пароль.

sv_scriptHookAllowed залишається false. В офіційній документації цей параметр позначено як нерекомендований, оскільки дозвіл для клієнтів Script Hook V відкриває сервер для зловживань із боку клієнтів.

Останні два рядки працюють у парі. add_ace group.admin command allow дає групі group.admin змогу виконувати будь-яку команду, а add_principal identifier.fivem:1 group.admin змушує Cfx.re account ID 1 успадкувати права цієї групи. Саме це надає обліковому запису права адміністратора. Документований синтаксис має вигляд add_principal [child_principal] [parent_principal], тому потрібні обидві частини: рядок add_principal, який містить лише обліковий запис, не вказує групу для успадкування і не надає жодних прав. Замініть 1 власним числовим ID. Інакше права адміністратора буде надано обліковому запису іншої особи, а ваш обліковий запис їх не отримає.

Запустіть сервер один раз вручну:

cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg

В іншій SSH-сесії запитайте сервер про його стан:

curl -s http://127.0.0.1:30120/info.json | head -c 200

JSON із назвами змінних і ресурсів сервера означає, що FXServer прив’язався до порту та відповідає. Connection refused означає, що сервер не прив’язався до порту, тому перегляньте вивід консолі, а не робіть припущень.

Сервер без ключа виводить це повідомлення й зупиняється:

This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.

У повідомленні досі вказано стару адресу keymaster. Ця адреса веде до того самого порталу Cfx.re. Якщо ключ задано, але сервер і далі відмовляється запускатися, найчастіше це означає, що IP-адреса, зареєстрована для ключа, більше не збігається з IP-адресою цієї машини.

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

Порт 30120 за протоколами TCP (протокол керування передаванням) і UDP (протокол дейтаграм користувача). FiveM використовує один номер порту для двох протоколів, і потрібні обидва. Якщо відкрити лише TCP, симптом буде оманливим: http://your.ip:30120/info.json відповідає у браузері, тому сервер здається працездатним, але ігровий клієнт зависає на Failed to get info from server і не підключається, оскільки власні запити клієнта та ігровий трафік передаються через UDP.

sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose

Залиште відкритим другий сеанс SSH, поки вмикаєте будь-який firewall. У матеріалі Основи ufw для VPS пояснено політику заборони за замовчуванням, завдяки якій наведених вище правил достатньо.

Більшість провайдерів також використовує мережевий firewall поза гостьовою системою. Ним керують із панелі, а не з shell. Правило ufw нічого не доводить щодо цього рівня. Якщо ззовні надходять відповіді TCP, але гравці все одно не можуть підключитися, перевірте мережевий трафік під час чиєїсь спроби підключення:

sudo tcpdump -ni any udp port 30120

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

Керуйте сервером через txAdmin без відкриття доступу до нього ззовні

txAdmin входить до складу artifact, який ви вже завантажили. Запустіть run.sh без аргументу +exec. Після цього txAdmin відкриє вебпанель на TCP-порті 40120 і виведе в консоль URL панелі та короткочасний PIN-код. Використайте цей PIN один раз, щоб прив’язати обліковий запис Cfx.re. Після цього входьте за допомогою облікового запису адміністратора, який створить txAdmin.

У txAdmin немає пароля за замовчуванням, тому ризик пов’язаний не з обліковими даними, які ви забули змінити. Ризик полягає в призначенні самої панелі: це віддалена консоль. Вона перезапускає сервер, редагує server.cfg, розгортає дані сервера та виконує команди від імені користувача сервера. Якщо залишити 40120 доступним з інтернету, на публічній адресі з’явиться сторінка входу до всіх цих функцій. Сканери знаходять відкриті порти панелей протягом кількох годин. Не відкривайте 40120 у firewall. Підключайтеся до панелі через SSH-тунель зі свого комп’ютера:

ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP

Потім відкрийте http://127.0.0.1:40120 у браузері. Трафік панелі проходить усередині SSH-з’єднання, а порт залишається закритим для всіх інших.

Перед спробою вирішити це іншим способом варто знати про одну особливість. txAdmin читає TXHOST_INTERFACE (типове значення — 0.0.0.0), щоб визначити, на якому інтерфейсі прослуховувати з’єднання. У документації прямо зазначено, що це саме значення примусово застосовується і до FXServer. Якщо встановити 127.0.0.1, щоб приховати панель, ігровий сервер також почне прослуховувати з’єднання лише на loopback. Тоді гравці не зможуть підключитися до сервера. Закривайте порт панелі за допомогою firewall, а не цією змінною. Щоб перенести панель на інший порт, встановіть TXHOST_TXA_PORT. Для нього можна використовувати будь-яке значення, крім 30120. Старіший convar +set txAdminPort згадується в багатьох посібниках. У власній документації txAdmin його позначено як deprecated і зазначено, що в майбутньому release він перестане працювати.

Залишайте сервер запущеним після виходу із системи

bash run.sh завершує роботу разом із вашим SSH-сеансом. tmux зручно використовувати під час тестування: виконайте tmux new -s fivem, запустіть сервер, натисніть Ctrl-b, потім d, щоб від’єднатися, і використайте tmux attach -t fivem, щоб повернутися. Сеанс tmux не зберігається після перезавантаження, тому все важливе потрібно оформити як unit systemd.

Створіть /etc/systemd/system/fivem.service:

[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -f

enable --now виконує два завдання: негайно запускає сервіс і запускає його знову після перезавантаження. Сервер, запущений вручну, не працюватиме після наступного оновлення ядра. Тепер journalctl -u fivem -f — це ваша консоль, оскільки сервіс systemd не має термінала, у який можна вводити команди. Якщо ви керуєте сервером через txAdmin, видаліть +exec server.cfg із ExecStart і вкажіть WorkingDirectory на /home/fivem/FXServer/server, оскільки txAdmin сам запускає ігровий сервер і зберігає його папку даних поруч із run.sh.

Що потрібно резервувати і де це зберігається

Артефакти не потрібно резервувати, оскільки закріплену збірку можна повторно завантажити за хвилину. Є чотири категорії даних, які належать лише вам.

  • ~/FXServer/server-data/resources: кожен ресурс, який ви встановили, придбали або написали.
  • server.cfg, незалежно від його розташування: уся конфігурація сервера, включно з обліковими записами адміністраторів.
  • ~/FXServer/server/txData: конфігурація txAdmin, список адміністраторів і журнали. У разі використання Linux-артефакту цю папку створено поруч із run.sh.
  • База даних MariaDB або MySQL, якщо її використовує ваш framework. Персонажі, гроші, транспортні засоби та інвентар зберігаються саме там і більше ніде, тому резервна копія ресурсів без дампа бази даних відновить порожній ігровий світ.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

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

Типові причини збоїв і повідомлення, які ви побачите

Немає дозволу на виконання loader. Сервер одразу завершує роботу та виводить повідомлення на кшталт цього:

run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied

Це відбувається тому, що архів розпакували за допомогою sudo. Тому все всередині alpine/ належить root, а користувач fivem не може виконати loader у цій директорії. Виправте власника за допомогою sudo chown -R fivem:fivem /home/fivem/FXServer або видаліть директорію та розпакуйте архів повторно від імені fivem.

tar відмовляється відкривати завантажений файл. tar (child): xz: Cannot exec: No such file or directory означає, що пакет xz-utils не встановлено, тому tar не може розпакувати архів .tar.xz. Встановіть пакет і повторіть розпакування. Якщо завантаження завершується надто швидко, найімовірніше, у fx.tar.xz збережено HTML-сторінку з помилкою. tar повідомляє про це як про пошкоджений архів.

Сервер працює, але ніхто не може підключитися. Спочатку перевірте порти в такому порядку: правило ufw для TCP і UDP на порту 30120, потім власний мережевий firewall провайдера, а далі IP-адресу, зареєстровану для licence key. Перевірка curl щодо info.json із зовнішньої системи дає змогу однією командою відрізнити мережеву проблему від проблеми сервера.

Tick time зростає, коли підключаються гравці. Панель продуктивності txAdmin показує tick time сервера. Якщо цей показник зростає разом із кількістю гравців, а загальне використання CPU залишається низьким, один resource перевантажує main thread. Пам’ятайте про розрахунок: на сервері з 4 vCPU одне повністю завантажене ядро відображається приблизно як 25 відсотків загального CPU у top. Це може виглядати як низьке навантаження, але таким не є. Зупиняйте resources по одному та стежте за tick time, щоб визначити, який із них створює навантаження.

Порівняння конфігурації з іншими ігровими серверами

Для ігрового FiveM-сервера потрібні швидке одне ядро та достатній обсяг пам’яті для фактичного списку ресурсів. Кількість слотів визначається цими двома параметрами, і жодна кількість vCPU не компенсує повільне ядро. Вибір VPS для ігрових серверів допомагає оцінити цей компроміс для змішаного парку серверів, а запуск Minecraft-сервера на VPS має ту саму базову структуру: один основний цикл обробки тактів, тому граничну продуктивність також визначає швидкість одного ядра.

FAQ

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

Важливіше мати одне швидке ядро, ніж кілька повільних, оскільки FXServer виконує ігрову логіку в одному головному потоці. Порівняйте опублікований показник single thread для моделі CPU, потім перевірте його безпосередньо на сервері за допомогою sysbench cpu --threads=1 run і переконайтеся, що vmstat показує майже нульовий steal time. Базові дані сервера Cfx.re займають кілька сотень мегабайт пам’яті, тоді як roleplay framework із сорока або п’ятдесятьма ресурсами та локальною базою даних комфортно працює з 8 GB і має нестачу пам’яті при обсязі менше 4 GB. Це типові показники спільноти, тому під час пікового навантаження контролюйте free -m, а не покладайтеся на них.

Чи потрібно гравцям володіти GTA V, щоб підключитися до мого сервера FiveM?

Так. Кожен гравець, який підключається, повинен мати легальну ліцензійну копію GTA V у Steam, Rockstar Games Launcher або Epic Games, а також безкоштовний обліковий запис Cfx.re. Клієнт FiveM перевіряє право власності на гру перед підключенням. Підтримуваного способу обійти цю вимогу немає, а запуск сервера, який намагається її обійти, не дозволений правилами Cfx.re.

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

Порт 30120 потрібно відкрити і для TCP, і для UDP. HTTP endpoints, зокрема info.json, і завантаження ресурсів використовують TCP, а ігровий трафік клієнта використовує UDP. Якщо відкрити лише TCP, виникає заплутана ситуація: сервер відповідає браузеру, але гравці бачать Failed to get info from server. Для txAdmin потрібен TCP-порт 40120, і цей порт має залишатися закритим для інтернету.

Чи безпечно залишати txAdmin доступним через порт 40120?

Ні. txAdmin — це віддалена консоль, яка перезапускає сервер, редагує конфігурацію та виконує команди. Тому відкрито доступна панель є відкритим control plane для всього game server. Пароль за замовчуванням не встановлено, але публічна сторінка входу створює можливість для атак на облікові дані, які ви не зможете виявити. Залиште 40120 закритим у firewall і підключайтеся до панелі через SSH tunnel за допомогою ssh -N -L 40120:127.0.0.1:40120 user@server, а потім відкрийте http://127.0.0.1:40120 у браузері. Не прив’язуйте txAdmin до 127.0.0.1 за допомогою TXHOST_INTERFACE, оскільки цей параметр також змушує game server використовувати loopback, і жоден гравець не зможе підключитися.

Чи потрібно зафіксувати artifact build або завжди використовувати останню рекомендовану версію?

Зафіксуйте нумеровану папку build. Рекомендована мітка регулярно переміщується до нового build, тому скрипт, який отримує рекомендований build, може передавати інший binary під час кожної перебудови. Через це сервер, який працював учора, може зламатися під час повторного розгортання з причин, не пов’язаних із вашими змінами. Запишіть номер build і commit hash, які ви перевірили, оновлюйте сервер навмисно та зберігайте попередню папку на диску, щоб повернутися до неї зміною одного шляху в systemd unit. Водночас не залишайте pin застарілим: політика Cfx.re робить непідтримувані artifacts, старші за three months, недоступними для підключення через server browser, тому оновлюйтеся в межах періоду підтримки.

Чи була ця стаття корисною?

#fivem#game-server#txadmin#single-thread#vps