Un déploiement Docker nécessite des données de serveur persistantes, une exposition des ports délibérée et un couple image/configuration récupérable. L'exemple ci-dessous utilise l'image spritsail maintenue par la communauté sur un hôte Linux ; ses chemins et ses variables d'environnement sont spécifiques à cette image et ne sont pas des options FXServer universelles.
Les exemples de configuration et de code ici ciblent FiveM pour GTA V Legacy. Enhanced a des règles d'exécution et de compatibilité différentes ; vérifiez les changements Legacy-to-Enhanced de Cfx.re avant de les appliquer à un serveur Enhanced.
Préparer l'hôte
Installez Docker Engine et le plugin Compose en suivant les instructions de Docker pour votre hôte. Utilisez d'abord un déploiement de test isolé. Vérifiez que l'architecture de l'hôte, les ports disponibles et la version de l'image conviennent au serveur que vous envisagez.
Créez un répertoire de projet privé avec data/ et txData/ comme sous-répertoires. L'image utilise /config pour les données du serveur et /txData pour txAdmin. Restreignez l'accès aux répertoires de l'hôte et aux sauvegardes, car ils contiendront des identifiants.
Créer compose.yaml
Enregistrez ceci sous le nom compose.yaml dans ce répertoire de projet. Il laisse la configuration de la licence à l'installation protégée txAdmin/serveur et lie le port d'administration au loopback de l'hôte.
services:
fivem:
image: spritsail/fivem:stable
environment:
NO_DEFAULT_CONFIG: "1"
NO_LICENSE_KEY: "1"
volumes:
- ./data:/config
- ./txData:/txData
ports:
- "30120:30120/tcp"
- "30120:30120/udp"
- "127.0.0.1:40120:40120/tcp"
stdin_open: true
tty: true
restart: unless-stopped
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Le tag stable de l’image peut changer et suit la définition du mainteneur de l’image en amont. Lisez les informations de version et le code source avant le déploiement ; ne considérez pas le mot « stable » comme une garantie issue de tests. Après les tests, remplacez la référence de l’image par le digest exact de l’image téléchargée que vous avez consigné.
Démarrer et configurer txAdmin
Depuis le répertoire du projet sur l'hôte Docker, exécutez :
docker compose config --quiet
docker compose pull
docker compose up -d
docker compose logs --tail=100 fivem
Accédez à txAdmin en local à l'adresse http://127.0.0.1:40120. Depuis votre poste de travail, créez un tunnel SSH vers votre hôte réel avec ssh -L 40120:127.0.0.1:40120 user@your-server, puis ouvrez cette même adresse locale dans votre navigateur. Utilisez votre véritable compte/nom d'hôte SSH. Ne publiez pas les codes PIN de configuration ni les sorties de journaux contenant des identifiants.
Suivez la procédure de configuration de txAdmin et choisissez un emplacement server-data dans /config, ou un autre répertoire persistant explicitement monté. Saisissez la licence de serveur valide en privé. Si la recette sélectionnée nécessite une base de données, provisionnez-la séparément et gardez son port privé ; cet exemple Compose n'en inclut pas.
Vérifier le réseau et la persistance
Autorisez le point de terminaison joueur prévu sur le réseau de l'hôte/du fournisseur, en TCP et en UDP. Vérifiez l'accès depuis l'extérieur de l'hôte. Les ports publiés par Docker interagissent avec les règles de pare-feu de Docker et peuvent contourner les règles d'entrée UFW ordinaires ; consultez la documentation de Docker sur le pare-feu au lieu de coller un jeu de règles de pare-feu de remplacement.
Effectuez une connexion de test, inspectez les erreurs de ressources et apportez une modification de configuration inoffensive. Recréez le conteneur avec docker compose up -d --force-recreate et vérifiez que le profil/la configuration persiste. Une réponse HTTP de info.json n'est qu'une vérification de disponibilité de base, et non une preuve du bon fonctionnement du gameplay.
Sauvegarder un ensemble cohérent
Planifiez une maintenance et arrêtez les écritures de gameplay. Sauvegardez les répertoires montés, la définition Compose, la configuration privée et toute base de données externe comme un seul ensemble de restauration correspondant. Pour les données de fichiers uniquement, pendant que le service est arrêté, une archive privée peut être créée depuis le répertoire du projet avec :
umask 077
docker compose stop fivem
tar -czf "../fivem-files-$(date -u +%Y%m%dT%H%M%SZ).tgz" compose.yaml data txData
docker compose start fivem
Vérifiez que la création de l'archive a réussi avant de redémarrer, dans le cadre de votre runbook. Incluez les fichiers de configuration supplémentaires et la sauvegarde de la base de données lorsque votre installation les utilise. Une archive de fichiers seule ne peut pas restaurer une base de données externe. Testez la restauration dans des répertoires distincts et une base de données distincte.
Mettre à jour et restaurer
Notez le digest de l'image actuellement en cours d'exécution et effectuez la sauvegarde correspondante avant de récupérer une mise à jour. Testez l'image candidate sur une copie, puis modifiez la référence de l'image de production pendant une fenêtre de maintenance et répétez les vérifications de connexion/persistance.
Revenir en arrière uniquement sur l'image peut ne pas annuler les migrations de données effectuées par les ressources. Restaurez délibérément les fichiers/données correspondants et tenez compte des écritures survenues depuis la sauvegarde. docker compose down arrête/supprime le service tout en conservant ces répertoires montés en bind ; conservez ces répertoires jusqu'à ce que la restauration ne soit plus nécessaire.
Documentation de référence
Source : spritsail/fivem · Source : docs.docker.com · Cfx.re — txAdmin