Skip to content

fabienquimper/n8n_utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Environnement n8n + Postgres + LLM (dev)

Ce projet est un environnement d'automatisation orienté IA: il combine n8n pour orchestrer des tâches/flux, Postgres pour le stockage, pgAdmin pour l'administration, et un modèle de langage local (llama3) exécuté via Ollama avec prise en charge GPU lorsqu'elle est disponible. L'objectif est de permettre la création de workflows d'intelligence artificielle reproductibles et souverains, sans dépendance à un service cloud externe pour l'inférence.

Ce dossier contient une stack Docker pour un environnement de développement avec:

  • n8n (automatisation)
  • Postgres (base de données)
  • pgAdmin (administration Postgres)
  • Serveur LLM local (Ollama)

Deux scripts sont fournis pour la sauvegarde et la restauration:

  • backup.sh: crée une sauvegarde de la base, des données n8n et des modèles LLM
  • restore.sh: restaure depuis une sauvegarde créée par backup.sh

Scripts supplémentaires pour simplifier l'usage:

  • install.sh: prépare les dossiers et pré-télécharge les images Docker (option --apt pour installer dépendances sur Debian/Ubuntu)
  • launch.sh: lance la stack complète et affiche les URLs utiles

Prérequis

  • Docker Desktop et Docker Compose
  • Bash (sous Windows, utiliser Git Bash ou WSL pour exécuter *.sh)
  • Espace disque suffisant pour stocker les volumes et backups

Structure

  • docker-compose.yml: composition des services
  • n8n_data/: volume bind pour la config/données n8n
  • models/: répertoire local des modèles LLM (monté dans Ollama)
  • pgadmin_data/: données pgAdmin
  • backup.sh: script de backup
  • restore.sh: script de restauration
  • install.sh: préparation des dépendances/images et dossiers
  • launch.sh: démarrage guidé de la stack

Installation & démarrage

  1. Ouvrir un terminal dans ce dossier.
  2. (Optionnel) Préparer l'environnement et pré-télécharger les images:
./install.sh        # ou ./install.sh --apt (Debian/Ubuntu)
  1. Lancer les services:
./launch.sh
  1. Accès:
  • n8n: http://localhost:5678 (auth basique activée via N8N_BASIC_AUTH_*)
  • pgAdmin: http://localhost:5050
  • Ollama (API): http://localhost:11434

Identifiants par défaut (définis dans docker-compose.yml):

  • Postgres: user n8n, password supersecret, base n8n
  • n8n basic auth: admin / supersecret
  • pgAdmin: admin@example.com / admin

Arrêt des services:

docker compose down

LLM local (Ollama) — installation initiale du modèle

Après le premier démarrage, installez le modèle llama3 à l'intérieur du conteneur LLM:

docker exec -it dev-llm-1 bash
ollama pull llama3

# Vérifier la présence
ollama list

# (Optionnel) test rapide en REPL
ollama run llama3

Vous pouvez également interroger l'API depuis l'hôte une fois le modèle installé:

curl -X POST http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3",
    "messages": [
      {"role": "user", "content": "Bonjour, quel est la capitale de l'Île Maurice ?"}
    ]
  }'

Note: L'accès GPU est activé via la configuration Docker (voir section GPU plus bas). Si aucun GPU n'est disponible, Ollama exécutera le modèle sur CPU (plus lent).


Mettre à jour le modèle LLM

Pour récupérer la dernière version disponible du modèle llama3 (mise à jour ou correctifs), relancez un pull dans le conteneur LLM:

docker exec -it dev-llm-1 bash
ollama pull llama3    # met à jour si une version plus récente est disponible

Astuce: si vous utilisez des variantes (quantizations, tags), spécifiez le tag voulu, par ex. ollama pull llama3:latest ou ollama pull llama3:Q4_K_M selon vos besoins.


Sauvegarde (backup)

Le script backup.sh exporte:

  • Dump SQL Postgres (n8n_db.sql)
  • Archive du volume n8n_data (n8n_data.tar.gz)
  • Copie du répertoire des modèles LLM dans un sous-dossier models/ — optionnelle

Chaque exécution crée un dossier backup_YYYY-MM-DD_HH-MM-SS dans le répertoire courant.

Usage:

# Sauvegarde complète (base + n8n_data + modèles LLM)
./backup.sh

# Sauvegarde sans les modèles LLM (plus rapide et léger)
./backup.sh --no-model

Notes:

  • Le dump Postgres s'appuie sur le conteneur nommé par Compose (ex: dev-postgres-1). Si votre projet a un autre nom, adaptez la commande dans backup.sh.
  • L'archive n8n_data.tar.gz est générée via un conteneur busybox pour garantir la cohérence des chemins et permissions.

Restauration (restore)

Le script restore.sh restaure un backup précédemment créé.

Usage:

./restore.sh <chemin_du_dossier_backup>

# Exemple
./restore.sh ./backup_2025-10-06_00-30-00

Ce que fait la restauration:

  • Import du dump SQL dans Postgres
  • Remise en place de n8n_data (suppression puis extraction de n8n_data.tar.gz)
  • Remise en place des modèles LLM depuis le sous-dossier models/ (si présent dans le backup)

Prérequis:

  • Les services doivent être démarrés (au minimum Postgres et, pour n8n_data/models, les répertoires mappés doivent exister). Recommandation: lancez docker compose up -d avant de restaurer.

GPU et LLM

La section llm de docker-compose.yml réserve un périphérique GPU:

deploy:
  resources:
    reservations:
      devices:
        - capabilities: [gpu]

Selon votre environnement (Windows, WSL2, pilotes, Docker), l'accès GPU peut nécessiter une configuration spécifique. Si vous n'avez pas de GPU ou ne souhaitez pas l'utiliser, supprimez ce bloc.

Les modèles Ollama sont stockés dans ./models (bind sur /root/.ollama). Ils peuvent être volumineux; la sauvegarde (copie) peut prendre du temps et de l'espace.


Variables importantes (extrait docker-compose.yml)

  • POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB: accès Postgres
  • DB_* pour n8n: hôte, port, base, user, mot de passe
  • N8N_BASIC_AUTH_*: protège l'interface n8n
  • N8N_HOST, N8N_PORT, WEBHOOK_URL: configuration n8n

Adaptez ces valeurs à vos besoins avant de déployer en production.


Dépannage

  • Droits d'exécution des scripts sous Windows:
    • Utilisez Git Bash/WSL ou exécutez: chmod +x backup.sh restore.sh
  • Noms de conteneurs différents:
    • Si Compose crée des noms non attendus, ajustez les commandes docker exec dans backup.sh/restore.sh (ex: dev-postgres-1).
  • Espace disque:
    • Vérifiez la place disponible avant les backups (données n8n_data et models peuvent être lourdes).
  • Ports déjà utilisés:
    • Modifiez les mappages de ports dans docker-compose.yml si 5678/5050/11434 sont occupés.

Commandes utiles

# Voir l'état des services
docker compose ps

# Logs (ex: n8n)
docker compose logs -f n8n

# Redémarrer un service (ex: postgres)
docker compose restart postgres

About

Environnement d’automatisation IA prêt à l’emploi: n8n pour orchestrer des workflows, Postgres/pgAdmin pour les données, et un LLM local (llama3 via Ollama) avec support GPU. Démarrage rapide, sauvegarde/restauration intégrées, souveraineté des données, sans dépendance cloud.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages