Installer n8n sur un VPS : le guide sans raccourci

Docker, reverse proxy, HTTPS, sauvegardes et mise à jour. L'installation complète de n8n sur ton propre serveur, sans abonnement.

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:/data

Puis 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 n8n

Le 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.gz

Mettre à jour

docker compose pull
docker compose up -d

Fais la sauvegarde avant, pas après. Les migrations de schéma de n8n ne sont pas réversibles.

Quel VPS pour n8n ?
2 Go de RAM et 2 vCPU couvrent confortablement un usage personnel avec des dizaines de workflows. Le disque compte plus que le CPU : l'historique d'exécution grossit vite si tu ne le purges pas.
Faut-il PostgreSQL plutôt que SQLite ?
Pas pour commencer. SQLite tient sans problème un usage solo. Passe à PostgreSQL quand tu as des exécutions concurrentes lourdes ou plusieurs instances.
Comment sécuriser l'accès ?
HTTPS obligatoire, authentification activée, et idéalement une restriction par IP ou un tunnel. L'interface n8n donne accès à tous tes credentials connectés.

Récupère tes skills gratuits