SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor

Как запустить сервер FiveM на VPS: пошаговая инструкция

Узнайте, как установить FXServer на Ubuntu, закрепить версию артефактов и настроить лицензионный ключ Cfx.re. Откройте порты 30120 TCP/UDP и защитите панель txAdmin.

Что необходимо для сервера FiveM на VPS

Сервер FiveM на VPS — это один непривилегированный пользователь Linux, одна сборка артефактов от Cfx.re, один лицензионный ключ и один открытый порт по протоколам TCP и UDP. Установка занимает около 10 минут. Остальная часть этого руководства охватывает аспекты, от которых зависит играбельность сервера: скорость одного ядра CPU, объем памяти, необходимый для ресурсов, и панель управления, которая никогда не должна быть доступна по публичному адресу.

Три предварительных условия являются обязательными. Бинарные файлы сервера, называемые артефактами, берутся из официального списка сборок Cfx.re. Лицензионный ключ получается на портале Cfx.re по адресу portal.cfx.re (в старых руководствах этот сервис называют keymaster), и ключ привязывается к IP-адресу машины, на которой он используется. Каждому игроку, который подключается к серверу, необходима собственная лицензионная копия GTA V (Grand Theft Auto V) в Steam, Rockstar Games Launcher или Epic Games, а также бесплатная учетная запись Cfx.re. Клиент проверяет наличие игры при запуске, поэтому сервер, созданный на основе чего-либо другого, работать не будет; никакие обходные пути в данном руководстве не рассматриваются.

Хостинг сервера — это задача, отличная от запуска самой игры на этой же машине, что относится к вопросу можно ли запустить саму игру на VPS, и это отдельный вопрос с другим ответом.

Почему скорость одного ядра определяет производительность сервера FiveM

FXServer, исполняемый файл сервера FiveM, выполняет игровую логику в одном основном потоке. Каждый скрипт ресурса, каждый обработчик событий и каждое обновление состояния проходят через этот единственный цикл. Дополнительные ядра помогают ядру ОС, базе данных и сетевому стеку. Они не разделяют игровой цикл. Поэтому сервер с 4 vCPU на медленных ядрах будет «лагать» под нагрузкой, в то время как сервер с 2 vCPU на быстрых ядрах будет работать плавно.

Это противоречит привычному подходу при выборе VPS, где количество ядер является главным показателем. Проверяйте скорость одного ядра перед оплатой. Начните с модели процессора:

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: долю времени, в течение которого ваш виртуальный процессор был готов к работе, но гипервизор заставлял его ждать. Стабильное значение выше 1 или 2 означает, что вы делите физическое ядро с нагруженными соседями, и игровой цикл мгновенно отреагирует на это «откатами» (rubber banding). Steal time от «шумного соседа» описывает, как читать этот столбец и что с этим делать.

Объем памяти масштабируется в зависимости от запускаемых ресурсов, а не только от количества слотов. Базовые данные сервера от Cfx.re занимают несколько сотен мегабайт. Ролевой фреймворк с сорока или пятьюдесятью ресурсами и базой данных 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

Сборка 35245 имела метку Recommended, когда я проверял страницу загрузки сервера Cfx.re 9 октября 2026 года. Откройте эту страницу, выберите Linux и скопируйте имя папки из текущей ссылки fx.tar.xz, которое состоит из номера сборки и хеша коммита, в URL. Старый список каталогов с артефактами, на который до сих пор ссылаются многие руководства, теперь перенаправляет на эту же страницу.

У зафиксированной сборки есть срок годности. Cfx.re поддерживает рекомендуемый артефакт в течение шести недель после выхода следующего, а согласно политике, к неподдерживаемым серверным артефактам старше трех месяцев нельзя будет подключиться через браузер серверов. Устаревшая сборка продолжит работать, но игроки не смогут найти её в списке, поэтому планируйте обновления в календаре, а не фиксируйте версию навсегда.

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

Получение лицензионного ключа и создание server.cfg

Войдите в систему на portal.cfx.re, используя свою учетную запись Cfx.re, и создайте ключ сервера. Портал запросит IP-адрес машины, которая будет использовать этот ключ; ключ привязывается к данному адресу. При переезде на новый VPS нужно изменить IP в настройках ключа на портале, а не создавать второй ключ. Изменения вступают в силу немедленно, но 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 (удаленная консоль) включается только при установке этой переменной и начинает прослушивать тот же 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 с 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 (transmission control protocol) и UDP (user datagram protocol). 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-сессию открытой во время настройки любого межсетевого экрана. В статье Основы ufw для VPS описана политика default deny, при которой приведенных выше правил достаточно.

Большинство провайдеров также используют сетевой экран за пределами гостевой системы, управление которым осуществляется через панель управления, а не через командную оболочку. Правило ufw ничего не говорит об этом уровне. Если TCP отвечает извне, но игроки всё равно не могут подключиться, проанализируйте трафик в момент попытки подключения:

sudo tcpdump -ni any udp port 30120

Если пакеты приходят, значит, внешний межсетевой экран настроен верно, а проблема находится внутри сервера. Отсутствие пакетов означает, что их блокирует оборудование перед сервером, поэтому в таком случае проверьте панель управления провайдера.

Управление сервером через txAdmin без открытия доступа извне

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

У txAdmin нет пароля по умолчанию, поэтому риск заключается не в забытых учетных данных. Риск связан с самой панелью: это удаленная консоль. Она позволяет перезапускать сервер, редактировать server.cfg, развертывать данные сервера и выполнять команды от имени пользователя, под которым запущен сервер. Если оставить порт 40120 доступным из Интернета, страница входа в панель окажется в открытом доступе, а сканеры находят открытые порты панелей управления в течение нескольких часов. Не открывайте порт 40120 в брандмауэре. Получайте доступ к нему через 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, из-за чего ни один игрок не сможет подключиться к серверу. Закрывайте порт панели с помощью брандмауэра, а не этой переменной. Чтобы перенести панель на другой порт, используйте TXHOST_TXA_PORT, которая принимает любые значения, кроме 30120. Устаревшая переменная +set txAdminPort встречается во многих руководствах; документация самого txAdmin помечает её как устаревшую и предупреждает, что она перестанет работать в будущих версиях.

Поддержание работы сервера после выхода из системы

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

Создайте /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, если ваш фреймворк её использует. Персонажи, деньги, транспорт и инвентарь хранятся только там, поэтому резервная копия ресурсов без дампа базы данных восстановит пустой мир.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

Дамп, хранящийся на том же диске, что и сервер, не является резервной копией, так как именно диск может выйти из строя. Переносите данные с сервера по расписанию, для чего предназначено резервное копирование с помощью restic с VPS.

Типичные ошибки и сообщения в логах

Permission denied при запуске загрузчика. Сервер немедленно завершает работу, выводя строку вида:

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

Это происходит, если архив был распакован с помощью sudo, из-за чего все файлы в alpine/ принадлежат пользователю root, и пользователь fivem не может запустить загрузчик. Исправьте владельца файлов командой 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. Установите пакет и повторите распаковку. Если загрузка завершается подозрительно быстро, скорее всего, вместо архива была сохранена HTML-страница с ошибкой в файл fx.tar.xz, и tar сообщает об этом как о поврежденном архиве.

Сервер запущен, но никто не может подключиться. Сначала проверьте порты в следующем порядке: правило ufw для TCP и UDP на порту 30120, затем сетевой брандмауэр провайдера, а после — IP-адрес, привязанный к лицензионному ключу. Команда curl по адресу info.json, выполненная с внешней машины, позволяет одной командой определить, связана ли проблема с сетью или с самим сервером.

Время тика (tick time) растет при подключении игроков. Панель производительности txAdmin отображает время тика сервера. Если этот показатель растет вместе с количеством игроков, а общая загрузка CPU остается низкой, значит, какой-то ресурс перегружает основной поток. Помните: на системе с 4 vCPU полная загрузка одного ядра отображается в top как примерно 25 процентов от общего CPU, что выглядит как простой, но таковым не является. Останавливайте ресурсы по одному и следите за временем тика, чтобы найти тот, который потребляет больше всего ресурсов.

Оценка ресурсов в сравнении с другими игровыми серверами

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

FAQ

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

Одно быстрое ядро важнее нескольких медленных, так как FXServer выполняет игровую логику в одном основном потоке. Сравните опубликованный показатель производительности одного потока для вашей модели CPU, затем подтвердите данные на сервере с помощью sysbench cpu --threads=1 run и убедитесь, что vmstat показывает значение steal time, близкое к нулю. Что касается памяти, базовые данные сервера Cfx.re занимают несколько сотен мегабайт, в то время как ролевой фреймворк с сорока-пятьюдесятью ресурсами и локальной базой данных комфортно работает на 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-эндпоинты, такие как info.json, и загрузка ресурсов используют TCP, а игровой трафик клиента использует UDP. Открытие только TCP приводит к запутанной ситуации, когда сервер отвечает в браузере, но игроки видят Failed to get info from server. txAdmin требует TCP 40120, и этот порт должен оставаться закрытым для доступа из Интернета.

Безопасно ли оставлять txAdmin доступным на порту 40120?

Нет. txAdmin — это удаленная консоль, которая перезапускает сервер, редактирует конфигурацию и выполняет команды, поэтому открытая панель — это открытая панель управления всем игровым сервером. Пароль по умолчанию отсутствует, но публичная страница входа провоцирует атаки на учетные данные, которые вы не сможете отследить. Оставьте порт 40120 закрытым в брандмауэре и подключайтесь к панели через SSH-туннель с помощью ssh -N -L 40120:127.0.0.1:40120 user@server, затем перейдите по адресу http://127.0.0.1:40120. Не привязывайте txAdmin к 127.0.0.1 с помощью TXHOST_INTERFACE, так как эта настройка также принудительно переводит игровой сервер на loopback, и ни один игрок не сможет подключиться.

Стоит ли фиксировать версию сборки (artifact) или всегда использовать последнюю рекомендованную?

Фиксируйте пронумерованную папку сборки. Метка «рекомендованная» регулярно перемещается на новую сборку, поэтому скрипт, который загружает рекомендованную версию, может выдавать вам другой бинарный файл при каждой пересборке. В результате сервер, который работал вчера, может сломаться при повторном развертывании по причинам, не связанным с вашими изменениями. Записывайте номер сборки и хеш коммита, которые вы протестировали, обновляйтесь осознанно и сохраняйте предыдущую папку на диске, чтобы иметь возможность вернуться к ней, изменив один путь в вашем юните systemd. Однако не позволяйте зафиксированной версии устаревать: согласно политике Cfx.re, неподдерживаемые артефакты старше трех месяцев становятся недоступными для подключения через браузер серверов, поэтому обновляйтесь в пределах окна поддержки.

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