Поднимаем ваш первый сервер FiveM

От нуля до сервера, куда смогут зайти ваши друзья: artifacts, licence key, server.cfg, порт, на котором спотыкаются все, и как закрыть сервер до того, как кого-то приглашать.

5 минут чтения

Это самый короткий путь от нуля до сервера, куда смогут зайти ваши друзья, с объяснением каждого шага, а не со списком команд для копипаста.

Заложите примерно сорок минут. Большая часть уйдёт на скачивание.

Всё здесь относится к FiveM Legacy. FiveM for GTAV Enhanced отличается в нескольких местах, и они отмечены по ходу.

Что нужно заранее

ЧтоЗачем
Копия GTA VТолько чтобы играть. Самому серверу она не нужна.
Аккаунт Cfx.reЧтобы создать licence key, бесплатно.
Windows или Linux2 ядра и 4 ГБ ОЗУ хватит для старта.
Открытый порт30120 по умолчанию, TCP и UDP.

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

1. Получите файлы сервера

Сервер называется FXServer. Скачайте последнюю рекомендованную сборку со страницы artifacts Cfx.re и положите её в отдельную папку, например C:\FXServer\server.

Держите файлы сервера и свои данные в разных папках:

C:\FXServer\    server\          artifacts, заменяются при каждом обновлении    server-data\     ваши resource и ваш server.cfg

Причина — обновления. Когда выходит новый artifact, вы удаляете server и распаковываете новый. Если ваша папка resources лежит внутри, вы только что удалили свой сервер.

2. Получите licence key

Зайдите на portal.cfx.re, авторизуйтесь и создайте ключ. Он спросит IP-адрес: укажите машину, на которой будет крутиться сервер, и выберите правильный тип, потому что ключ, созданный под неверный IP, просто откажется запускаться.

Ключ — это секрет. Любой, у кого он есть, может поднять сервер от вашего имени и добиться отзыва ключа. Его место в server.cfg, а server.cfg никогда не попадает в публичный git-репозиторий.

3. Напишите server.cfg

Это файл, на котором держится всё остальное. Вместо того чтобы копировать чужой и гадать, что делает половина строк, соберите свой в генераторе server.cfg: он пишет разделы в правильном порядке, использует имена convar, сверенные со справочником команд Cfx.re, и объясняет каждую опцию по мере того, как вы её выставляете.

Что важно на первом сервере:

# По строке на протокол, обе на один и тот же порт.endpoint_add_tcp "0.0.0.0:30120"endpoint_add_udp "0.0.0.0:30120"# С 32 слотов нужен onesync on или legacy; выше 64 — обязательно on.set onesync onsv_hostname "Мой первый сервер"sv_maxClients 48# Возьмите это на portal.cfx.resv_licenseKey changeme

Порядок загрузки — не украшение

Resource стартуют в том порядке, в котором они перечислены. Resource, которая зависит от другой, должна идти после неё:

ensure oxmysqlensure ox_libensure es_extendedensure my_own_script

Почти каждое «attempted to index a nil value» на свежем сервере — это проблема порядка загрузки, а не сломанный скрипт.

4. Откройте порт как следует

FiveM нужны TCP и UDP на одном и том же порту. Если открыть только TCP, вы получите самый запутанный симптом во всём этом хобби: сервер появляется в вашем собственном списке, принимает подключение, а потом висит на «Connecting».

Заблокировать его могут три разных места, и обычно нужно пройти все три:

  1. Брандмауэр Windows или ufw на Linux: разрешите входящие 30120 TCP и UDP.
  2. Ваш роутер, если машина стоит дома: пробросьте 30120 TCP и UDP на локальный IP машины.
  3. Фаервол хостинга, если вы арендуете VPS. Это веб-панель, а не сама машина, и именно про него все забывают.

Чтобы понять, действительно ли дело в порте, попросите кого-нибудь подключиться, пока вы смотрите в консоль сервера. Если там вообще ничего не появляется, трафик до вас не доходит, и проблема в сети, а не в конфиге.

5. Запустите его

Из папки server-data:

C:\FXServer\server\FXServer.exe +exec server.cfg

На Linux:

bash /home/fivem/server/run.sh +exec server.cfg

В Enhanced исполняемый файл называется cfx-server.exe.

Здоровый первый запуск печатает строку о том, что сервер слушает порт, а затем список resource. Две ошибки встречаются достаточно часто, чтобы их назвать:

  • «Could not find licence key» означает, что sv_licenseKey отсутствует, неверный или привязан к другому IP.
  • «onesync is not enabled» при более чем 32 слотах означает, что не хватает set onesync on.

6. Добавить фреймворк или нет

Он вам не обязателен. Фреймворк даёт job, деньги, инвентарь и систему персонажей; без него у вас free roam, и это совершенно нормальная точка старта.

Если фреймворк всё же нужен, выберите одну экосистему и оставайтесь в ней:

ФреймворкКакой он
QboxАктивно поддерживается, современный Lua, построен на ox_lib и ox_inventory.
QBCoreОгромный каталог скриптов, более старая кодовая база.
ESX LegacyСамый старый, до сих пор широко используется, большинство сторонних скриптов нацелены на него.

Смешивать их — самый верный способ получить сервер, который никто не сможет отладить. Что бы вы ни выбрали, генератор job и генератор item пишут корректный формат для всех трёх.

7. Закройте сервер до того, как кого-то приглашать

Конфигурация по умолчанию не является безопасной.

# Блокирует изменённые файлы игры. 2 блокирует ещё и неизвестные.sv_pureLevel 1# Управляет тем, что клиентам разрешено создавать.sv_entityLockdown relaxed# Трейнеры и меню. Оставьте выключенным.sv_scriptHookAllowed false

Затем нормально настройте права админов через генератор прав ACE, а не выдавайте group.admin руками. И прежде чем ставить хоть одну скачанную resource, прочитайте как распознать скрипт с бэкдором. На публичном сервере это вопрос «когда», а не «если».

Не задавайте rcon_password, если вы реально не пользуетесь RCON. Незаданный пароль — на одну утечку меньше.

Куда двигаться дальше

Инструменты, которые используются в этом гайде