Objectif
Déployer la plateforme N8N pour créer des workflows d'automatisation (intégration d'APIs, traitement de données, notifications) avec une interface visuelle no-code/low-code.
Prérequis
- Serveur Linux Debian/Ubuntu
- Docker installé
- 2 Go RAM minimum
- Accès Internet
Qu'est-ce que N8N ?
N8N (prononcé "n-eight-n") est une plateforme open-source d'automatisation de workflows. Alternative à Zapier, Integromat (Make) ou Microsoft Power Automate, elle permet de connecter des services via des "nodes" (nœuds) sans écrire de code.
Cas d'usage
- Synchronisation de données entre outils (GLPI → Nextcloud)
- Notifications automatiques (Slack, Discord, Email)
- Traitement de fichiers (CSV, JSON, images)
- Surveillance d'APIs et webhooks
- Automatisation de tâches IT (backup, monitoring)
Installation via Docker
Étape 1 : Installation de Docker
sudo apt update sudo apt install docker.io docker-compose -y # Activer Docker au boot sudo systemctl enable docker sudo systemctl start docker # Vérification docker --version
Étape 2 : Lancement de N8N en mode simple
docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n
Info : N8N sera accessible sur http://ip_serveur:5678
Étape 3 : Installation avec Docker Compose (production)
Créer un répertoire de travail :
mkdir ~/n8n-docker cd ~/n8n-docker
Créer le fichier docker-compose.yml :
nano docker-compose.yml
Contenu :
version: '3.8' services: n8n: image: n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - "5678:5678" environment: - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=MotDePasseSecurise123 - N8N_HOST=192.168.1.100 - N8N_PORT=5678 - N8N_PROTOCOL=http - WEBHOOK_URL=http://192.168.1.100:5678/ volumes: - ./n8n_data:/home/node/.n8n
Important : Remplacer 192.168.1.100 par l'IP réelle de votre serveur et MotDePasseSecurise123 par un mot de passe fort.
Étape 4 : Lancement
# Démarrer N8N docker-compose up -d # Vérifier les logs docker-compose logs -f n8n
Accès à l'Interface Web
- Ouvrir un navigateur
- Aller sur http://192.168.1.100:5678
- Connexion avec :
- Utilisateur : admin
- Mot de passe : MotDePasseSecurise123
Exemple de Workflow Simple
Scénario : Notification Discord lors d'un nouvel utilisateur GLPI
Étape 1 : Créer un nouveau workflow
- Cliquer sur "New Workflow"
- Donner un nom : "GLPI → Discord"
Étape 2 : Ajouter un trigger Webhook
- Cliquer sur "+"
- Chercher "Webhook"
- Sélectionner "Webhook"
- Méthode HTTP : POST
- Path : /glpi-user
- Copier l'URL générée (ex: http://192.168.1.100:5678/webhook/glpi-user)
Étape 3 : Ajouter une action Discord
- Cliquer sur "+" après Webhook
- Chercher "Discord"
- Sélectionner "Discord"
- Authentification : créer un webhook Discord :
- Discord → Paramètres salon → Intégrations → Webhooks
- Créer un webhook, copier l'URL
- Webhook URL : coller l'URL Discord
- Message : utiliser les variables du webhook GLPI
Nouvel utilisateur créé : {{ $json["name"] }} - Email : {{ $json["email"] }}
Étape 4 : Activer le workflow
- Cliquer sur "Save"
- Activer le toggle "Active" en haut à droite
Étape 5 : Tester
Depuis un terminal :
curl -X POST http://192.168.1.100:5678/webhook/glpi-user \
-H "Content-Type: application/json" \
-d '{"name":"Jean Dupont","email":"[email protected]"}'
Vérifier la réception du message sur Discord.
Sécurisation avec HTTPS
Avec Nginx Reverse Proxy
sudo apt install nginx certbot python3-certbot-nginx -y
Créer le fichier /etc/nginx/sites-available/n8n :
server {
listen 80;
server_name n8n.grp3.local;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# Certificat SSL Let's Encrypt
sudo certbot --nginx -d n8n.grp3.local
Modifier docker-compose.yml :
environment: - N8N_PROTOCOL=https - N8N_HOST=n8n.grp3.local - WEBHOOK_URL=https://n8n.grp3.local/
docker-compose down docker-compose up -d
Commandes Utiles
Gestion du conteneur
# Voir les logs en temps réel docker-compose logs -f n8n # Redémarrer docker-compose restart n8n # Arrêter docker-compose down # Mise à jour de N8N docker-compose pull docker-compose up -d
Backup des workflows
# Les workflows sont dans SQLite
sudo cp -r ~/n8n-docker/n8n_data ~/backup_n8n_$(date +%Y%m%d)
Nodes Populaires
- HTTP Request : Appels d'APIs REST
- Webhook : Trigger via URL
- Cron : Planification de tâches
- Email (IMAP/SMTP) : Envoi/réception d'emails
- MySQL / PostgreSQL : Requêtes SQL
- Discord / Slack : Notifications
- File System : Lecture/écriture de fichiers
- SSH : Exécution de commandes distantes
- Code (JavaScript) : Logique personnalisée
Points Clés pour l'Oral BTS
- N8N : plateforme d'automatisation open-source (alternative à Zapier)
- Node-based : workflows créés par assemblage de "nodes"
- Docker : déploiement simple et portable
- Webhook : trigger HTTP pour déclencher workflows
- Low-code : interfaces visuelles + code JavaScript si besoin
- Self-hosted : contrôle total des données (vs SaaS)
- Intégrations : 350+ services supportés (APIs, bases de données, messageries)
- Cron : exécution planifiée de workflows
- Variables : transfert de données entre nodes via {{ $json["key"] }}
- Basic Auth : protection par mot de passe (à améliorer en production)
Limite BTS :
N8N présenté ici est configuré en HTTP avec Basic Auth. En production, imposer HTTPS + authentification OAuth2/SAML + isolation réseau.
N8N présenté ici est configuré en HTTP avec Basic Auth. En production, imposer HTTPS + authentification OAuth2/SAML + isolation réseau.