Ver código fonte

activation de la BD securisée

DESKTOP-SMCIPAV\falko 6 meses atrás
pai
commit
031b335d0a
2 arquivos alterados com 33 adições e 43 exclusões
  1. 23 28
      docker-compose.yml
  2. 10 15
      express-server/lib/db.js

+ 23 - 28
docker-compose.yml

@@ -12,9 +12,8 @@ volumes:
     driver_opts:
       type: none
       o: bind
-      device: /srv/mongo/data_preprod  # 👉 Dossier réel du serveur pour la persistance
+      device: /srv/mongo/data_preprod
   mongo_backups_preprod:
-    # Un volume Docker standard au lieu d'un dossier bindé
     driver: local
 
 services:
@@ -34,24 +33,31 @@ services:
       - traefik.http.routers.express_preprod.tls.certresolver=myresolver
     depends_on:
       - database_preprod
+    environment:
+      # Variables pour connecter à MongoDB avec authentification
+      - MONGODB_URI=mongodb://admin:azerty10@database_preprod:27017/mean-fatboar-db?authSource=admin
     restart: always
 
   database_preprod:
     image: mongo:4.4.6
-    ports:
-      - "27017:27017"
+    # ❌ SUPPRIMER l'exposition du port 27017
+    # ports:
+    #   - "27017:27017"
     volumes:
       - ./backup:/backup
-      - mongo_data_preprod:/data/db  # 👉 volume bindé vers /srv/mongo/data_preprod
-    labels:
-      - traefik.enable=true
-      - traefik.http.routers.database_preprod.rule=Host(`mongodb-preprod.foodgame.fr`)
-      - traefik.http.services.database_preprod.loadbalancer.server.port=27017
-      - traefik.http.routers.database_preprod.entrypoints=websecure
-      - traefik.http.routers.database_preprod.tls.certresolver=myresolver
+      - mongo_data_preprod:/data/db
+    environment:
+      # ✅ AJOUTER l'authentification MongoDB
+      - MONGO_INITDB_ROOT_USERNAME=admin
+      - MONGO_INITDB_ROOT_PASSWORD=azerty10
+      - MONGO_INITDB_DATABASE=mean-fatboar-db
+    # ❌ SUPPRIMER tous les labels Traefik
+    # labels:
+    #   - traefik.enable=true
+    #   - traefik.http.routers.database_preprod.rule=Host(`mongodb-preprod.foodgame.fr`)
     networks:
-      - web
-      - private
+      # ❌ SUPPRIMER le réseau 'web'
+      - private  # Seulement le réseau privé
     restart: always
 
   mongodb-backup-preprod:
@@ -60,32 +66,21 @@ services:
     volumes:
       - mongo_backups_preprod:/backup
     environment:
-      # Configuration de la connexion MongoDB - simplifiée
       - MONGODB_HOST=database_preprod
       - MONGODB_PORT=27017
-      # Ne pas spécifier d'authentification si la base n'en utilise pas
-      
-      # Configuration des sauvegardes
+      # ✅ AJOUTER l'authentification pour les sauvegardes
+      - MONGODB_USER=admin
+      - MONGODB_PASS=azerty10
+      - MONGODB_AUTHENTICATION_DATABASE=admin
       - BACKUP_LOCATION=/backup
       - BACKUP_COMPRESSION=GZIP
       - BACKUP_SPLIT_DB=TRUE
       - BACKUP_BEGIN=TRUE
-      # Ne pas spécifier BACKUP_NAME si la base n'existe pas encore
-      
-      # Planification des sauvegardes (format CRON)
       - SCHEDULE=*/30 * * * *
-      
-      # Rotation des sauvegardes
       - BACKUP_RETAIN_DAYS=7
       - BACKUP_CLEANUP_TIME=0430
-      
-      # Notifications
       - NOTIFICATION_TYPE=none
-      
-      # Mode debug pour voir plus d'informations
       - DEBUG_MODE=TRUE
-      
-      # Autres options
       - CONTAINER_ENABLE_MONITORING=TRUE
       - CONTAINER_NAME=mongodb-backup-preprod
     depends_on:

+ 10 - 15
express-server/lib/db.js

@@ -1,32 +1,27 @@
 const mongoose = require('mongoose');
 
-// URL de connexion à la base de données
-const db = 'mongodb://database_preprod:27017/mean-fatboar-db';
+// Chaîne de connexion avec authentification (identifiants en clair)
+const db = 'mongodb://admin:azerty10@database_preprod:27017/mean-fatboar-db?authSource=admin';
 
-// Options de connexion améliorées
 const options = {
   useNewUrlParser: true, 
   useUnifiedTopology: true,
-  serverSelectionTimeoutMS: 5000,  // Timeout avant échec de connexion
-  socketTimeoutMS: 45000,         // Ferme les sockets après 45 secondes d'inactivité
-  keepAlive: true,                // Garde la connexion active
-  keepAliveInitialDelay: 300000,  // Ping tous les 5 minutes (300000 ms)
-  autoIndex: true,                // Construit les index automatiquement
-  retryWrites: true,              // Réessaie les opérations d'écriture échouées
-  // autoCreate: true,               // Crée automatiquement la collection si elle n'existe pas
+  serverSelectionTimeoutMS: 5000,
+  socketTimeoutMS: 45000,
+  keepAlive: true,
+  keepAliveInitialDelay: 300000,
+  autoIndex: true,
+  retryWrites: true,
 };
 
-// Fonction initiale de connexion
 mongoose.connect(db, options)
   .then(() => {
     console.log("Successfully connected to the database.");
-    // Créer une collection par défaut pour s'assurer que la base reste existante
     mongoose.connection.db.createCollection("app_status", function(err, res) {
       if (err) {
         console.log("Collection déjà existante, ignoré.");
       } else {
         console.log("Collection app_status créée pour maintenir la base de données active.");
-        // Insérer un document pour s'assurer que la collection ne soit pas vide
         mongoose.connection.db.collection("app_status").updateOne(
           { name: "system_status" },
           { $set: { name: "system_status", lastChecked: new Date(), status: "active" } },
@@ -50,10 +45,9 @@ mongoose.connection.on('disconnected', () => {
     mongoose.connect(db, options).catch(err => {
       console.log("Reconnection failed: ", err);
     });
-  }, 5000); // Réessayer après 5 secondes
+  }, 5000);
 });
 
-// Intercepter les signaux d'arrêt pour fermer proprement la connexion
 process.on('SIGINT', () => {
   mongoose.connection.close(() => {
     console.log('Mongoose connection closed due to app termination');
@@ -63,6 +57,7 @@ process.on('SIGINT', () => {
 
 module.exports = mongoose.connection;
 
+
 // let min = 999999999;
 // let max = 10000000000;
 // for (i = 0; i < 50000; i++) {