Guide d’ajout de MongoDB et Mongo Express à une installation n8n existante via Docker

Ce document détaille la procédure pour ajouter une base de données MongoDB et une interface d’administration web (Mongo Express) à une stack Docker existante où n8n est déjà opérationnel. L’accès à Mongo Express sera restreint au serveur local pour des raisons de sécurité.

Cette intégration suppose une instance n8n opérationnelle.

2. Prérequis

3. Fichiers de Configuration

La procédure consiste à créer un fichier .env pour les identifiants et à modifier votre docker-compose.yml existant.

3.1. Fichier d’Environnement (.env)

Si vous n’en avez pas déjà un, créez ce fichier dans le même répertoire que votre docker-compose.yml.

# // .env
# // Variables d'environnement pour le service MongoDB.

# Identifiants pour l'utilisateur root de MongoDB.
MONGO_ROOT_USER=votre_utilisateur_mongo
MONGO_ROOT_PASSWORD=votre_mot_de_passe_securise

3.2. Modification du Fichier Docker Compose (docker-compose.yml)

Vous devez apporter trois modifications à votre fichier docker-compose.yml existant.

A. Modifier le service n8n existant : Ajoutez les directives networks et depends_on pour que n8n puisse communiquer avec le nouveau réseau de la base de données.

# // Extrait du docker-compose.yml - Modification du service n8n

services:
  n8n:
    # ... votre configuration n8n existante ...
    networks:
      - traefik_proxy   # Conserve son réseau public
      - internal_db_net # AJOUT : Connexion au nouveau réseau interne
    depends_on:
      - mongodb         # AJOUT : S'assure que mongodb démarre avant n8n

B. Ajouter les nouveaux services mongodb et mongo-express : Collez ces deux nouveaux services à la suite de votre service n8n, au même niveau d’indentation.

# // Extrait du docker-compose.yml - Ajout des nouveaux services

  mongodb:
    image: mongo:latest
    container_name: mongodb
    restart: always
    env_file: .env
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
    volumes:
      - mongodb_data:/data/db
    networks:
      - internal_db_net # Isolé sur le réseau interne

  mongo-express:
    image: mongo-express:latest
    container_name: mongo-express
    restart: always
    env_file: .env
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
      - ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
      - ME_CONFIG_MONGODB_SERVER=mongodb
    ports:
      # Map le port interne 8081 à un port libre sur le serveur (ex: 9091).
      - "9091:8081"
    networks:
      - internal_db_net # Isolé sur le réseau interne
    depends_on:
      - mongodb

C. Déclarer les volumes et le nouveau réseau : À la fin du fichier, assurez-vous que les volumes et les réseaux sont correctement déclarés.

# // Extrait du docker-compose.yml - Déclaration des volumes et réseaux

volumes:
  n8n_data:
    external: true
  mongodb_data: {} # AJOUT : Nouveau volume pour les données MongoDB

networks:
  traefik_proxy:
    external: true
  internal_db_net: # AJOUT : Nouveau réseau interne
    driver: bridge

4. Procédure de Mise à Jour

  1. Sauvegarder les modifications de votre fichier docker-compose.yml.
  2. Appliquer la nouvelle configuration. Docker va créer les nouveaux services et recréer le service n8n pour l’ajouter au nouveau réseau.docker compose up -d --force-recreate

5. Accès à l’Interface d’Administration Mongo Express

L’accès à l’interface se fait via un tunnel SSH pour garantir que le trafic ne quitte pas un canal sécurisé.

  1. Créer le tunnel SSH. Exécutez cette commande depuis votre machine locale (pas le serveur), en remplaçant l’IP et le port si vous l’avez modifié.
    ssh -L 9091:localhost:9091 root@<IP_PUBLIQUE_DU_SERVEUR>
  2. Laissez cette session SSH active. Le tunnel se fermera si vous la terminez.
  3. Accéder à l’interface. Ouvrez un navigateur web sur votre machine locale et allez à l’URL suivante : http://localhost:9091
  4. Se connecter. Mongo Express expose des identifiants par défaut (admin:pass). Pour un accès local via tunnel SSH, leur utilisation est acceptable. Il est néanmoins recommandé d’utiliser les identifiants définis dans le fichier .env(MONGO_ROOT_USER et MONGO_ROOT_PASSWORD).

6. Configuration de la Connexion dans n8n

  1. Créer les « Credentials ».
    • Dans l’interface n8n, allez à Credentials > Add credential.
    • Recherchez et sélectionnez Mongo DB.
    • Remplissez les champs comme suit :
      • Hostmongodb (le nom du service Docker)
      • Databaseadmin (utilisé uniquement pour valider la connexion initiale)
      • User: La valeur de MONGO_ROOT_USER de votre fichier .env.
      • Password: La valeur de MONGO_ROOT_PASSWORD de votre fichier .env.
  2. Utiliser une base de données spécifique dans un workflow.
    • Dans un nœud MongoDB (ex: « Insert documents »), spécifiez la base de données et la collection dans le champ Collection en utilisant la syntaxe nom_de_la_base.nom_de_la_collection.
    • Exemple : base_de_cache.resultats_api

Publications similaires