Files
Serveur-NationGlory/MODIFICATIONS.md

7.4 KiB

📝 Modifications Techniques

Résumé des changements pour portabilité et simplification.

Objectifs Atteints

  • Chemins relatifs (100% portable)
  • Configuration centralisée (shared.env)
  • Détection automatique API
  • Synchronisation Git automatique
  • Déploiement unifié

🔑 Changements Clés

1. Configuration Centralisée

Avant : Fichiers .env distincts dans chaque service
Après : shared.env appliquée aux deux services via docker-compose.yml

env_file:
  - ../shared.env    # Configuration commune (priorité basse)
  - .env             # Surcharges locales (priorité haute)

2. Chemins Relatifs

Avant : /home/innotex/NationsGloryRED/NationsGlory_ServeurBuild_Red
Après : ${MC_SERVER_PATH:-../NationsGlory_ServeurBuild_Red}

3. Détection Automatique API

Avant : API URL codée en dur (localhost seulement)
Après : Détection via window.location.protocol + window.location.hostname

const API_URL = `${window.location.protocol}//${window.location.hostname}:4001/api`;

4. CORS Dynamique

Avant : Accepter tous origins (security flaw)
Après : CORS configurable par variable d'environnement

5. npm Install Fix

Avant : RUN npm install --production (oubliait devDependencies)
Après : RUN npm install + vérification express

📋 Fichiers de Configuration

shared.env.example          # Template centralisé
shared.env                  # Configuration réelle (non versionné)
NationsGlory_ServeurBuild_Red/.env
WebNationsGlory_ServeurBuild_Red/.env

🔄 Scripts d'Automatisation

  • deploy.sh - Déploiement complet

  • stop.sh - Arrêt des services

  • check-config.sh - Vérification + Git sync const port = '4001';

    if (window.location.port === port) { return ${protocol}//${hostname}:${port}/api; }

    return ${protocol}//${hostname}:${port}/api; })();


✅ **Supporte automatiquement** : `http:` et `https:`, localhost, IP, domaine

### Serveur Minecraft

#### `docker-compose.yml`
Ajout du support des variables d'environnement :
```yaml
env_file:
  - .env
environment:
  SERVER_PORT: ${SERVER_PORT:-25565}
  RCON_PORT: ${RCON_PORT:-25575}
  RCON_PASSWORD: ${RCON_PASSWORD:-minecraft}
  # ... etc

.env.example

Complété avec toutes les variables nécessaires

🔐 Configuration Requise

Fichier .env du serveur Minecraft

cp NationsGlory_ServeurBuild_Red/.env.example NationsGlory_ServeurBuild_Red/.env
nano NationsGlory_ServeurBuild_Red/.env

Paramètres importants :

  • RCON_PASSWORD : Changez pour la production

Fichier .env de l'application web

cp WebNationsGlory_ServeurBuild_Red/.env.example WebNationsGlory_ServeurBuild_Red/.env
nano WebNationsGlory_ServeurBuild_Red/.env

Paramètres critiques :

  • SESSION_SECRET : Générez avec openssl rand -base64 32
  • RCON_PASSWORD : Doit être identique au serveur MC
  • MC_SERVER_PATH : Chemin relatif vers le serveur (défaut: ../NationsGlory_ServeurBuild_Red)

🚀 Utilisation

1. Vérification de la configuration

./check-config.sh

2. Déploiement

./deploy.sh

3. Accès

  • Serveur Minecraft : votre-ip:25565
  • Interface Web : http://votre-ip:4001

4. Arrêt

./stop.sh

🌐 Accès à Distance

L'application web fonctionne maintenant nativement avec :

  • http://localhost:4001 (local)
  • http://192.168.1.X:4001 (réseau local)
  • http://votre-ip-publique:4001 (internet)
  • http://votre-domaine.com:4001 (domaine)
  • https://votre-domaine.com (avec nginx reverse proxy)

Aucune configuration supplémentaire nécessaire dans le code.

📦 Portabilité

Déployer sur une nouvelle machine

  1. Copier le dossier Serveur NationsGlory complet
  2. Créer les fichiers .env :
    cd WebNationsGlory_ServeurBuild_Red
    cp .env.example .env
    nano .env  # Configurer SESSION_SECRET et RCON_PASSWORD
    
    cd ../NationsGlory_ServeurBuild_Red
    cp .env.example .env
    nano .env  # Configurer RCON_PASSWORD (même valeur)
    
  3. Déployer :
    cd ..
    ./deploy.sh
    

C'est tout ! 🎉

Pas de dépendances aux chemins

  • Plus de /home/innotex/...
  • Plus de configuration IP hardcodée
  • Tout est relatif au dossier parent
  • Détection automatique de l'environnement

🔒 Sécurité

Checklist de production

  • Changez SESSION_SECRET dans .env de l'app web
  • Changez RCON_PASSWORD dans les deux .env
  • Ouvrez les ports firewall (25565, 25575, 4001)
  • Configurez nginx avec SSL (optionnel mais recommandé)
  • Restreignez l'accès admin (firewall, VPN)
  • Configurez les sauvegardes automatiques

Exemple de génération de secrets

# SESSION_SECRET
openssl rand -base64 32

# RCON_PASSWORD (alphanumérique)
openssl rand -base64 16 | tr -dc 'a-zA-Z0-9'

📊 Architecture

Serveur NationsGlory/
├── deploy.sh              # Démarrage unifié
├── stop.sh                # Arrêt unifié
├── check-config.sh        # Vérification
│
├── NationsGlory_ServeurBuild_Red/
│   ├── .env               # Config du serveur MC
│   ├── docker-compose.yml # Orchestration Docker
│   └── mcpc.jar           # Serveur Minecraft
│
└── WebNationsGlory_ServeurBuild_Red/
    ├── .env               # Config de l'app web
    ├── docker-compose.yml # Orchestration Docker
    ├── backend/           # API Node.js
    └── frontend/          # Interface web

Communication:
- App Web → Serveur MC (RCON sur localhost:25575)
- Client Web → App Web (HTTP sur port 4001)
- Client MC → Serveur MC (TCP sur port 25565)

🎓 Points Techniques

1. Montage relatif du serveur MC

Le docker-compose de l'app web monte le serveur avec un chemin relatif :

volumes:
  - ${MC_SERVER_PATH:-../NationsGlory_ServeurBuild_Red}:/mc-server:ro

Le :ro (read-only) assure que l'app web ne modifie pas les fichiers du serveur.

2. Network mode host

network_mode: host

Permet à l'application d'être accessible depuis l'extérieur sans NAT Docker. Nécessaire pour que l'API fonctionne avec n'importe quelle IP/domaine.

3. Détection automatique du protocole

Le frontend détecte automatiquement http: ou https: depuis window.location.protocol, permettant le support SSL transparent via nginx.

4. Variables d'environnement avec valeurs par défaut

RCON_PORT: ${RCON_PORT:-25575}

Si RCON_PORT n'est pas défini dans .env, utilise 25575.

🐛 Dépannage

Le script deploy.sh échoue

./check-config.sh  # Vérifier la configuration

L'app web ne se connecte pas au serveur MC

  1. Vérifiez que RCON_PASSWORD est identique
  2. Vérifiez que le serveur MC a démarré complètement
  3. Testez RCON : docker exec -it mc-nationsglory rcon-cli

L'API ne répond pas depuis l'extérieur

  1. Vérifiez le pare-feu : sudo ufw status
  2. Ouvrez le port : sudo ufw allow 4001/tcp
  3. Testez : curl http://votre-ip:4001/api/health

📚 Références


Date de modification : Février 2026
Version : 2.0 - Configuration portable