Économisez 20% dès aujourd'hui Utilisez le code BIENVENUE lors du paiement. ACCUEILLIR

Comment exécuter un serveur FiveM avec Docker

Déployez un serveur FiveM fiable avec Docker Compose : installez, configurez server.cfg, ouvrez les ports, conservez les données et gérez les mises à jour.

TL;DR

  • Installez Docker Engine + Docker Compose v2 sur Ubuntu.Documentation Docker)
  • Créez un dossier de projet, ajoutez .env (ensemble LICENCE_CLE, NOM_DU_SERVEUR, ports) et un minimum compose.yaml.
  • Commencer par docker compose up -d; regarder les journaux avec journaux docker compose -f.
  • Modifier données/serveur.cfg (nom d'hôte, points de terminaison, ressources) ; redémarrer le conteneur.
  • Ouvrir le pare-feu pour 30120/TCP+UDP et 40120/TCP (txAdmin). Le port par défaut de txAdmin est 40120. (Documentation Cfx.re)
  • Toujours exécuter le conteneur avec entrée standard/tty activé pour éviter les crashs. (GitHub)

Prérequis

  • Système d'exploitation: Linux Ubuntu 22.04+ (notes pour macOS/Windows ci-dessous).
  • Matériel: 2+ processeurs virtuels, 4 à 8 Go de RAM (plus pour les ressources lourdes), Disque SSD recommandé.
  • Docker: Installer Moteur Docker et Compose v2 à partir des documents officiels. (Documentation Docker)
  • Clé de licence FiveM: Générer dans le portail Cfx.re (Keymaster). Garder secret.support.cfx.re)
  • Pare-feu/NAT: Possibilité d'ouvrir/transférer les ports 30120 (TCP+UDP) et éventuellement 40120 (TCP). (Documentation Cfx.re)
  • (Facultatif) Un domaine/sous-domaine pour txAdmin.

Aperçu de l'architecture

Un conteneur fonctionne Serveur FX en utilisant le voile à civadière/fivem image. Les données sont monté sur reliure persister serveur.cfg, ressources et journaux. Ports 30120/TCP+UDP sont exposés aux joueurs ; 40120/TCP expose txAdmin lorsqu'il est activé. A bilan de santé peut sonder http://127.0.0.1:30120/info.json. (GitHub)

+-------------------- Hôte Docker (Ubuntu) --------------------+ | /home/fivem/data --> /config (dans le conteneur) | | /home/fivem/txData --> /txData (données txAdmin) | | | | Exposé : 30120/tcp+udp [FXServer] | 40120/tcp [txAdmin] | | Vérification de l'état : GET 127.0.0.1:30120/info.json | +-------------------------------------------------------------+

Démarrage rapide (copier-coller)

1) Créer un dossier de projet

# Facultatif : utilisateur système et répertoires dédiés sudo useradd -r -m -d /home/fivem -s /usr/sbin/nologin fivem || true sudo mkdir -p /home/fivem/{data,txData} sudo chown -R "$USER":"$USER" /home/fivem cd /home/fivem

2) Créer .env

cat > .env <<'EOF' # === REQUIS === LICENSE_KEY=REPLACE_WITH_YOUR_CFX_KEY # Commodité (utilisé par le mappage des ports ci-dessous) FXSERVER_PORT=30120 TXADMIN_PORT=40120 # Non lu directement par l'image ; à utiliser lors de la modification de server.cfg SERVER_NAME="My Docker FiveM" # Facultatif : si omis, la génération de configuration par défaut définit un mot de passe RCON aléatoire RCON_PASSWORD= EOF

3) Minimal compose.yaml (épingler une étiquette)

Configuration minimale de travail utilisant l'image en amont. Utilisations tty+stdin pour éviter un crash.GitHub)

# compose.yaml services: fivem: image: spritsail/fivem:stable container_name: fivem environment: - LICENSE_KEY=${LICENSE_KEY} # Options facultatives (voir tableau ci-dessous) : # - NO_DEFAULT_CONFIG=1 # requis si vous souhaitez utiliser txAdmin # - NO_LICENSE_KEY=1 # si vous mettez la clé dans server.cfg à la place # - NO_ONESYNC=1 # désactiver OneSync dans la configuration par défaut # - RCON_PASSWORD=${RCON_PASSWORD} volumes: - ./data:/config # server.cfg, resources, logs ports: - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" tty : true # empêche le plantage au démarrage (équivalent à -t) stdin_open : true # empêche le plantage au démarrage (équivalent à -i) redémarrage : sauf si arrêté

Démarrez-le :

docker compose up -d docker compose journaux -f

4) Variante étendue (txAdmin, healthcheck, limites)

# compose.extended.yaml services : fivem : image : spritsail/fivem : stable container_name : fivem environnement : - LICENSE_KEY=${LICENSE_KEY} - NO_DEFAULT_CONFIG=1 # activer txAdmin (pas de valeur par défaut +exec) # - NO_LICENSE_KEY=1 # si la clé est stockée dans server.cfg # - RCON_PASSWORD=${RCON_PASSWORD} volumes : - ./data:/config - ./txData:/txData # conserver les données txAdmin ports : - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" - "${TXADMIN_PORT}:40120/tcp" # txAdmin Web UI (par défaut 40120) tty : true stdin_open : true healthcheck : test : ["CMD-SHELL", "wget -qO- http://127.0.0.1:30120/info.json >/dev/null 2>&1"] interval : 30 s timeout : 5 s retries : 5 start_period : 30 s # Boutons de ressources de base pour Compose autonome (pas Swarm 'deploy') cpus : 2 mem_limit : "6 g" ulimits : nofile : soft : 1 048 576 hard : 1 048 576 restart : unless-stopped

Si wget n'est pas disponible dans l'image, supprimez le contrôle d'intégrité ou remplacez-le par une sonde TCP. txAdmin persiste sous /txData, port 40120 est sa valeur par défaut. (GitHub)


Configuration et persistance

  • Lors de la première exécution, les valeurs par défaut sont écrites sur le montage de liaison ./données (chemin du conteneur /config). Modifier ./data/server.cfg et redémarrez le conteneur. (GitHub)

Typique serveur.cfg morceaux:

# data/server.cfg # Points de terminaison réseau (laissez 0.0.0.0 pour écouter sur toutes les interfaces) endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" # Ensemble de noms de serveur sv_hostname "My Docker FiveM" # Clé de licence (à utiliser uniquement si vous n'utilisez PAS l'environnement LICENSE_KEY) # sv_licenseKey "REPLACE_WITH_YOUR_CFX_KEY" # Exemple : garantir une ressource de base # garantir le chat

Disposition du répertoire (hôte):

/home/fivem ├─ data/ -> /config (server.cfg, resources/, logs/) └─ txData/ -> /txData (profils txAdmin et DB)

Sauvegardes

  • Sauvegarde de montage lié :
tar -C /home/fivem -czf fivem-backup_$(date +%F).tgz données txData
  • Si vous passez à volumes nommés, sauvegarder comme :
docker run --rm -v fivem_data:/data -v "$PWD":/sauvegarde busybox \ sh -c 'tar -czf /backup/fivem_data_$(date +%F).tgz -C / data'

Variables d'environnement (à partir de voile à civadière/fivem)

NomButExemple
LICENCE_CLERequis Clé de licence du serveur FiveM pour démarrer FXServerLICENSE_KEY=xxxxx
RCON_MOT DE PASSEMot de passe RCON utilisé lors de la création des configurations par défaut ; 16 caractères aléatoires s'il n'est pas définiRCON_PASSWORD=passe forte
AUCUNE CONFIGURATION PAR DÉFAUTDésactiver par défaut +exécutif afin que txAdmin puisse gérer le serveur1
NO_LICENSE_KEYNe lisez pas la clé depuis l'environnement ; conservez-la dans serveur.cfg1
NO_ONESYNCDésactiver OneSync dans les configurations par défaut1

Ces variables d'environnement et chemins /config, /txData, plus le besoin de -ti sont définis par l'image en amont. (GitHub)

Secret manutention: Préférer NO_LICENSE_KEY=1 et mettre Clé de licence sv dans serveur.cfg avec les autorisations de fichier correctes si vous ne voulez pas que la clé soit dans l'environnement du conteneur. (GitHub)


Réseaux et sécurité

Ports requis

ButPortProto
Connexions des joueurs / API30120TCP+UDP
Interface utilisateur Web txAdmin (facultative)40120TCP
Maître hérité (rarement nécessaire)30110Protocole UDP

La valeur par défaut de FiveM est 30120 ; la valeur par défaut de txAdmin est 40120. (GitHub)

Exemples UFW (Ubuntu)

sudo ufw autorise 30120/tcp sudo ufw autorise 30120/udp sudo ufw autorise 40120/tcp # uniquement si vous activez txAdmin sudo ufw reload

nftables (exemple d'extrait de jeu de règles)

sudo nft add table inet filter sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }' sudo nft add rule inet filter input ct state established,related accept sudo nft add rule inet filter input iif lo accept sudo nft add rule inet filter input tcp dport {30120,40120} accept sudo nft add rule inet filter input udp dport 30120 accept

Le moindre privilège et les secrets

  • Exécutez sur un hôte renforcé ; évitez de mapper des capacités supplémentaires ; n'exécutez pas Docker en tant que racine utilisateur sur l'hôte.
  • Garder RCON activé uniquement si nécessaire ; protégez txAdmin avec des informations d'identification fortes et restreignez l'accès au niveau du pare-feu.
  • Si vous utilisez des distributions basées sur SELinux (pas Ubuntu), ajoutez :Z/:z pour lier les montages pour résoudre les problèmes de contexte.

Mises à jour et restaurations

Mise à jour vers la dernière balise épinglée

docker compose pull docker compose up -d

Épinglé par digest (immuable)

# Tirez et découvrez le condensé de la balise actuelle docker pull spritsail/fivem:stable docker inspect --format='{{index .RepoDigests 0}}' spritsail/fivem:stable # Utilisez la valeur imprimée dans compose, par exemple : # image : spritsail/fivem@sha256:abcdef...

Retour en arrière

  • Modifiez la référence de l'image à la balise/au résumé précédent et docker compose up -d.
  • Conservez les résumés d'images récents avec image docker ls --digests.

L'image fournit écurie et dernier balises; préférer écurie pour moins de surprises.GitHub)


Surveillance et maintenance

  • Statut: docker ps, docker compose ps
  • Journaux: journaux docker compose -f
  • Statistiques: statistiques docker fivem
  • Bilan de santé: Sondages info.json; retirer/ajuster si l'outillage est manquant. (Documentation Cfx.re)
  • Disque: système docker df, élaguez les anciennes images si nécessaire.
  • Sauvegardes: Exécutez la commande tar dans « Configuration et persistance ».

Dépannage

  • Clé de licence invalide:Vérifiez dans le portail Cfx.re et assurez-vous qu'un seul serveur utilise la clé.support.cfx.re)
  • Ports déjà utilisés: sudo ss -lntup | grep 30120; arrêter le service conflictuel ou modifier FXSERVER_PORT.
  • Impossible de joindre txAdmin: Ouvrir 40120/TCP ou changer de port ; confirmer NO_DEFAULT_CONFIG=1. (Documentation Cfx.re)
  • Le conteneur sort au démarrage: Assurer tty : vrai et stdin_open : vrai sont définis. (GitHub)
  • Problèmes de temps/DNS:Assurez-vous de la synchronisation de l'heure de l'hôte (systemd-timesyncd/chrony) et du fonctionnement du DNS (/etc/resolv.conf).
  • Refus SELinux (hors Ubuntu): Utiliser :Z/:z sur les montages liés ou les contextes d'ajustement.
  • info.json/players.json bloqué: Certaines variables ou proxys peuvent affecter ces points de terminaison ; confirmez que le serveur répond sur OBTENIR /info.json. (Documentation Cfx.re)

Conseils de performance

  • CPU/Mémoire: Épinglez les processeurs et définissez des limites de mémoire (voir composition étendue).
  • Stockage:Utilisez SSD/NVMe ; conservez les packs de ressources optimisés ; évitez les ressources volumineuses et non compressées.
  • Réseautage: Maintenez une faible latence ; assurez-vous que l'hôte n'est pas limité par le processeur ; donnez la priorité à UDP 30120.
  • Noyau hôte: Les valeurs par défaut raisonnables fonctionnent ; sysctls avancés (net.core.*mem_max) peut être réglé si vous connaissez votre charge de travail.
  • Journaux:Utilisez la rotation du journal (comme dans l'exemple étendu).

Notes sur macOS / Windows

  • macOS (Docker Desktop): Les E/S de fichiers montées en liaison sont plus lentes que celles de Linux natif ; considérez Docker Desktop Partages de fichiers synchronisés pour de meilleures performances et garantir que le dossier est partagé dans les paramètres. (Documentation Docker)
  • Windows (WSL2): Les ports publiés sont accessibles via hôte local Sous Windows ; l'exposition au réseau local peut nécessiter une configuration supplémentaire selon le mode. Privilégiez l'hébergement sous Linux pour les serveurs publics.Documentation Docker)

Désinstallation propre

# Arrêter et supprimer le conteneur (conserver les données) docker compose down # Supprimer le conteneur + les réseaux anonymes + les images (conserver les données montées en liaison) docker compose down --rmi local --remove-orphans # Si vous avez utilisé des volumes nommés (non inclus dans ce guide), répertoriez-les et supprimez-les explicitement : # docker volume ls # docker volume rm

Pour supprimer tous données, supprimez les répertoires montés en liaison :

sudo rm -rf /home/fivem/data /home/fivem/txData

FAQ

Puis-je héberger plusieurs serveurs sur un seul hôte ?
Oui. Utilisez des répertoires de projet distincts, différents FXSERVER_PORT/TXADMIN_PORTet des montages de liaison distincts. txAdmin prend en charge les données par profil dans /txData. (Documentation Cfx.re)

Comment puis-je modifier le nom/l'adresse IP du serveur affiché dans la liste ?
Modifier sv_nom_hôte dans données/serveur.cfg. L'IP/le port provient de vos ports publiés et de votre configuration NAT.

Puis-je redémarrer automatiquement en cas de crash ?
Oui. redémarrer : sauf si arrêté dans Compose ; pensez également aux temporisateurs systemd pour les chiens de garde.

Où sont situées les sauvegardes ?
Où vous les créez, par exemple, fivem-backup_AAAA-MM-JJ.tgz dans votre répertoire de travail. Voir les commandes de sauvegarde ci-dessus.

Comment activer txAdmin ?
Ensemble NO_DEFAULT_CONFIG=1, montage lié /txData, et ouvert 40120/TCP. (GitHub)

Ai-je besoin d'ouvrir le 30110 ?
Rarement. Il était utilisé pour les listes héritées ; les configurations modernes n'ont généralement besoin que de 30120 et du 40120 de txAdmin s'il est utilisé.Communauté Cfx.re)

Comment déplacer le serveur vers une autre machine ?
Copie données/ et txData/ vers le nouvel hôte, recréez le même fichier Compose et démarrez.


Liens et crédits

  • Image en amont: voile à civadière/fivem (variables d'environnement, chemins, utilisation, notes txAdmin, -ti exigence). (GitHub)
  • Docker:
  • Cfx.re / FiveM:

Luc
Luc

Je m'appelle Luke, je suis un joueur et j'adore écrire sur FiveM, GTA et le jeu de rôle. Je dirige une communauté de jeu de rôle et j'ai environ 10 ans d'expérience dans l'administration de serveurs.

Articles: 570