Files
Serveur-NationGlory/SHARED_ENV.md

164 lines
4.5 KiB
Markdown

# 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** :
```bash
cd "Projet/Serveur NationsGlory"
cp shared.env.example shared.env
```
2. **Modifie les valeurs sensibles** (RCON_PASSWORD, SESSION_SECRET) :
```bash
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** :
```bash
# 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 :
```bash
# 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 :
```bash
# 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` :
```bash
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 :
```bash
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 :
```bash
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 ! 🎉