ajout d'un fichier permettant de partager les .env entre les 2 dépots
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@ WebNationsGlory_ServeurBuild_Red/
|
|||||||
|
|
||||||
# Fichiers de configuration sensibles
|
# Fichiers de configuration sensibles
|
||||||
.env
|
.env
|
||||||
|
shared.env
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
163
SHARED_ENV.md
Normal file
163
SHARED_ENV.md
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
# 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 ! 🎉
|
||||||
@@ -12,4 +12,4 @@ MC_SERVER_REPO="git@192.168.1.195:/path/to/NationsGlory_ServeurBuild_Red.git"
|
|||||||
WEB_ADMIN_REPO="git@192.168.1.195:/path/to/WebNationsGlory_ServeurBuild_Red.git"
|
WEB_ADMIN_REPO="git@192.168.1.195:/path/to/WebNationsGlory_ServeurBuild_Red.git"
|
||||||
|
|
||||||
# Branche par défaut
|
# Branche par défaut
|
||||||
DEFAULT_BRANCH="main"
|
DEFAULT_BRANCH="master"
|
||||||
|
|||||||
41
shared.env.example
Normal file
41
shared.env.example
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# ====================================
|
||||||
|
# Configuration Partagée NationsGlory
|
||||||
|
# ====================================
|
||||||
|
# Ce fichier centralise la configuration commune aux 2 services
|
||||||
|
# Copiez ce fichier vers shared.env et modifiez les valeurs
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# Sécurité & Authentification
|
||||||
|
# ====================================
|
||||||
|
# Mot de passe RCON (DOIT ÊTRE IDENTIQUE dans les 2 .env!)
|
||||||
|
RCON_PASSWORD=minecraft
|
||||||
|
|
||||||
|
# Session secret pour l'app web (généré automatiquement en production)
|
||||||
|
SESSION_SECRET=your-super-secret-key-change-this-in-production
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# Ports réseau
|
||||||
|
# ====================================
|
||||||
|
# Port du serveur Minecraft
|
||||||
|
SERVER_PORT=25565
|
||||||
|
|
||||||
|
# Port RCON du serveur Minecraft
|
||||||
|
RCON_PORT=25575
|
||||||
|
|
||||||
|
# Port de l'application web admin
|
||||||
|
PORT=4001
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# Paramètres Minecraft
|
||||||
|
# ====================================
|
||||||
|
# Mémoire allouée au serveur
|
||||||
|
MEMORY=2G
|
||||||
|
INIT_MEMORY=1G
|
||||||
|
|
||||||
|
# Mode online (authentification Mojang)
|
||||||
|
ONLINE_MODE=false
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# Environnement
|
||||||
|
# ====================================
|
||||||
|
NODE_ENV=production
|
||||||
Reference in New Issue
Block a user