Économisez 20 % avec WELCOMEVoir les promotions
Comment exécuter un serveur FiveM avec Docker

Comment exécuter un serveur FiveM avec Docker

Liste de vérification rapide pour la configuration de Docker FiveM

Une configuration Docker utile assure la persistance des données txAdmin, expose les ports appropriés et rend les mises à jour réversibles.

  • Utilisez Docker Compose v2 et montez txData ou le répertoire de données de votre serveur.
  • Exposez le port TCP/UDP 30120 pour FiveM et 40120 uniquement lorsque l'accès txAdmin est prévu.
  • Sauvegardez les fichiers server.cfg, resources, txData et les données de la base de données avant de modifier les artefacts ou les images.

Parcours d'achat associés : Packs serveur | Scripts FiveM | Outils d'administration

Exécutez un serveur FiveM (FXServer) dans Docker avec ce guide copier-coller : une image minimale, compose.yaml en utilisant le voile à civadière/fivem mappage de ports correct pour 30120 (TCP+UDP) et 40120 (txAdmin), montages persistants pour serveur.cfg, ressources, et données txAdmin, gestion de la clé de licence, et étapes de mise à jour et de rétrogradation sûres.

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] |
| Healthcheck : 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 # Par 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}
 # Bascules optionnelles (voir tableau ci-dessous) :
 # - NO_DEFAULT_CONFIG=1 # requis si vous voulez 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, ressources, logs
 ports:
 - "${FXSERVER_PORT}:30120/tcp"
 - "${FXSERVER_PORT}:30120/udp"
 tty: true # empêcher le crash au démarrage (équiv. à -t)
 stdin_open: true # empêcher le crash au démarrage (équiv. à -i)
 restart: unless-stopped

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
 environment:
 - LICENSE_KEY=${LICENSE_KEY}
 - NO_DEFAULT_CONFIG=1 # activer txAdmin (pas de +exec par défaut)
 # - NO_LICENSE_KEY=1 # si la clé est stockée dans server.cfg
 # - RCON_PASSWORD=${RCON_PASSWORD}
 volumes:
 - ./data:/config
 - ./txData:/txData # persister les données txAdmin
 ports:
 - "${FXSERVER_PORT}:30120/tcp"
 - "${FXSERVER_PORT}:30120/udp"
 - "${TXADMIN_PORT}:40120/tcp" # Web txAdmin 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: 30s
 timeout: 5s
 retries: 5
 start_period: 30s
 # Réglages de base des ressources pour Compose autonome (pas 'deploy' Swarm)
 cpus: 2
 mem_limit: "6g"
 ulimits:
 nofile:
 soft: 1048576
 hard: 1048576
 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, ressources/, logs/)
└─ txData/ -> /txData (profils et base de données txAdmin)

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":/backup 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)

Secrète 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 allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw allow 40120/tcp # seulement 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 et les images (conserver les données montées) : `docker compose down --rmi local --remove-orphans` # Si vous avez utilisé des volumes nommés (non décrit dans ce guide), listez-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: