Tous les articles
B
Le Blog d'Antoine
Proxmoxn8nLinux

Déployer n8n sur Proxmox LXC — le guide de production

MASIA Antoine

MASIA Antoine

Développeur Full-Stack, DevOps & CyberSécurité

Proxmoxn8nLinuxSQLiteRéseau

Déployer n8n sur Proxmox LXC — le guide de production

Installation, réseau cassé, systemd mal configuré, SQLite qui gonfle : voici tout ce qu'on apprend en production que les docs officielles ne disent pas.

14 mai 2026 4 min de lecture

Le script community Proxmox installe n8n en deux minutes. Mais en production, trois problèmes reviennent systématiquement : le conteneur LXC perd le réseau au redémarrage, les webhooks ne pointent pas au bon endroit, et SQLite grossit sans fin jusqu'à saturer le disque. Ce guide couvre les corrections une fois pour toutes.


01 — Installation via VE-Helper

Pour cette installation, j'utilise un script provenant d'un site communautaire que je vous présenterai dans un prochain article — il regroupe des dizaines de scripts Proxmox prêts à l'emploi et ça mérite vraiment un tour complet. En attendant, retenez juste qu'il s'agit de VE-Helper, et que la commande est la suivante :

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/n8n.sh)"

Le script provisionne automatiquement : le binaire n8n, un service systemd, une base SQLite et le conteneur LXC Proxmox. Ça tourne. Jusqu'au premier redémarrage.


02 — Le conteneur n'a plus Internet après redémarrage

Le symptôme est immédiat au boot :

ping: connect: Network is unreachable
ENETUNREACH

La cause : le conteneur LXC n'a pas de route par défaut configurée de façon permanente. La gateway est absente.

Vérifier

ip route

Si vous ne voyez pas default via 192.168.1.254 dans la sortie, c'est confirmé.

Correctif temporaire (jusqu'au prochain reboot)

ip route add default via 192.168.1.254 dev eth0

⚠️ Cette commande ne survit pas au redémarrage du conteneur. Elle sert uniquement à rétablir la connexion immédiatement, le temps d'appliquer la correction permanente.

Correctif permanent

nano /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.1.202/24
    gateway 192.168.1.254

iface eth0 inet6 auto
systemctl restart networking

03 — Configuration systemd : domaine et webhooks

Par défaut, n8n ne connaît pas son propre domaine public. Les webhooks échouent silencieusement. La solution passe par un fichier d'override systemd :

mkdir -p /etc/systemd/system/n8n.service.d
nano /etc/systemd/system/n8n.service.d/override.conf
[Service]
# Domaine public
Environment="N8N_HOST=n8n.domaine.fr"
Environment="N8N_PROTOCOL=https"
Environment="WEBHOOK_URL=https://n8n.domaine.fr/"

# Rétention des exécutions
Environment="EXECUTIONS_DATA_SAVE_ON_SUCCESS=none"
Environment="EXECUTIONS_DATA_SAVE_ON_ERROR=all"
Environment="EXECUTIONS_DATA_PRUNE=true"
Environment="EXECUTIONS_DATA_MAX_AGE=168"
Environment="EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000"

ℹ️ Le WEBHOOK_URL doit impérativement se terminer par / et correspondre exactement au domaine exposé par votre reverse proxy (Nginx, Caddy, Traefik).

Appliquer la configuration :

systemctl daemon-reload
systemctl restart n8n
journalctl -u n8n -f

04 — SQLite : empêcher la saturation disque

Le comportement par défaut de n8n : stocker toutes les exécutions, pour toujours. En production, le fichier SQLite peut atteindre plusieurs gigaoctets en quelques semaines.

Les variables de l'override ci-dessus gèrent déjà ça, mais voici pourquoi chaque ligne compte :

Variable Valeur Effet
SAVE_ON_SUCCESS none Pas de stockage si succès — gain d'espace majeur
SAVE_ON_ERROR all Conserve les erreurs pour debug
PRUNE true Active le nettoyage automatique
MAX_AGE 168 Supprime après 7 jours (168h)
PRUNE_MAX_COUNT 5000 Plafonne le nombre d'entrées

SQLite ou PostgreSQL ?

Situation SQLite PostgreSQL
Développement / test ✅ Parfait
Production légère ✅ Suffisant
Production intensive ❌ Déconseillé ✅ Recommandé
Haute disponibilité ❌ Non supporté ✅ Natif

05 — Checklist avant de passer en production

  • Route réseau permanente dans /etc/network/interfaces
  • Override systemd en place avec domaine, protocole et webhooks
  • EXECUTIONS_DATA_SAVE_ON_SUCCESS=none activé
  • Pruning automatique activé (EXECUTIONS_DATA_PRUNE=true)
  • Disque > 30 Go alloué au conteneur LXC
  • Reverse proxy configuré avec certificat TLS valide
  • Snapshots Proxmox planifiés sur le conteneur

En résumé

Une installation n8n stable sur Proxmox repose sur trois choses :

  • Réseau LXC configuré de façon permanente dans interfaces
  • Systemd paramétré avec domaine, protocole et politique de rétention
  • SQLite sous contrôle — ou PostgreSQL pour les charges importantes
MASIA Antoine

Auteur

MASIA Antoine

Développeur Full-Stack, DevOps & CyberSécurité