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 LLMrestore.sh: restaure depuis une sauvegarde créée parbackup.sh
Scripts supplémentaires pour simplifier l'usage:
install.sh: prépare les dossiers et pré-télécharge les images Docker (option--aptpour installer dépendances sur Debian/Ubuntu)launch.sh: lance la stack complète et affiche les URLs utiles
- 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
docker-compose.yml: composition des servicesn8n_data/: volume bind pour la config/données n8nmodels/: répertoire local des modèles LLM (monté dans Ollama)pgadmin_data/: données pgAdminbackup.sh: script de backuprestore.sh: script de restaurationinstall.sh: préparation des dépendances/images et dossierslaunch.sh: démarrage guidé de la stack
- Ouvrir un terminal dans ce dossier.
- (Optionnel) Préparer l'environnement et pré-télécharger les images:
./install.sh # ou ./install.sh --apt (Debian/Ubuntu)- Lancer les services:
./launch.sh- Accès:
- n8n:
http://localhost:5678(auth basique activée viaN8N_BASIC_AUTH_*) - pgAdmin:
http://localhost:5050 - Ollama (API):
http://localhost:11434
Identifiants par défaut (définis dans docker-compose.yml):
- Postgres: user
n8n, passwordsupersecret, basen8n - n8n basic auth:
admin/supersecret - pgAdmin:
admin@example.com/admin
Arrêt des services:
docker compose downAprè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 llama3Vous 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).
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 disponibleAstuce: 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.
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-modelNotes:
- 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 dansbackup.sh. - L'archive
n8n_data.tar.gzest générée via un conteneurbusyboxpour garantir la cohérence des chemins et permissions.
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-00Ce que fait la restauration:
- Import du dump SQL dans Postgres
- Remise en place de
n8n_data(suppression puis extraction den8n_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 -davant de restaurer.
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.
POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB: accès PostgresDB_*pour n8n: hôte, port, base, user, mot de passeN8N_BASIC_AUTH_*: protège l'interface n8nN8N_HOST,N8N_PORT,WEBHOOK_URL: configuration n8n
Adaptez ces valeurs à vos besoins avant de déployer en production.
- Droits d'exécution des scripts sous Windows:
- Utilisez Git Bash/WSL ou exécutez:
chmod +x backup.sh restore.sh
- Utilisez Git Bash/WSL ou exécutez:
- Noms de conteneurs différents:
- Si Compose crée des noms non attendus, ajustez les commandes
docker execdansbackup.sh/restore.sh(ex:dev-postgres-1).
- Si Compose crée des noms non attendus, ajustez les commandes
- Espace disque:
- Vérifiez la place disponible avant les backups (données
n8n_dataetmodelspeuvent être lourdes).
- Vérifiez la place disponible avant les backups (données
- Ports déjà utilisés:
- Modifiez les mappages de ports dans
docker-compose.ymlsi 5678/5050/11434 sont occupés.
- Modifiez les mappages de ports dans
# 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