# Monter votre premier serveur FiveM

De rien à un serveur où vos amis peuvent se connecter : artifacts, clé de licence, server.cfg, le port qui piège tout le monde, et le verrouillage avant d'inviter qui que ce soit.

- Plateforme: FiveM
- Page canonique: https://devtoolsgg.com/fr/guides/fivem/first-server

Voici le chemin le plus court entre rien et un serveur où vos amis peuvent se
connecter, avec le raisonnement derrière chaque étape plutôt qu'une liste de
commandes à coller.

Comptez une quarantaine de minutes, dont l'essentiel en téléchargement.

> [!NOTE]
> Tout ce qui suit vaut pour **FiveM Legacy**. FiveM for GTAV Enhanced diffère
> sur quelques points, signalés au fil du texte.

## Ce qu'il faut d'abord

| Élément | Pourquoi |
|---|---|
| Une copie de GTA V | Uniquement pour jouer. Le serveur lui-même n'en a pas besoin. |
| Un compte Cfx.re | Pour créer la clé de licence, gratuit. |
| Windows ou Linux | 2 cœurs et 4 Go de RAM suffisent pour démarrer. |
| Un port ouvert | 30120 par défaut, en TCP **et** en UDP. |

C'est cette dernière ligne qui fait échouer la plupart des premières tentatives,
d'où la section qui lui est consacrée plus bas.

## 1. Récupérer les fichiers du serveur

Le serveur s'appelle **FXServer**. Téléchargez la dernière version recommandée
depuis la [page des artifacts Cfx.re](https://runtime.fivem.net/artifacts/fivem/)
et placez-la dans son propre dossier, par exemple `C:\FXServer\server`.

Gardez les fichiers du serveur et vos données dans des **dossiers séparés** :

```text
C:\FXServer\
    server\          les artifacts, remplacés à chaque mise à jour
    server-data\     vos ressources et votre server.cfg
```

La raison est la mise à jour. Quand un nouvel artifact sort, vous supprimez
`server` et décompressez le nouveau. Si votre dossier `resources` vit à
l'intérieur, vous venez de supprimer votre serveur.

## 2. Obtenir votre clé de licence

Rendez-vous sur [portal.cfx.re](https://portal.cfx.re), connectez-vous et créez
une clé. Elle demande une adresse IP : indiquez la machine qui fera tourner le
serveur, et choisissez le bon type, car une clé créée pour la mauvaise IP refuse
simplement de démarrer.

> [!CAUTION]
> La clé est un secret. Quiconque la détient peut faire tourner un serveur en
> votre nom et la faire révoquer. Sa place est dans `server.cfg`, et `server.cfg`
> ne va jamais dans un dépôt git public.

## 3. Écrire server.cfg

C'est le fichier auquel tout le reste s'accroche. Plutôt que de copier celui
d'un autre en vous demandant à quoi sert la moitié, construisez-le avec le
[générateur de server.cfg](/fr/fivem/server-cfg) : il écrit les sections dans le
bon ordre, utilise des noms de convars vérifiés dans la référence des commandes
Cfx.re, et explique chaque option au moment où vous la réglez.

Les parties qui comptent sur un premier serveur :

```cfg
# Une ligne par protocole, les deux sur le même port.
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# 32 slots et plus exigent onesync on ou legacy ; au-delà de 64, on.
set onesync on

sv_hostname "Mon premier serveur"
sv_maxClients 48

# À récupérer sur portal.cfx.re
sv_licenseKey changeme
```

### L'ordre de chargement n'est pas décoratif

Les ressources démarrent dans l'ordre où elles sont listées. Une ressource qui
dépend d'une autre doit venir **après** elle :

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure mon_script
```

Presque tous les « attempted to index a nil value » sur un serveur neuf sont un
problème d'ordre de chargement, pas un script cassé.

## 4. Ouvrir le port, correctement

FiveM a besoin du **TCP et de l'UDP sur le même port**. N'ouvrir que le TCP
produit le symptôme le plus déroutant du domaine : le serveur apparaît dans
votre propre liste, accepte votre connexion, puis reste bloqué sur
« Connecting ».

Trois endroits distincts peuvent bloquer, et les trois demandent en général
d'être traités :

1. **Le pare-feu Windows** ou `ufw` sous Linux : autorisez 30120 en TCP et UDP
   en entrée.
2. **Votre box**, si la machine est chez vous : redirigez 30120 TCP et UDP vers
   l'IP locale de la machine.
3. **Le pare-feu de votre hébergeur**, si vous louez un VPS. Celui-là est un
   panneau web, pas la machine, et c'est celui qu'on oublie.

> [!TIP]
> Pour vérifier que c'est bien le port, demandez à quelqu'un de se connecter
> pendant que vous regardez la console du serveur. Si rien n'y apparaît du tout,
> le trafic ne vous parvient pas et le problème est réseau, pas config.

## 5. Le démarrer

Depuis le dossier `server-data` :

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

Sous Linux :

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

Sur **Enhanced**, l'exécutable s'appelle `cfx-server.exe`.

Un premier démarrage sain affiche une ligne indiquant que le serveur écoute,
puis la liste des ressources. Deux erreurs sont assez fréquentes pour être
nommées :

- *« Could not find licence key »* signifie que `sv_licenseKey` est absente,
  erronée, ou liée à une autre IP.
- *« onesync is not enabled »* avec plus de 32 slots signifie qu'il manque
  `set onesync on`.

## 6. Ajouter un framework, ou pas

Vous n'en avez pas besoin. Un framework apporte les jobs, l'argent,
l'inventaire et un système de personnage ; sans lui vous avez du free roam, ce
qui est un très bon point de départ.

Si vous en voulez un, choisissez un seul écosystème et restez dedans :

| Framework | Caractère |
|---|---|
| **Qbox** | Activement maintenu, Lua moderne, bâti sur ox_lib et ox_inventory. |
| **QBCore** | Très large catalogue de scripts, base de code plus ancienne. |
| **ESX Legacy** | Le plus ancien, encore très répandu, la plupart des scripts tiers le visent. |

Les mélanger est la façon la plus courante de finir avec un serveur que personne
ne peut déboguer. Quel que soit votre choix, le
[générateur de jobs](/fr/fivem/job) et le
[générateur d'items](/fr/fivem/item) écrivent le format correct pour les trois.

## 7. Le verrouiller avant d'inviter qui que ce soit

Une configuration par défaut n'est pas une configuration sûre.

```cfg
# Bloque les fichiers de jeu modifiés. 2 bloque aussi les fichiers inconnus.
sv_pureLevel 1

# Contrôle ce que les clients ont le droit de créer.
sv_entityLockdown relaxed

# Trainers et menus. Laissez ça désactivé.
sv_scriptHookAllowed false
```

Réglez ensuite les permissions d'administration proprement avec le
[générateur de permissions ACE](/fr/fivem/permissions) plutôt que d'accorder
`group.admin` à la main. Et avant d'installer la moindre ressource téléchargée,
lisez [comment repérer un script backdooré](/fr/guides/fivem/spot-a-backdoor).
Sur un serveur public, c'est une question de quand, pas de si.

> [!IMPORTANT]
> Ne définissez pas `rcon_password` si vous n'utilisez pas réellement RCON. Un
> mot de passe non défini est une chose de moins qui peut fuiter.

## Pour la suite

- [Le générateur de fxmanifest.lua](/fr/fivem/fxmanifest) quand vous écrirez
  votre première ressource
- [Le scaffolder de ressource](/fr/fivem/resource) pour un squelette qui
  fonctionne, avec les vérifications côté serveur déjà en place
- [Les sprites de blips](/fr/fivem/list/blips) et
  [les modèles de véhicules](/fr/fivem/list/vehicles), les deux listes pour
  lesquelles vous garderez un onglet ouvert


## Comment citer

Monter votre premier serveur FiveM, devtoolsgg.com. https://devtoolsgg.com/fr/guides/fivem/first-server
