4.5 KiB
Configuration Centralisée - shared.env
Vue d'ensemble
À partir de maintenant, la configuration commune aux deux services (Minecraft + Web Admin) est centralisée dans un seul fichier au niveau du dossier parent : shared.env.
Cela te permet de modifier une seule fois :
- ✅
RCON_PASSWORD→ s'applique automatiquement aux 2 services - ✅
SESSION_SECRET→ s'applique à l'app web - ✅ Tous les ports, mémoire, etc.
Hiérarchie de configuration
Projet/Serveur NationsGlory/
├── shared.env ← Configuration CENTRALISÉE (priorité basse)
├── shared.env.example ← Template (pour documenter)
│
├── NationsGlory_ServeurBuild_Red/
│ ├── .env ← Surcharge locale (priorité haute)
│ ├── .env.example
│ └── docker-compose.yml ← Lit: shared.env PUIS .env
│
└── WebNationsGlory_ServeurBuild_Red/
├── .env ← Surcharge locale (priorité haute)
├── .env.example
└── docker-compose.yml ← Lit: shared.env PUIS .env
Ordre de chargement
Docker Compose charge les variables dans cet ordre (les dernières écrasent les premières) :
../shared.env(parent) - Configuration commune.env(local) - Surcharges spécifiques au service
Cela signifie : si une variable est définie dans les DEUX fichiers, la version locale gagne.
Utilisation
Première installation
-
Copie le template :
cd "Projet/Serveur NationsGlory" cp shared.env.example shared.env -
Modifie les valeurs sensibles (RCON_PASSWORD, SESSION_SECRET) :
nano shared.env -
Les deux services utiliseront automatiquement ces valeurs
Modification des paramètres globaux
Pour changer quelque chose qui concerne les deux services :
# Depuis le dossier parent
nano shared.env
# Puis redémarre les conteneurs
docker-compose -f NationsGlory_ServeurBuild_Red/docker-compose.yml down
docker-compose -f WebNationsGlory_ServeurBuild_Red/docker-compose.yml down
./deploy.sh
Configuration spécifique à un service
Si tu veux un paramètre différent dans un seul service, ajoute-le dans son .env local :
Exemple : Si tu veux une SESSION_SECRET différente dans WebNationsGlory :
# Dans WebNationsGlory_ServeurBuild_Red/.env
SESSION_SECRET=mon-secret-specifique-au-web
Cela écrasera la valeur du shared.env uniquement pour ce service.
Variables dans shared.env
Sécurité
RCON_PASSWORD→ Mot de passe RCON (utilisé par Minecraft + Web Admin)SESSION_SECRET→ Clé de session pour l'app web
Ports
SERVER_PORT→ Port Minecraft (25565)RCON_PORT→ Port RCON (25575)PORT→ Port app web (4001)
Minecraft
MEMORY→ RAM allouée (2G, 4G, etc.)INIT_MEMORY→ RAM initiale (1G)ONLINE_MODE→ Mode authentification Mojang (true/false)
Environnement
NODE_ENV→ production/development
Génération sécurisée (Production)
Pour générer un SESSION_SECRET sécurisé en production :
# Linux/Mac
openssl rand -hex 32
# Windows (PowerShell)
[Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Maximum 256 }))
# Node.js (universel)
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Puis colle la valeur dans shared.env :
SESSION_SECRET=a1b2c3d4e5f6... (votre clé générée)
.gitignore
✅ shared.env est dans .gitignore → NE SERA JAMAIS envoyé au repo Git
✅ shared.env.example est versionné → Permet aux autres de savoir quelles variables existent
Dépannage
"Cannot find shared.env" au démarrage
Assure-toi d'avoir créé le fichier :
cd "Projet/Serveur NationsGlory"
cp shared.env.example shared.env
Le changement ne s'applique pas après modification
Docker utilise un cache. Redémarre complètement :
docker-compose -f NationsGlory_ServeurBuild_Red/docker-compose.yml down
docker-compose -f WebNationsGlory_ServeurBuild_Red/docker-compose.yml down
docker system prune -f
./deploy.sh
Exemple : Changer le RCON_PASSWORD
Avant (2 fichiers à modifier) :
NationsGlory_ServeurBuild_Red/.env → RCON_PASSWORD=ancien_mdp
WebNationsGlory_ServeurBuild_Red/.env → RCON_PASSWORD=ancien_mdp
Après (1 fichier à modifier) :
shared.env → RCON_PASSWORD=nouveau_mdp
Les deux services récupèrent automatiquement la nouvelle valeur ! 🎉