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

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

- Платформа: FiveM
- Каноническая страница: https://devtoolsgg.com/ru/guides/fivem/first-server

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

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

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

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

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

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

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

Сервер называется **FXServer**. Скачайте последнюю рекомендованную сборку со
[страницы artifacts Cfx.re](https://runtime.fivem.net/artifacts/fivem/) и
положите её в отдельную папку, например `C:\FXServer\server`.

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

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

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

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

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

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

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

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

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

```cfg
# По строке на протокол, обе на один и тот же порт.
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# С 32 слотов нужен onesync on или legacy; выше 64 — обязательно on.
set onesync on

sv_hostname "Мой первый сервер"
sv_maxClients 48

# Возьмите это на portal.cfx.re
sv_licenseKey changeme
```

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

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

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure 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. Это веб-панель, а не сама
   машина, и именно про него все забывают.

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

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

Из папки `server-data`:

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

На Linux:

```bash
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](/ru/fivem/job) и
[генератор item](/ru/fivem/item) пишут корректный формат для всех трёх.

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

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

```cfg
# Блокирует изменённые файлы игры. 2 блокирует ещё и неизвестные.
sv_pureLevel 1

# Управляет тем, что клиентам разрешено создавать.
sv_entityLockdown relaxed

# Трейнеры и меню. Оставьте выключенным.
sv_scriptHookAllowed false
```

Затем нормально настройте права админов через
[генератор прав ACE](/ru/fivem/permissions), а не выдавайте `group.admin`
руками. И прежде чем ставить хоть одну скачанную resource, прочитайте
[как распознать скрипт с бэкдором](/ru/guides/fivem/spot-a-backdoor). На
публичном сервере это вопрос «когда», а не «если».

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

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

- [Генератор fxmanifest.lua](/ru/fivem/fxmanifest), когда будете писать свою
  первую resource
- [Генератор resource](/ru/fivem/resource) — рабочий каркас с уже готовыми
  серверными проверками
- [Спрайты blip](/ru/fivem/list/blips) и
  [модели транспорта](/ru/fivem/list/vehicles) — два списка, ради которых вы
  будете держать открытую вкладку


## Как цитировать

Поднимаем ваш первый сервер FiveM, devtoolsgg.com. https://devtoolsgg.com/ru/guides/fivem/first-server
