Files
Serveur-NationGlory/SHARED_ENV.md

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) :

  1. ../shared.env (parent) - Configuration commune
  2. .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

  1. Copie le template :

    cd "Projet/Serveur NationsGlory"
    cp shared.env.example shared.env
    
  2. Modifie les valeurs sensibles (RCON_PASSWORD, SESSION_SECRET) :

    nano shared.env
    
  3. 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 .gitignoreNE 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 ! 🎉