ACLClouds
ACLClouds

Comment installer n8n sur mon VPS ?

Déployer n8n avec Docker Compose, stockage persistant et variables adaptées au domaine. La solution n8n préconfigurée est disponible sans supplément.

La solution n8n préconfigurée est disponible sans supplément. Sélectionnez-la dans la commande pour automatiser l’installation, ou utilisez ce guide pour une configuration manuelle sous Debian.

Procédure étape par étape

  1. Choisir le mode de déploiement

    Sélectionnez n8n préconfiguré pour une installation automatique, ou choisissez un VPS Linux avec assez de RAM pour une installation manuelle.

  2. Installer Docker

    Suivez le guide Docker et vérifiez docker compose version.

  3. Créer le projet

    Créez /opt/n8n, ajoutez le fichier Compose puis remplacez le domaine et le fuseau horaire.

  4. Démarrer

    Lancez docker compose up -d et contrôlez les logs avec docker compose logs -f n8n.

  5. Ajouter HTTPS

    Placez Caddy ou Nginx devant le port 5678 et n’exposez pas directement l’interface n8n en HTTP public.

compose.yaml

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Europe/Paris
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:

Mettre à jour n8n

cd /opt/n8n
docker compose pull
docker compose up -d
docker image prune -f

Avant de commencer

n8n range ses workflows, ses identifiants chiffrés et sa clé de chiffrement dans /home/node/.n8n, monté ici sur le volume n8n_data. Sans ce volume, tout disparaît à la recréation du conteneur.

  • Un VPS Linux avec au moins 2 Go de RAM, le minimum demandé par l’application n8n préconfigurée.
  • Un domaine dont vous gérez le DNS, avec un enregistrement A vers l’IPv4 du VPS, pour obtenir HTTPS.
  • Le port publié sur 127.0.0.1:5678 uniquement, comme dans le fichier Compose : seul le proxy inverse y accède.

L’installation préconfigurée en détail

L’application n8n préconfigurée part d’une Debian 12. Elle demande l’e-mail et le mot de passe du propriétaire n8n (8 caractères minimum), un domaine optionnel, le port (5678 par défaut) et le fuseau horaire (Europe/Paris par défaut). Si vous laissez le domaine vide, un sous-domaine gratuit en aclclouds.online est créé avec HTTPS automatique.

Le script installe Docker, lance un conteneur nommé n8n sur le volume n8n_data et configure Caddy dans /etc/caddy/Caddyfile. Le compte propriétaire est déjà créé : connectez-vous avec l’e-mail et le mot de passe saisis. Sur un VPS existant, cette application se choisit dans « Réinstallations », option « Application préconfigurée », ce qui efface le disque.

Vérifier que tout fonctionne

docker compose ps doit montrer le service n8n avec un statut Up, et curl -s http://127.0.0.1:5678/healthz doit répondre {"status":"ok"}. Dans les logs, la ligne Editor is now accessible via: confirme que l’éditeur est prêt.

Questions fréquentes

Pourquoi n8n affiche EACCES: permission denied, open '/home/node/.n8n/config' ?

Vous avez monté un dossier du VPS à la place du volume nommé, et ce dossier appartient à root. n8n tourne avec l’utilisateur node (UID 1000). Donnez-lui le dossier avec chown -R 1000:1000 /opt/n8n/data, ou revenez au volume n8n_data.

Que faire si le conteneur redémarre en boucle avec Exit code 137 ?

Le système a arrêté n8n faute de mémoire. Vérifiez avec free -h et dmesg | grep -i oom. Limitez les exécutions lourdes lancées en parallèle, arrêtez les autres conteneurs inutiles ou passez à une offre avec plus de RAM.

Pourquoi la connexion échoue avec un message sur le cookie sécurisé ?

n8n envoie par défaut un cookie réservé à HTTPS. Si vous ouvrez une adresse http:// dans le navigateur, n8n affiche Your n8n server is configured to use a secure cookie et refuse la connexion. Terminez la configuration HTTPS puis ouvrez le domaine avec https:// dans le navigateur. Réservez N8N_SECURE_COOKIE=false à un test local.

Comment changer le domaine plus tard ?

Créez l’enregistrement A du nouveau domaine, modifiez N8N_HOST et WEBHOOK_URL dans compose.yaml, puis le nom dans le Caddyfile. Appliquez avec docker compose up -d et systemctl reload caddy. Les applications externes doivent ensuite utiliser les nouvelles URL de webhook.