Для сервера FiveM нужен ключ лицензии из keymaster от Cfx.re, и выдаётся он вам, а не вашему хостеру. В нём записан адрес, на котором работает сервер, поэтому при переезде ключ нужно править, а не переносить вместе с файлами. Всё остальное - ресурсы, фреймворк, слоты, модель синхронизации - это server.cfg и txAdmin, и почти каждая жалоба на производительность FiveM, которую вы прочтёте, оказывается жалобой на ресурс, а не на машину.
В этом руководстве весь путь: ключ, установка FXServer, первый запуск txAdmin, строки конфига, которые важны, и те, что тихо всё ломают, порты, права и то, как найти скрипт, который съедает ваше время кадра.
Что такое FXServer и что ему нужно#
FXServer - это серверный бинарник Cfx.re. Игры внутри него нет: он хостит ресурсы, то есть папки с Lua, JavaScript или C# и файлом fxmanifest.lua с описанием, и сообщает подключённым клиентам GTA V, какие из них скачать и запустить. Голый FXServer - это пустая карта, на которой ничего нет. Когда говорят «сервер FiveM», имеют в виду FXServer плюс фреймворк - ESX, QBCore, Qbox - плюс сотню-другую ресурсов сверху.
Отсюда сразу два вывода. Первый: производительность вашего сервера - это в основном чужой код, и плохо написанный скрипт, который вы поставили, потому что на форуме он выглядел красиво, - самая вероятная причина серверных подтормаживаний. Второй: обновление - это не одно действие. Есть сборка FXServer, версия фреймворка, каждый ресурс и сборка GTA V, к которой сервер привязывает клиентов, и всё это движется независимо.
Что нужно до начала:
- Ключ лицензии с
keymaster.fivem.net. Бесплатный и привязанный к вашему аккаунту Cfx.re. - Машина или тариф. 2-4 GB для небольшого сервера, 6-12 GB для населённого ролевого. Главный поток тянет одно быстрое ядро.
- Один порт, открытый и как TCP, и как UDP. По умолчанию
30120. - База данных, если вы вообще запускаете какой-либо фреймворк. ESX и QBCore обе её требуют.
- Диск под стримящиеся ассеты. Пользовательские машины и интерьеры - основной объём большого сервера, и каждый байт скачивает каждый новый игрок.
Ключ лицензии Cfx.re#
Войдите на keymaster.fivem.net, создайте ключ сервера и укажите IP-адрес, на котором сервер будет работать, и метку, которую вы потом узнаете. Вы получите длинный ключ, который попадает в server.cfg как sv_licenseKey.
Правила вокруг него короткие, и все они про владение:
- Один ключ на один сервер. Два сервера на одном ключе - это ошибка лицензирования на втором, а не хитрая экономия.
- Ключ помнит свой адрес. Если сервер переезжает на другой IP, поправьте ключ в keymaster или выпустите новый. Ключ, адрес которого больше не совпадает, приводит к ошибке при запуске, а не тихо портит работу. Остальное в этой задаче разобрано в статье как переехать, не потеряв игроков.
- Ключ ваш, и его могут отозвать. Cfx.re отзывает ключи у серверов, нарушающих условия, - обычная причина в продаже доступа к игровому контенту, - и отзыв привязан к аккаунту, а не к машине.
- Это учётные данные. Место ему в
server.cfgи больше нигде. Не на скриншоте консоли, не в сообщении в Discord и не в публичном репозитории Git вместе с остальной папкой server-data.
Установка FXServer и первый запуск txAdmin#
Сборки FXServer берутся с сервера артефактов Cfx.re по адресу runtime.fivem.net/artifacts/fivem/. Есть путь для Linux и путь для Windows, и в каждом перечислены сборки с пометками recommended и latest. Берите recommended, если только нужный вам фреймворк явно не просит более новую: latest существует, чтобы люди проверяли поломки, и они их находят.
Общепринятая раскладка держит бинарник и ваш контент раздельно, чтобы обновление одного не задевало другое:
/home/fivem/ server/ the extracted artifacts - replaced wholesale on update server-data/ your resources, your server.cfg - the thing you back up resources/ server.cfg$ cd /home/fivem/server-data$ bash /home/fivem/server/run.sh +exec server.cfgЗапустите без аргументов вообще, и вместо этого вы получите txAdmin - рекомендуемый способ настроить сервер с нуля. txAdmin поставляется внутри артефактов, ничего устанавливать не нужно; он поднимает веб-интерфейс на порту 40120 и печатает в консоль одноразовый PIN. Откройте http://your-address:40120, введите PIN и создайте аккаунт администратора.
Дальше деплойер соберёт сервер по рецепту: простой cfx-default либо полную установку ESX или QBCore с загруженными ресурсами и импортированной схемой базы данных. Для первого сервера это действительно самый быстрый правильный путь, потому что рецепт связывает те части, которые скучно соединять вручную. В статье как выбрать фреймворк FiveM разобрано, какой рецепт вам на самом деле нужен, и это решение стоит десяти минут до запуска.
server.cfg строка за строкой#
# Listen on one port as both TCP and UDPendpoint_add_tcp "0.0.0.0:30120"endpoint_add_udp "0.0.0.0:30120"# Resources - order matters, dependencies firstensure mapmanagerensure chatensure spawnmanagerensure sessionmanagerensure hardcap# What the server list showssv_hostname "Longship RP | Serious roleplay | EU"sets tags "roleplay, esx, eu"sets locale "en-GB"set sv_projectName "Longship RP"# Slots and syncsv_maxclients 48set onesync onset onesync_population true# Pin the DLC level clients must be onsv_enforceGameBuild 2699# Securitysv_scriptHookAllowed 0set sv_entityLockdown "strict"set sv_endpointPrivacy trueexec secrets.cfgСтроки, в которых ошибаются, в том порядке, в каком ошибаются:
`ensure` и `start`. ensure запускает ресурс или перезапускает его, если он уже работает. start только запускает. Используйте ensure везде; разница проявляется, когда вы перезагружаете конфиг, а половина ресурсов не возвращается.
`set`, `sets` и `setr`. Три разные области действия конвара. set - только для сервера. sets записывает его в информационный блок сервера, и он появляется в списке серверов. setr реплицирует его клиентам, чтобы скрипты могли читать его там. Если фреймворк просит setr, он имеет это в виду; замена на set даёт ресурс, который без видимой причины ведёт себя на клиенте иначе.
`sv_maxclients` и OneSync. Без OneSync жёсткий потолок - 32. С set onesync on вы попадаете в реализацию Infinity, и потолок становится очень большим числом, что не означает, что ваш сервер способен им воспользоваться. Реальный предел ролевого сервера - скрипты, а не флаг.
`sv_enforceGameBuild`. Закрепляет уровень DLC, на котором должны быть клиенты. Ошибётесь - игрокам скажут сменить сборку игры, прежде чем зайти, и они решат, что сервер сломан. Номера сборок меняются с каждым обновлением GTA Online, поэтому берите актуальный из документации Cfx.re, а не из двухлетнего туториала.
`sv_entityLockdown`. Значения - inactive, relaxed и strict. На сервере с OneSync strict не даёт клиентам создавать сущности, которые сервер не разрешил, и это самая эффективная античит-строка в файле. Она же ломает плохо написанные ресурсы, спавнящие объекты на клиенте, что вполне разумный фильтр для вашего списка ресурсов.
RCON. rcon_password в FiveM - устаревшая незашифрованная удалённая консоль, и при наличии txAdmin включать её незачем. Оставьте его незаданным. Общие доводы приведены в статье безопасное использование RCON, она касается любой игры.
Права - отдельная система, не связанная со списком администраторов txAdmin, и путаница между ними - обряд посвящения:
add_ace group.admin command allowadd_ace group.admin command.quit denyadd_principal identifier.license:1a2b3c4d5e group.adminadd_principal identifier.discord:123456789012345678 group.modAce - это право, principal - это человек или группа, а add_principal соединяет их. Собственные администраторы txAdmin хранятся в txAdmin и управляют веб-панелью; ace управляют игровыми командами и правами ресурсов. Тот, кто администратор txAdmin, в игре автоматически никто. В статье каждая строка server.cfg остальная часть файла разобрана по частям, включая конвары, которые фреймворки ждут от вас.
Порты, endpoint и подключение#
| Порт | Протокол | Назначение |
|---|---|---|
30120 | UDP | Игровой трафик |
30120 | TCP | HTTP endpoint: регистрация в списке, загрузка ассетов, /info.json |
40120 | TCP | Веб-интерфейс txAdmin |
Один и тот же номер несёт два разных протокола, и ломаются они по-разному, поэтому это самое полезное знание, когда сервер FiveM ведёт себя странно. UDP открыт, а TCP закрыт - сервер не появляется в списке, и никто не может закончить подключение, потому что первое рукопожатие и загрузка ассетов идут по HTTP. TCP открыт, а UDP закрыт - игроки подключаются, скачивают всё и застревают на чёрном экране.
Игроки заходят через connect your-address:30120 в консоли F8, через список серверов или по ссылке cfx.re/join. Вместо IP можно указать имя - запись A разобрана в статье как привязать домен к игровому серверу, - хотя ключ лицензии всё равно смотрит на адрес под ним. В статье порты игровых серверов простыми словами рассказано, как правильно проверить порт снаружи, а это стоит сделать до того, как винить конфиг.
txAdmin в повседневной работе#
Деплойер первого запуска - то, с чем сталкиваются все, но ежедневная польза лежит в другом.
- Плановые перезапуски с внутриигровыми предупреждениями через заданные вами интервалы. Экземпляры FXServer деградируют при долгой работе, как и фреймворки на них; перезапуск каждые шесть или двенадцать часов - обычная практика. Выбор часа разобран в статье расписания перезапусков, которые помогают.
- Обработка падений и зависаний. txAdmin следит за главным потоком сервера и перезапускает его, если тот перестаёт отвечать, - это разница между двухминутной остановкой в три часа ночи и шестичасовой.
- Менеджер игроков. Каждое подключение записывается по его идентификаторам - лицензия, Steam, Discord, IP, - так что бан следует за человеком, а не за ником. Предупреждения, причины банов и шаблоны банов живут здесь, и именно историю вы читаете, когда кто-то подаёт апелляцию.
- Белый список по одобрению администратора, по роли Discord или по членству в сервере. Для серьёзного ролевого сервера это функция, благодаря которой работает остальная модерация.
- Живая консоль - тот же вывод, что и в терминале, плюс командная строка. В статье как читать консоль рассказано, какие строки в этой стене текста важны.
- График производительности - тема следующего раздела и причина держать txAdmin запущенным, ещё не подозревая, что он понадобится.
Большинство лагов - это ресурс, а не машина#
Ролевой сервер, который подтормаживает на сорока игроках, почти никогда не нуждается в тарифе побольше. Ему нужно, чтобы кто-нибудь прочитал монитор ресурсов.
FXServer выполняет ваши серверные скрипты в одном главном потоке. Работа каждого ресурса за тик идёт в этом потоке последовательно, поэтому один скрипт, делающий что-то дорогое, задерживает всё остальное, в том числе синхронизацию, которую игроки воспринимают как рывки. Добавление памяти тут ничего не даёт. Добавление ядер даёт очень мало, потому что важный поток разделить нельзя.
График производительности txAdmin раскладывает по корзинам, сколько главный поток сервера тратил на каждый тик. У здорового сервера почти все тики попадают в самую быструю корзину. У сервера с одним плохим ресурсом вырастает хвост: небольшая, но стабильная доля тиков, которые длятся намного дольше, чем должны, - именно это игроки ощущают как периодические подтормаживания, а не постоянный лаг.
Чтобы найти ресурс:
- На клиенте нажмите F8 и выполните
resmon 1. Он покажет каждый ресурс с временем CPU на кадр и памятью на этом клиенте. Это только клиентская стоимость, но клиентская стоимость - половина проблемы и та половина, которую проще исправить. - На сервере воспользуйтесь профайлером:
profiler record 500, чтобы записать пятьсот тиков, затемprofiler saveилиprofiler view, чтобы посмотреть, куда ушло время. - Деление пополам. Остановите половину необязательных ресурсов, посмотрите на график, верните их. Грубо, быстро и работает всегда.
Причины повторяются:
- Поток с
Citizen.Wait(0)- на каждом кадре - делает работу, которую нужно делать раз в секунду. Это самая частая ошибка производительности во всей экосистеме FiveM. - Проверки расстояния в цикле по всем игрокам на каждом кадре вместо цикла по ближайшим по таймеру.
- Запросы к базе данных внутри цикла. Установите
mysql_slow_query_warningпримерно в 150 и читайте, что печатает oxmysql. - События, которые срабатывают намного чаще, чем происходит то, что они обозначают.
Стриминг ассетов - отдельная проблема, которая выглядит похоже. Пользовательские машины и интерьеры - это диск и трафик, а не CPU: медленное первое подключение - это игроки, скачивающие сотни мегабайт с вашего TCP endpoint, и никакой CPU это не изменит. Сократите папки stream или смиритесь с ожиданием и скажите об этом людям.
Подбор ресурсов: память, ядра, база данных и диск#
| Сервер | RAM | vCPU | Примечания |
|---|---|---|---|
| Freeroam или дрифт, до 32 слотов | 2-3 GB | 1-1.5 | Мало ресурсов, мало состояния |
| Ролевой ESX или QBCore, 48-64 | 4-6 GB | 2 | Типичный случай |
| Большой ролевой, 64-128 слотов | 8-12 GB | 2.5-3.5 | Сотни ресурсов |
Память зависит от числа ресурсов и состояния, которое они держат, а не от числа игроков, так что наполовину пустой сервер с двумя сотнями скриптов расходует больше, чем полный с сорока. CPU - это про главный поток, то есть частота важнее числа ядер; дополнительные ядра помогают раздавать ассеты и загружать ресурсы, но не сокращают время тика.
Каждому фреймворку нужна база данных, и в RE:NODE каждый тариф FiveM включает слот базы данных, создаваемый из панели с сгенерированными хостом, пользователем и паролем, а также кнопку «Open in phpMyAdmin», которая входит по одноразовому токену. Строка подключения попадает в конфиг так же, как и везде:
set mysql_connection_string "mysql://user:password@host:3306/database?charset=utf8mb4"В статье база данных и oxmysql разобраны импорт схемы, медленные запросы и резервное копирование - а оно важнее на ролевом сервере, чем где бы то ни было в этом каталоге, потому что база - это персонажи, и потерять её значит потерять сервер.
Тарифы FiveM в RE:NODE идут от 2 GB до 12 GB, от $9 в месяц, с двумя выделенными портами, доступным txAdmin и вашим собственным ключом Cfx.re, вводимым на вкладке Setup. Слоты backup входят в каждый тариф, а вкладка Schedules может запускать ночной.
Диагностика#
«Couldn't load resource X». Ошибка манифеста или отсутствующая зависимость. Строка прямо над ним в консоли называет настоящую проблему; имя ресурса - лишь то место, где она всплыла.
Сервера нет в списке. Сначала ключ лицензии, затем доступность TCP 30120 снаружи. Проверьте, загрузив http://your-address:30120/info.json из другой сети: если это не выходит, ничего другого тоже не заработает.
Игрокам предлагают сменить сборку игры. sv_enforceGameBuild не совпадает с тем, на чём их клиент. Задайте актуальную сборку или уберите параметр, если вы не используете контент DLC.
Зависание на «awaiting scripts» или чёрном экране загрузки. Ресурс падает при запуске, либо в списке ensure нет spawnmanager и sessionmanager. Читайте консоль с начала, а не с конца.
txAdmin постоянно сообщает о зависании и перезапускает сервер. Что-то блокирует главный поток на секунды. Профилируйте, прежде чем увеличивать тайм-аут: увеличение тайм-аута прячет симптом и оставляет причину.
Игроки подключаются, но не видят друг друга. OneSync выключен на сервере с более чем 32 слотами, либо sv_entityLockdown стоит в strict, а ресурсы спавнят сущности на клиенте.
Первое подключение занимает пять минут. Стримящиеся ассеты. Проверьте общий размер папок stream; на большинстве серверов лежат машины, на которых никто не ездит.
FAQ#
Нужен ли мне собственный ключ лицензии FiveM?
Да. Ключи выдаются на сервер аккаунту Cfx.re и не могут передаваться или предоставляться хостером. Создание бесплатно и занимает около минуты на keymaster.fivem.net.
Что будет с ключом, если я переезжаю?
Ключ хранит адрес, для которого он создан, так что обновите его в keymaster или создайте новый. Ключ, не совпадающий с адресом, с которого он используется, останавливает сервер при запуске с ошибкой лицензирования.
Нужно ли устанавливать txAdmin?
Нет. Он уже несколько лет поставляется внутри артефактов FXServer. Запустите сервер без конфига, и txAdmin поднимется на порту 40120 с одноразовым PIN в консоли.
Сколько игроков вмещает сервер FiveM?
Тридцать два без OneSync. С включённым OneSync потолок движка намного выше, но практический предел - ваши ресурсы: большинство серьёзных ролевых серверов держит от 48 до 128, и ограничение - это время скриптов в главном потоке, а не слоты.
Поможет ли больше RAM от подтормаживаний?
Почти никогда. Подтормаживания FiveM - это время главного потока, а это проблема ресурсов. Прочитайте график производительности txAdmin и вывод resmon на клиенте, прежде чем менять тариф.
Можно ли запустить ESX или QBCore без базы данных?
Нет. Обе хранят персонажей, инвентари и деньги в базе данных, и фреймворк не запустится без рабочей строки подключения.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.