Présentation de n8n
n8n est un outil d'automatisation de workflows en mode visuel. Vous reliez des nœuds (webhooks, requêtes HTTP, bases de données, e-mail, services SaaS) sur un canevas, et vous insérez du code JavaScript ou Python quand un nœud ne suffit pas. Auto-hébergé, il garde vos données et vos identifiants sur votre propre machine plutôt que chez un tiers.
À la livraison, le script de la recette installe Docker s'il est absent, puis démarre deux conteneurs avec Docker Compose depuis /opt/n8n : n8n (image docker.n8n.io/n8nio/n8n:latest) et Caddy 2. n8n n'écoute que sur 127.0.0.1:5678. Caddy, en mode réseau hôte, publie le service en HTTPS sur le port 443 et le relaie vers n8n.
Le certificat est auto-signé (directive tls internal de Caddy) et lié à l'adresse IP publique du serveur. Votre navigateur affichera donc un avertissement à la première visite, ce qui est normal tant qu'aucun nom de domaine n'est associé. Les données de n8n sont conservées dans un volume Docker (n8n_data) et le fuseau horaire est réglé sur Europe/Paris.
Ce que vous pouvez faire avec n8n
Éditeur de workflows visuel
Vous assemblez déclencheurs, conditions et actions sur un canevas. Chaque exécution peut être inspectée nœud par nœud, ce qui facilite beaucoup le débogage.
Webhooks et appels HTTP
Un workflow peut démarrer sur une requête entrante ou interroger n'importe quelle API REST. Le serveur est déjà configuré pour construire ses URL de webhook en HTTPS.
Code JavaScript ou Python
Un nœud Code permet de transformer des données ou d'écrire une logique que les nœuds standard ne couvrent pas, sans quitter le workflow.
Données sur votre serveur
Workflows, identifiants et historique d'exécution restent dans le volume Docker
n8n_datade votre VPS, hébergé à Paris ou Francfort.HTTPS via Caddy dès le départ
n8n reste lié à
127.0.0.1et seul Caddy est exposé sur le port 443. Le passage à un vrai certificat se résume à modifier un fichier.Démarrage automatique
Les deux conteneurs sont déclarés avec
restart: always. Après un redémarrage du serveur, n8n et Caddy repartent sans intervention.
Démarrer avec n8n
De la commande à la mise en production, en quelques minutes.
- 1
Commander le VPS avec n8n
Choisissez un VPS Linux à Paris ou Francfort, puis cochez n8n dans l'onglet « Applications » du formulaire de commande. Debian 12, Debian 13, Ubuntu 20.04, 22.04 et 24.04 sont proposés.
- 2
Attendre la livraison et vérifier
Le script s'exécute au premier démarrage : il installe Docker puis lance les conteneurs, ce qui prend quelques minutes. Connectez-vous en SSH avec les accès de livraison et vérifiez que n8n et Caddy tournent.
Bashcd /opt/n8n && docker compose ps - 3
Créer le compte propriétaire
Ouvrez https://SERVER_IP dans votre navigateur et acceptez l'avertissement lié au certificat auto-signé. n8n vous demande de créer le compte propriétaire : c'est ce compte qui administre l'instance.
- 4
Passer sur un domaine en HTTPS
Créez un enregistrement DNS A de YOUR_DOMAIN vers SERVER_IP, puis remplacez le Caddyfile et les variables n8n. Caddy obtient alors un certificat reconnu automatiquement, à condition que les ports 80 et 443 soient joignables.
Bashcd /opt/n8n cat > Caddyfile <<'EOF' YOUR_DOMAIN { reverse_proxy 127.0.0.1:5678 } EOF sed -i 's|N8N_HOST=.*|N8N_HOST=YOUR_DOMAIN|; s|WEBHOOK_URL=.*|WEBHOOK_URL=https://YOUR_DOMAIN/|' docker-compose.yml docker compose up -d docker compose restart caddy
Cas d’usage de n8n
Synchroniser vos outils métier
Un nouveau lead dans un formulaire crée une fiche dans votre CRM, envoie un e-mail de confirmation et prévient l'équipe sur une messagerie. Le tout tient dans un seul workflow.
Traiter des webhooks entrants
Paiements, dépôts Git ou alertes de supervision peuvent déclencher des workflows qui filtrent, enrichissent et redistribuent les événements. Cela suppose un nom de domaine avec certificat valide, car la plupart des services refusent un certificat auto-signé.
Automatiser des tâches planifiées
Exports de base de données, rapports hebdomadaires, nettoyage de données : un déclencheur cron remplace les scripts dispersés sur plusieurs machines.
Brancher des modèles d'IA
n8n sait appeler des API de modèles de langage depuis un workflow, par exemple pour classer des tickets ou résumer des e-mails avant de les router vers la bonne personne.
Questions fréquentes sur n8n
Le certificat est généré par Caddy (tls internal) pour l'adresse IP du serveur : aucune autorité publique ne peut en émettre pour une IP dans cette configuration. Le chiffrement est actif, mais le certificat n'est pas reconnu. Associez un nom de domaine et Caddy obtiendra un certificat valide.
En savoir plus sur n8n
Fichiers installés
Tout se trouve dans /opt/n8n : le script install-n8n.sh, le fichier docker-compose.yml et le Caddyfile. Trois volumes Docker sont créés : n8n_data (données n8n, dont la clé de chiffrement des identifiants), caddy_data et caddy_config.
Les variables N8N_HOST et WEBHOOK_URL contiennent l'adresse IP publique détectée à l'installation. Si vous changez d'adresse ou de domaine, mettez-les à jour, sinon les URL de webhook affichées dans l'interface seront fausses.
Pare-feu
n8n n'est pas exposé directement, mais le port 443 est ouvert par Caddy. Limitez le reste : SSH, 80 (nécessaire à l'émission du certificat Let's Encrypt) et 443 suffisent.
Bashufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable
Autorisez SSH avant d'activer le pare-feu, sinon vous perdez votre session.
Sauvegardes
L'essentiel est dans le volume des données n8n. Docker Compose préfixe son nom avec celui du dossier du projet : vérifiez-le avec docker volume ls (il s'appelle normalement n8n_n8n_data), puis archivez-le.
Bashdocker run --rm -v n8n_n8n_data:/data -v /root:/backup alpine \ tar czf /backup/n8n-data-$(date +%F).tar.gz -C /data .
Copiez l'archive hors du serveur. Sans la clé de chiffrement contenue dans ce volume, les identifiants enregistrés dans n8n ne sont pas récupérables.
Mises à jour
Le fichier Compose utilise le tag latest. Pour mettre à jour :
Bashcd /opt/n8n docker compose pull docker compose up -d
Faites une sauvegarde avant. Pour une instance de production, vous pouvez remplacer latest par un numéro de version précis dans docker-compose.yml et monter de version quand vous l'avez décidé, après lecture des notes de version.
