Prérequis
- Un serveur sous Ubuntu, Debian, AlmaLinux, Rocky, CentOS, Fedora ou openSUSE : voir nos VPS au Canada
- Une connexion SSH ouverte en root : Se connecter en SSH à votre VPS
- 5 Go de disque libre et 4 Go de RAM
- Une clé de licence de serveur FiveM, gratuite, créée avec votre compte Cfx.re : créer la clé sur Cfx.re Portal
- Grand Theft Auto V sur les postes des joueurs, avec FiveM installé
FiveM fait tourner des serveurs GTA V modifiés, avec leurs propres scripts et modes de jeu. Ce guide installe le serveur officiel FXServer sur Linux : un utilisateur dédié, le serveur et ses ressources de base, la clé de licence, un service qui le démarre avec la machine, le pare-feu, puis la connexion depuis FiveM. Choisissez votre système ci-dessus. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.
1Mettre à jour le système et installer xz et git
apt update && apt upgrade -y... 212 upgraded, 8 newly installed, 0 to remove and 4 not upgraded. (les nombres dépendent de l'âge de l'image)
dnf upgrade -y... Complete!
dnf upgrade -y... Complete!
zypper -n refresh && zypper -n updateAll repositories have been refreshed. ...
apt install -y xz-utils git curldnf install -y xz git... Complete!
dnf install -y xz git... Complete!
zypper -n install xz git2Créer un utilisateur dédié et télécharger le serveur
Le serveur ne tourne jamais en root : un utilisateur fivem, dont le dossier personnel est /opt/fivem, possède le serveur (server) et ses ressources (server-data). Le dossier est créé avant l'utilisateur : sur Rocky et CentOS, SELinux refuse à useradd de le créer lui-même sous /opt.
mkdir -p /opt/fivem/server /opt/fivem/server-data && useradd -r -s /bin/bash -d /opt/fivem fivem && chown -R fivem:fivem /opt/fivemLa version ci-dessous est la « LATEST RECOMMENDED » de la page des versions Linux de FXServer au moment de l'écriture ; pour prendre la plus récente, copiez l'adresse de fx.tar.xz sur cette page (runtime.fivem.net/artifacts/fivem/build_proot_linux/master/).
su - fivem -c "cd /opt/fivem/server && curl -fsSL -o fx.tar.xz https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz && tar xf fx.tar.xz && rm fx.tar.xz && ls"alpine run.sh
su - fivem -c "git clone -q https://github.com/citizenfx/cfx-server-data.git /opt/fivem/server-data && ls /opt/fivem/server-data/resources"[gamemodes] [gameplay] [local] [managers] [system] [test]
3Écrire server.cfg avec votre clé de licence
Remplacez VOTRE_CLE_CFX par la clé créée sur Cfx.re Portal (elle commence par cfxk_) ; changez aussi le nom du serveur. Le fichier n'est lisible que par fivem : la clé y est en clair.
cat > /opt/fivem/server-data/server.cfg << 'EOF'
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ensure mapmanager
ensure spawnmanager
ensure basic-gamemode
sv_scriptHookAllowed 0
sets tags "default"
sets locale "fr-CA"
sv_hostname "Mon serveur FiveM"
sets sv_projectName "Mon serveur FiveM"
sets sv_projectDesc "Serveur FiveM sur Linux"
add_ace group.admin command allow
add_ace group.admin command.quit deny
add_principal identifier.fivem:1 group.admin
sv_maxclients 48
set steam_webApiKey ""
sv_licenseKey VOTRE_CLE_CFX
EOF
chown fivem:fivem /opt/fivem/server-data/server.cfg && chmod 600 /opt/fivem/server-data/server.cfgsv_licenseKey- La clé de licence ; sans elle, le serveur refuse de démarrer
sv_hostname, sv_projectName- Le nom du serveur dans la liste de FiveM
sv_maxclients 48- Le nombre de joueurs
ensure mapmanager, spawnmanager, basic-gamemode- Les ressources de base du dépôt ; ajoutez un ensure par ressource que vous déposez dans server-data/resources
set steam_webApiKey- Une clé Steam Web API (steamcommunity.com/dev/apikey) si vos joueurs s'identifient par Steam ; vide sinon
4Démarrer le serveur comme un service
Le service lance run.sh depuis server-data avec l'utilisateur fivem et le démarre avec la machine. La ligne ExecStart passe par une entrée qui ne se ferme jamais (sleep infinity) : sans elle, le serveur lit la fin de son entrée comme un Ctrl+C et s'arrête aussitôt.
cat > /etc/systemd/system/fivem.service << 'EOF'
[Unit]
Description=Serveur FiveM
After=network.target
[Service]
User=fivem
Group=fivem
WorkingDirectory=/opt/fivem/server-data
ExecStart=/bin/bash -c "sleep infinity | /opt/fivem/server/run.sh +exec server.cfg"
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload && systemctl enable --now fivemCreated symlink /etc/systemd/system/multi-user.target.wants/fivem.service → /etc/systemd/system/fivem.service.
systemctl is-active fivem && journalctl -u fivem --no-pager -n 100 | grep -E 'resources|svadhesive|mapmanager'active [ resources] Scanning resources. [ resources] Found 19 resources. [ svadhesive] Authenticating server license key... [ svadhesive] Server license key authentication succeeded. Welcome! [ c-scripting-core] Creating script environments for mapmanager [ resources] Started resource mapmanager [ resources] Started resource spawnmanager [ script:mapmanager] Started gametype Freeroam [ resources] Started resource basic-gamemode [ script:mapmanager] Started map fivem-map-hipster [ resources] Started resource fivem-map-hipster (la carte tirée au sort peut être fivem-map-skater)
ss -ltnup | grep 30120 && curl -s http://127.0.0.1:30120/info.json | head -c 120; echoudp UNCONN 0 0 [::ffff:0.0.0.0]:30120 *:* users:(("ld-musl-x86_64.",pid=38771,fd=71))
tcp LISTEN 0 128 0.0.0.0:30120 0.0.0.0:* users:(("ld-musl-x86_64.",pid=38771,fd=72))
{"enforceSteamAuth":false,"enhancedHostSupport":true,"requestSteamTicket":"unset","resources":["hardcap","spawnmanager","mapmanager"5Ouvrir les ports dans le pare-feu
FiveM utilise le port 30120 en TCP et en UDP. La commande active le pare-feu du système en gardant SSH autorisé, puis ouvre les ports.
apt install -y ufw && ufw allow 22/tcp && ufw allow 30120/tcp && ufw allow 30120/udp && ufw --force enable... Firewall is active and enabled on system startup
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=30120/tcp --add-port=30120/udp && firewall-cmd --reload... success success
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=30120/tcp --add-port=30120/udp && firewall-cmd --reload... success success
firewall-cmd --permanent --add-port=30120/tcp --add-port=30120/udp && firewall-cmd --reloadsuccess success
6Se connecter et administrer
- Lancez FiveM, appuyez sur F8 pour ouvrir la console.
- Tapez : connect 203.0.113.42:30120 (l'adresse IP de votre serveur).
Les commandes d'administration se tapent dans la console du serveur ; la ligne add_principal de server.cfg donne le rôle admin au compte FiveM dont vous mettez l'identifiant à la place de identifier.fivem:1.
curl -s http://127.0.0.1:30120/players.json[] (vide tant que personne n'est connecté)
7Gérer et mettre à jour le serveur
systemctl status fivemjournalctl -u fivem -fsystemctl restart fivemsystemctl stop fivemUne mise à jour du serveur, c'est un nouveau fx.tar.xz : serveur arrêté, on remplace le contenu de /opt/fivem/server par la nouvelle version « LATEST RECOMMENDED », les ressources et server.cfg ne bougent pas.
systemctl stop fivem && su - fivem -c "cd /opt/fivem/server && rm -rf alpine run.sh && curl -fsSL -o fx.tar.xz https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz && tar xf fx.tar.xz && rm fx.tar.xz && ls" && systemctl start fivemalpine run.sh
Erreurs fréquentes
L'image du serveur a été construite sur un autre disque et GRUB demande où se réinstaller : choisissez le disque de la machine (celui que lsblk affiche, en général /dev/sda) ; la mise à jour continue ensuite.
La ligne sv_licenseKey manque dans server.cfg, ou le service ne charge pas ce fichier (+exec server.cfg dans ExecStart, depuis /opt/fivem/server-data).
La clé est mal copiée, ou supprimée sur Cfx.re Portal. Reprenez-la sur portal.cfx.re, puis systemctl restart fivem.
Le serveur n'a pas d'entrée à lire : la ligne ExecStart du service doit être celle de l'étape 4, avec sleep infinity.
Ces ressources ne sont plus dans cfx-server-data ; hardcap est intégré au serveur et démarre seul. Retirez leurs lignes ensure de server.cfg.
OneSync est actif d'office sur les serveurs actuels : retirez la ligne set onesync de server.cfg.
Serveur prêt
Votre serveur FiveM démarre avec la machine, se relance s'il tombe, et écoute sur le port 30120 avec sa clé authentifiée. Pour d'autres jeux, voyez les serveurs de jeux.