n8n en cloud coûte un abonnement mensuel et te fait passer tes données chez un tiers. Sur ton propre VPS, tu payes le serveur et rien d'autre, et les workflows restent chez toi. Ce guide couvre l'installation complète, y compris les deux parties que la plupart des tutoriels sautent : le HTTPS et les sauvegardes.
Ce qu'il te faut
- Un VPS avec 2 Go de RAM minimum. En dessous, n8n tient mais un workflow un peu lourd fait tomber le conteneur.
- Un nom de domaine ou un sous-domaine pointé sur l'IP du serveur.
- Docker et Docker Compose installés.
- Un accès SSH avec une clé, pas un mot de passe.
Le docker-compose
Caddy s'occupe du certificat TLS tout seul, ce qui évite la partie la plus pénible de l'installation. Crée un fichier docker-compose.yml :
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.ton-domaine.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.ton-domaine.com/
- GENERIC_TIMEZONE=Europe/Paris
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
volumes:
- ./data:/home/node/.n8n
expose:
- 5678
caddy:
image: caddy:alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy-data:/dataPuis un Caddyfile de trois lignes :
n8n.ton-domaine.com {
reverse_proxy n8n:5678
}Démarrer et vérifier
export N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
echo "N8N_ENCRYPTION_KEY=$N8N_ENCRYPTION_KEY" > .env
docker compose up -d
docker compose logs -f n8nLe certificat est émis dans la minute qui suit le premier appel HTTPS. Si Caddy boucle sur une erreur de challenge, c'est presque toujours que le DNS n'a pas encore propagé ou que le port 80 est fermé au pare-feu.
Sauvegarder, vraiment
Le dossier data contient la base SQLite, les credentials chiffrés et l'historique des exécutions. C'est tout ton système. Un cron quotidien qui l'envoie hors du serveur suffit :
0 4 * * * cd /opt/n8n && tar czf /tmp/n8n-$(date +\%F).tar.gz data && \
rclone copy /tmp/n8n-$(date +\%F).tar.gz remote:backups/n8n/ && \
rm -f /tmp/n8n-$(date +\%F).tar.gzMettre à jour
docker compose pull
docker compose up -dFais la sauvegarde avant, pas après. Les migrations de schéma de n8n ne sont pas réversibles.