n8n Cloud coûte 240€/an. Hetzner coûte 48€/an. Voici comment installer n8n en 45 minutes sur un serveur depuis Cotonou.

Ce guide couvre chaque étape : création du serveur, Docker, PostgreSQL, Nginx avec SSL gratuit, sauvegardes automatiques, et les problèmes spécifiques rencontrés depuis le Bénin.

48€ Hetzner CX22 / an
240€ n8n Cloud Starter / an
192€ Economies annuelles
45 min Temps d'installation

Comparatif des offres : n8n Cloud vs Hetzner vs DigitalOcean

Avant de commencer l'installation, il faut avoir les chiffres en tête. Le tableau ci-dessous compare trois solutions réalistes pour une PME béninoise souhaitant faire tourner n8n en production.

Comparatif annuel — n8n Cloud / Hetzner CX22 / DigitalOcean Droplet

Critère n8n Cloud Starter Hetzner CX22 Recommandé DigitalOcean Basic
Prix mensuel 20 €/mois 4,49 €/mois 24 $/mois
Prix annuel 240 €/an 53,88 €/an ~265 €/an
RAM Partagée (gérée) 4 Go RAM dédiée 4 Go RAM dédiée
vCPU Partagé 2 vCPU AMD 2 vCPU
Stockage Géré (limité) 40 Go NVMe SSD 50 Go SSD
Workflows actifs 5 maximum Illimité Illimité
Executions/mois 5 000 actives max Illimitées Illimitées
Bande passante Incluse (limitée) 20 To/mois inclus 4 To/mois
Paiement depuis le Bénin Carte / PayPal Carte / PayPal / SEPA Carte / PayPal / Crypto
Maintenace requise Aucune 30 min/mois 30 min/mois
Datacenter Europe (géré) Nuremberg / Helsinki Amsterdam / Francfort
RGPD / données Données chez n8n GmbH Données sur votre serveur Données sur votre serveur
Economie vs n8n Cloud Référence + 186 €/an économisés Comparable (cher)

Hetzner est clairement le choix optimal pour le rapport qualité/prix. DigitalOcean est une alternative si vous rencontrez des blocages d'identité chez Hetzner — ils acceptent les cryptomonnaies comme moyen de paiement.

Pourquoi Hetzner depuis le Bénin

Il existe des dizaines d'hébergeurs VPS dans le monde. Hetzner se distingue pour trois raisons concrètes lorsqu'on travaille depuis Cotonou.

Latence acceptable depuis Cotonou

Hetzner possède des datacenters à Nuremberg et Falkenstein (Allemagne) ainsi qu'à Helsinki (Finlande). La latence typique depuis Cotonou vers Nuremberg est de 80 à 140 ms selon l'opérateur (MTN Bénin ou Moov). C'est tout à fait correct pour n8n : les workflows s'exécutent côté serveur, votre connexion locale n'influence que la vitesse d'accès à l'interface de gestion.

Paiement accessible depuis l'Afrique

Hetzner accepte les cartes Visa et Mastercard internationales, PayPal, et les virements SEPA. Depuis Cotonou, la solution la plus simple est une carte Visa prépayée internationale disponible chez Ecobank ou Bank of Africa, ou un compte PayPal rechargé par carte. Certains clients utilisent aussi la carte Binance liée à leur compte crypto.

Tarifs parmi les plus bas du marché

Le plan CX22 (2 vCPU AMD, 4 Go RAM, 40 Go SSD NVMe) est à 4,49 €/mois HT. DigitalOcean propose un plan équivalent à 24 $/mois — plus de 5 fois plus cher. Hetzner est la référence en matière de prix VPS en Europe depuis plusieurs années.

Conseil pratique Créez votre compte Hetzner avec une adresse email professionnelle (pas Gmail) pour réduire les risques de blocage automatique. Hetzner demande parfois une vérification d'identité par scan de pièce d'identité — préparez votre CNI ou passeport en PDF ou JPEG.

Prérequis avant de commencer

Ce guide suppose que vous disposez des éléments suivants. Vérifiez chaque point avant de démarrer pour éviter les blocages en cours d'installation.

  • Un compte Hetzner actif — inscrit sur hetzner.com, email vérifié, moyen de paiement ajouté. Prévoyez 24 à 48h si une vérification d'identité est demandée.
  • Un nom de domaine avec sous-domaine dédié — par exemple n8n.votre-entreprise.com. Sans domaine, pas de HTTPS, pas de webhooks sécurisés. Un .com chez OVH ou Namecheap coûte moins de 12€/an.
  • Notions Linux basiques — savoir se connecter en SSH (ssh user@ip), exécuter des commandes dans un terminal, et éditer un fichier avec nano.
  • Un client SSH — Terminal natif sur Mac/Linux. PuTTY ou Windows Terminal sur Windows. JuiceSSH (Android) pour dépannage mobile.
Si vous n'avez pas de base Linux Deux options : passer 2 heures sur un tutoriel Linux de base (nombreux en français sur YouTube), ou déléguer l'installation à un consultant n8n qui livre le tout en quelques heures. Le temps investi est recupere en quelques semaines d'économies sur l'abonnement Cloud.
1

Créer le serveur Hetzner (CX22, Ubuntu 22.04)

Configuration recommandée dans la console Hetzner

Connectez-vous sur console.hetzner.com et cliquez sur "Create Server". Voici les paramètres exacts à sélectionner.

  • Location : Nuremberg (nbg1) ou Falkenstein (fsn1) — les deux donnent une latence similaire depuis Cotonou. Helsinki est légèrement plus éloigné.
  • Image : Ubuntu 22.04 LTS — stable, supporté jusqu'en 2027, documentation abondante en français.
  • Type : CX22 — 2 vCPU AMD, 4 Go RAM, 40 Go NVMe SSD. Minimum requis pour n8n + PostgreSQL + Nginx sans saturation.
  • Networking : IPv4 uniquement pour simplifier la configuration initiale.
  • SSH Keys : generez une paire de clés avant de créer le serveur (voir ci-dessous) et collez la clé publique dans le formulaire.
Hetzner Cloud — Nouveau serveur CX22 — Running
Nomn8n-cotonou-prod
ImageUbuntu 22.04 LTS
DatacenterNuremberg (nbg1)
CPU2 vCPU AMD EPYC
RAM4 Go
Disque40 Go NVMe SSD
Bande passante20 To/mois inclus
Tarif4,49 €/mois HT

Générer une paire de clés SSH (sur votre machine locale)

ssh-keygen -t ed25519 -C "n8n-hetzner-benin"
# Appuyez Entrée pour valider l'emplacement par défaut (~/.ssh/id_ed25519)
# Définissez une passphrase si vous le souhaitez (recommandé)

# Afficher votre clé publique — c'est ce que vous collez dans Hetzner :
cat ~/.ssh/id_ed25519.pub

Connexion initiale et mise à jour du serveur

Une fois le serveur créé (moins d'une minute), notez son adresse IP publique depuis la console. Connectez-vous en SSH depuis votre terminal.

ssh root@VOTRE_IP_HETZNER

# Mise à jour des paquets Ubuntu (toujours faire ça en premier)
apt update && apt upgrade -y

# Outils essentiels
apt install -y curl wget git nano ufw fail2ban

Configurer le pare-feu UFW

# Autoriser SSH, HTTP et HTTPS — dans cet ordre précis
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp

# Activer UFW (la connexion SSH actuelle n'est pas coupée)
ufw --force enable

# Vérification
ufw status verbose
Attention Ne fermez pas votre session SSH actuelle avant de vérifier que le port 22 est bien autorisé dans UFW. Si vous vous bloquez, il faut passer par la console web Hetzner pour recuperer l'accès.
2

Installer Docker et Docker Compose

Docker est le moteur de conteneurisation qui fait tourner n8n dans un environnement isolé et portable. Docker Compose orchestre plusieurs conteneurs (n8n + PostgreSQL) avec un seul fichier de configuration.

Installez Docker depuis le dépôt officiel — pas depuis les paquets Ubuntu par défaut, qui sont souvent en retard d'une version majeure.

# Dépendances nécessaires à l'ajout du dépôt Docker
apt install -y ca-certificates curl gnupg lsb-release

# Clé GPG officielle Docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

# Ajout du dépôt Docker dans les sources APT
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installation de Docker Engine + Compose Plugin
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérification de l'installation

# Version Docker
docker --version
# Résultat attendu : Docker version 25.x.x, build xxxxxxx

# Version Docker Compose (plugin intégré)
docker compose version
# Résultat attendu : Docker Compose version v2.x.x

# Test rapide (facultatif)
docker run --rm hello-world
Démarrage automatique Docker est activé automatiquement au démarrage du serveur. Verifiez-le avec systemctl is-enabled docker. Le résultat doit être enabled.
3

docker-compose.yml complet pour n8n + PostgreSQL

On crée deux services : PostgreSQL (base de données de production, bien plus stable que SQLite) et n8n lui-même. Évitez SQLite en production — il ne gère pas bien les accès concurrents sur des workflows à fort trafic.

# Créer et entrer dans le répertoire de travail
mkdir -p /opt/n8n && cd /opt/n8n

# Créer le répertoire pour les fichiers locaux utilisables dans les workflows
mkdir -p /opt/n8n/files /opt/n8n/backups

Fichier .env — Variables d'environnement

Créez le fichier des variables d'environnement. Ne commitez jamais ce fichier dans git — il contient vos mots de passe.

nano /opt/n8n/.env
# ── Domaine et protocole ────────────────────────────────────────────────
N8N_HOST=n8n.votre-entreprise.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.votre-entreprise.com/

# ── Authentification de base ────────────────────────────────────────────
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=MotDePasseTresSolide2025!

# ── Fuseau horaire Bénin (Africa/Porto-Novo = UTC+1) ───────────────────
GENERIC_TIMEZONE=Africa/Porto-Novo
TZ=Africa/Porto-Novo

# ── PostgreSQL — identifiants de connexion ──────────────────────────────
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=MotDePassePostgres2025!

# ── PostgreSQL — variables du conteneur postgres ────────────────────────
POSTGRES_DB=n8n
POSTGRES_USER=n8n_user
POSTGRES_PASSWORD=MotDePassePostgres2025!

# ── SMTP pour les notifications n8n ────────────────────────────────────
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=votre-email@gmail.com
N8N_SMTP_PASS=votre-app-password-gmail
N8N_SMTP_SENDER=votre-email@gmail.com

# ── Clé de chiffrement des credentials (générez avec : openssl rand -hex 32) ──
N8N_ENCRYPTION_KEY=collez-ici-une-clé-aléatoire-de-64-caractères-hex

# ── Executions : désactiver la conservation des données pour économiser l'espace
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168

Fichier docker-compose.yml complet

nano /opt/n8n/docker-compose.yml
# ── docker-compose.yml — n8n self-hosted + PostgreSQL ──────────────────
# Installation sur Hetzner CX22 depuis Cotonou, Bénin
# Paul-Maxime Dossou — consultant n8n Cotonou

version: "3.8"

services:

  # ── Base de données PostgreSQL 15 ──────────────────────────────────────
  postgres:
    image: postgres:15-alpine
    container_name: n8n_postgres
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      # Données PostgreSQL persistantes entre redémarrages
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n_network
    # Healthcheck : n8n attend que PostgreSQL soit prêt avant de démarrer
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
      interval: 10s
      timeout: 5s
      retries: 5

  # ── Application n8n ────────────────────────────────────────────────────
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n_app
    restart: always
    ports:
      # Exposé uniquement en local — Nginx se charge du HTTPS
      - "127.0.0.1:5678:5678"
    env_file:
      - .env
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      # Données n8n persistantes (workflows, credentials, paramètres)
      - n8n_data:/home/node/.n8n
      # Répertoire local accessible depuis les nodes "Execute Command"
      - /opt/n8n/files:/files
    networks:
      - n8n_network

# ── Volumes Docker persistants ──────────────────────────────────────────
volumes:
  postgres_data:
    driver: local
  n8n_data:
    driver: local

# ── Réseau interne entre les conteneurs ────────────────────────────────
networks:
  n8n_network:
    driver: bridge

Démarrer les conteneurs

# Lancer en arrière-plan (detached mode)
cd /opt/n8n && docker compose up -d

# Suivre les logs pour vérifier que n8n démarre correctement
docker compose logs -f n8n
# Ctrl+C pour quitter la vue des logs, les conteneurs continuent de tourner

# Vérifier que les deux conteneurs sont "Up"
docker compose ps

Après environ 30 à 60 secondes, n8n est accessible sur http://VOTRE_IP:5678. Notez que ce port est lié à 127.0.0.1 uniquement — il n'est pas accessible depuis l'extérieur. Passons à Nginx pour configurer le HTTPS.

4

Nginx reverse proxy + SSL Let's Encrypt

Nginx joue le rôle de passerelle : il reçoit les requêtes HTTPS sur le port 443 et les transfère à n8n sur le port 5678 en local. Let's Encrypt fournit les certificats SSL gratuitement et les renouvelle automatiquement.

Prérequis DNS — Pointer votre sous-domaine vers Hetzner

Avant d'installer Certbot, créez un enregistrement DNS de type A chez votre registrar (OVH, Namecheap). La propagation prend de 5 à 30 minutes.

# Enregistrement DNS à créer chez votre registrar :
# Nom : n8n.votre-entreprise.com
# Type : A
# Valeur : VOTRE_IP_HETZNER
# TTL : 300 (5 min)

# Vérifier la propagation depuis votre serveur :
nslookup n8n.votre-entreprise.com
# Doit retourner votre IP Hetzner

Installer Nginx et Certbot

# Installer Nginx
apt install -y nginx

# Installer Certbot via snap (méthode officielle recommandée)
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

Configuration Nginx pour n8n

nano /etc/nginx/sites-available/n8n
# ── Configuration Nginx pour n8n — Hetzner + Let's Encrypt ─────────────

server {
    listen 80;
    server_name n8n.votre-entreprise.com;

    # Redirection automatique HTTP vers HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name n8n.votre-entreprise.com;

    # Certificats SSL générés par Certbot (Let's Encrypt)
    ssl_certificate     /etc/letsencrypt/live/n8n.votre-entreprise.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.votre-entreprise.com/privkey.pem;

    # Paramètres TLS sécurisés (désactive TLS 1.0 et 1.1)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    # Headers de sécurité
    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    # Taille max des fichiers uploadés dans les workflows n8n
    client_max_body_size 50M;

    # Timeouts élevés pour les webhooks longue durée
    proxy_read_timeout    600s;
    proxy_connect_timeout  60s;
    proxy_send_timeout    600s;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;

        # Headers requis pour les WebSockets (interface n8n en temps réel)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Désactiver le buffering — requis pour les SSE (exécutions en direct)
        proxy_buffering off;
    }
}

Activer la configuration et obtenir le certificat SSL

# Activer le site (lien symbolique)
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default

# Vérifier la syntaxe Nginx avant de recharger
nginx -t
# Résultat attendu : syntax is ok / test is successful

# Démarrer Nginx
systemctl start nginx
systemctl enable nginx

# Obtenir le certificat SSL Let's Encrypt (gratuit, renouvelé automatiquement)
certbot --nginx -d n8n.votre-entreprise.com \
  --non-interactive --agree-tos \
  -m votre-email@gmail.com

# Vérifier que le renouvellement automatique est actif
systemctl status snap.certbot.renew.timer

Votre instance n8n est maintenant accessible en HTTPS sur https://n8n.votre-entreprise.com. L'interface demande les identifiants définis dans le fichier .env.

5

Sécuriser et sauvegarder son instance n8n

Renforcer la sécurité

L'authentification basique configurée dans le .env est suffisante pour commencer. Pour aller plus loin, ajoutez un utilisateur non-root et activez la gestion des utilisateurs intégrée à n8n (disponible depuis la version 0.200).

# Générer un mot de passe fort aléatoire (si vous n'en avez pas)
openssl rand -base64 24

# Générer la clé de chiffrement N8N_ENCRYPTION_KEY
openssl rand -hex 32

# Créer un utilisateur système dédié (bonne pratique)
useradd -m -s /bin/bash n8nadmin
usermod -aG docker n8nadmin

Script de sauvegarde automatique

Ce script effectue un dump PostgreSQL et une archive des données n8n chaque nuit, puis supprime les backups de plus de 14 jours.

nano /opt/n8n/backup.sh
#!/bin/bash
# ── Sauvegarde quotidienne n8n — Paul-Maxime Dossou, Cotonou Bénin ──────
# Dump PostgreSQL + archive données n8n
# Exécuté par cron chaque nuit à 2h00 (heure serveur UTC)

set -e

BACKUP_DIR=/opt/n8n/backups
DATE=$(date +%Y-%m-%d_%H-%M)
LOG_FILE=/var/log/n8n-backup.log

# Créer le répertoire de sauvegarde s'il n'existe pas
mkdir -p "$BACKUP_DIR"

echo "[${DATE}] Démarrage de la sauvegarde..." >> "$LOG_FILE"

# 1. Dump de la base PostgreSQL (compressé en gzip)
docker exec n8n_postgres pg_dump -U n8n_user n8n | \
  gzip > "${BACKUP_DIR}/postgres_${DATE}.sql.gz"

echo "[${DATE}] Dump PostgreSQL : OK" >> "$LOG_FILE"

# 2. Archive des données n8n (workflows, credentials, fichiers)
docker run --rm \
  --volumes-from n8n_app \
  -v "${BACKUP_DIR}:/backup" \
  alpine:latest \
  tar czf "/backup/n8n_data_${DATE}.tar.gz" /home/node/.n8n

echo "[${DATE}] Archive données n8n : OK" >> "$LOG_FILE"

# 3. Supprimer les backups de plus de 14 jours
find "$BACKUP_DIR" -type f -mtime +14 -delete

echo "[${DATE}] Sauvegarde terminée. Fichiers dans : ${BACKUP_DIR}" >> "$LOG_FILE"
# Rendre le script exécutable
chmod +x /opt/n8n/backup.sh

# Tester le script manuellement une première fois
/opt/n8n/backup.sh

# Programmer la sauvegarde automatique chaque nuit à 2h00
crontab -e
# Ajouter exactement cette ligne dans l'éditeur :
0 2 * * * /opt/n8n/backup.sh >> /var/log/n8n-backup.log 2>&1

Monitoring d'uptime avec UptimeRobot

Créez un compte gratuit sur uptimerobot.com et ajoutez un moniteur HTTP(s) pointant vers https://n8n.votre-entreprise.com. Vous recevrez une alerte par email (ou SMS sur le plan payant) dès que l'instance est indisponible. UptimeRobot vérifie toutes les 5 minutes — le plan gratuit couvre largement les besoins d'une PME.

Mettre à jour n8n

# Récupérer la dernière image n8n depuis Docker Hub
cd /opt/n8n
docker compose pull n8n

# Redémarrer uniquement le conteneur n8n (PostgreSQL continue de tourner)
docker compose up -d n8n

# Vérifier la version installée
docker exec n8n_app n8n --version
Frequence des mises à jour n8n sort une nouvelle version environ chaque semaine. Mettez à jour une fois par mois — les versions majeures (X.0.0) méritent de lire les release notes avant de migrer. Effectuez toujours une sauvegarde avant une mise à jour.

Tableau des coûts complet — Mensuel et annuel

Voici la décomposition précise et honnête de ce qu'il vous en coûtera pour faire tourner n8n en production depuis le Bénin sur un VPS Hetzner CX22.

Poste Détail Coût / mois Coût / an
VPS Hetzner CX22 2 vCPU AMD, 4 Go RAM, 40 Go NVMe SSD 4,49 € 53,88 €
Snapshots Hetzner Sauvegarde automatique du disque entier (optionnel) 0,90 € 10,80 €
Nom de domaine .com OVH ou Namecheap — renouvellement annuel 0,92 € 11,00 €
Certificat SSL Let's Encrypt — gratuit, renouvellement automatique 0 € 0 €
Monitoring UptimeRobot Plan gratuit — 5 moniteurs, vérification toutes les 5 min 0 € 0 €
Bande passante Hetzner 20 To/mois inclus dans CX22 — amplement suffisant 0 € 0 €
Total Self-hosted Hetzner (avec snapshot) 6,31 €/mois 75,68 €/an
Total Self-hosted Hetzner (sans snapshot) 5,41 €/mois 64,88 €/an
n8n Cloud Starter (référence) 20 €/mois 240 €/an
Economie réalisée sur 12 mois 13,69 €/mois 164,32 €/an
Pour une charge plus importante Si vous avez plusieurs équipes ou plus de 50 workflows actifs, le plan CX32 (4 vCPU, 8 Go RAM) à 8,99 €/mois reste largement en dessous du tarif Cloud n8n. Hetzner permet de scaler en quelques clics depuis la console, sans interruption ni changement d'IP.

Problèmes courants depuis le Bénin — Tableau de résolution

Ces problèmes ont été recensés lors d'installations réelles effectuées depuis Cotonou et d'autres villes du Bénin. Les solutions sont directement applicables.

Problème Cause probable Solution
Paiement Hetzner refusé Carte locale non acceptée à l'international Utiliser PayPal rechargé par carte, ou carte Visa prépayée internationale Ecobank / Bank of Africa. En dernier recours : passer sur DigitalOcean qui accepte les cryptomonnaies.
Compte Hetzner bloqué après inscription Vérification d'identité requise (normale depuis l'Afrique) Envoyer une photo de CNI ou passeport au support Hetzner (support@hetzner.com). Réponse sous 24 à 48h. Utiliser une adresse email professionnelle pour l'inscription.
SSH timeout lors de la connexion initiale Connexion MTN / Moov instable le soir Essayez entre 7h et 10h du matin (meilleure stabilité réseau à Cotonou). Utilisez une clé SSH plutôt qu'un mot de passe pour éviter les timeouts d'authentification.
Conteneur n8n qui redémarre en boucle Variable .env mal formatée ou PostgreSQL pas encore prêt Vérifier les logs : docker compose logs n8n --tail=50. Cause fréquente : guillemets ou espaces dans le fichier .env. PostgreSQL doit être "healthy" avant que n8n ne démarre.
Webhooks ne se déclenchent pas WEBHOOK_URL incorrect dans le .env Vérifier que WEBHOOK_URL=https://n8n.votre-domaine.com/ correspond exactement à votre domaine (avec le / final). Redémarrer avec docker compose restart n8n après chaque modification du .env.
Erreur "connection refused" sur le port 5678 Port 5678 non exposé publiquement (configuration correcte) Normal — le port est lié à 127.0.0.1, pas à 0.0.0.0. Accédez à n8n via HTTPS (port 443) à travers Nginx, pas directement sur le port 5678.
Certificat SSL non généré (erreur Certbot) DNS pas encore propagé lors de l'appel Certbot Attendre 15 à 30 minutes et réessayer. Vérifier la propagation avec nslookup n8n.votre-domaine.com depuis le serveur. L'IP retournée doit correspondre à celle de votre VPS Hetzner.
Coupure internet pendant la configuration Instabilité réseau locale (normale) La session SSH se coupe mais le serveur continue de fonctionner. Reconnectez-vous et vérifiez l'état avec docker compose ps. Les conteneurs avec restart: always survivent aux coupures.

FAQ — 10 questions sur l'hébergement n8n self-hosted depuis le Bénin

QPeut-on créer un compte Hetzner depuis le Bénin ?
Oui, Hetzner accepte les inscriptions depuis le Bénin sans restriction de pays. Vous aurez besoin d'une carte bancaire internationale (Visa, Mastercard) ou d'un compte PayPal pour valider le premier paiement. Une vérification d'identité manuelle est parfois demandée — préparez votre CNI ou passeport en PDF ou JPEG, la réponse vient sous 24 à 48h.
QQuelle est la latence entre Cotonou et les serveurs Hetzner ?
La latence entre Cotonou et Nuremberg (Hetzner) est typiquement entre 80 et 140 ms selon votre opérateur (MTN Bénin ou Moov Bénin). Pour n8n, cette latence est sans impact : les workflows s'exécutent côté serveur en Europe, votre connexion locale n'influence que la vitesse d'affichage de l'interface web de gestion.
QCombien coûte réellement un VPS Hetzner pour n8n ?
Le plan CX22 (2 vCPU AMD, 4 Go RAM, 40 Go SSD NVMe) revient à 4,49 €/mois HT, soit environ 53,88 €/an. Ajoutez un nom de domaine (~11 €/an) et vous êtes à environ 65 €/an tout compris pour une installation production avec HTTPS. Le plan n8n Cloud Starter coûte 240 €/an pour des capacités inférieures.
Qn8n self-hosted est-il plus difficile à maintenir ?
L'installation initiale prend 45 minutes en suivant ce guide. Ensuite, la maintenance représente environ 30 minutes par mois : une mise à jour Docker trimestrielle (15 min), une vérification des sauvegardes, et une revue des alertes UptimeRobot. Si vous ne souhaitez pas gérer cela, un consultant peut s'en charger pour un coût mensuel bien inférieur à l'abonnement Cloud.
QPeut-on utiliser n8n self-hosted sans nom de domaine ?
Techniquement oui — n8n est accessible via l'adresse IP du serveur sur le port 5678. Mais sans nom de domaine, pas de certificat SSL, pas de HTTPS. Or HTTPS est indispensable pour sécuriser les webhooks et l'authentification. Un .com chez OVH coûte moins de 12 €/an — c'est l'investissement minimal pour une instance sécurisée.
QQuelles applications peut-on connecter depuis le Bénin ?
N8n dispose de plus de 400 intégrations natives : Gmail, Notion, WhatsApp Business, Google Sheets, Airtable, Slack, Stripe, WooCommerce, Telegram, HubSpot, Salesforce, et bien d'autres. Depuis le Bénin, les connexions fonctionnent exactement comme en Europe — les appels API transitent par votre serveur Hetzner en Allemagne, votre connexion internet locale n'est pas un facteur limitant.
QComment payer Hetzner depuis le Bénin ?
Hetzner accepte les cartes Visa et Mastercard internationales, PayPal, et les virements SEPA. Depuis Cotonou, la méthode la plus fiable est une carte Visa prépayée internationale disponible à Ecobank, Bank of Africa, ou SGBÉ. PayPal rechargé par carte est également très utilisé. Si aucune de ces options ne fonctionne, DigitalOcean et Vultr acceptent les cryptomonnaies (Bitcoin, USDT).
QEst-ce que n8n self-hosted sur Hetzner respecte le RGPD ?
Les serveurs Hetzner sont hébergés en Allemagne et en Finlande, donc soumis au droit européen et au RGPD. Vos données et celles de vos clients restent sur votre serveur en Europe. C'est un avantage certain par rapport aux hébergeurs américains (Amazon, Google) pour les entreprises béninoises qui travaillent avec des clients ou partenaires européens exigeant une conformité RGPD.
QCombien de workflows peut-on faire tourner sur un CX22 ?
Avec 4 Go de RAM et 2 vCPU AMD, vous pouvez faire tourner confortablement 20 à 50 workflows actifs avec des exécutions parallèles raisonnables (5 à 10 simultanées). Si votre charge augmente, Hetzner permet de scaler le serveur vers un CX32 ou CX42 en quelques clics depuis la console Cloud, sans perdre de données ni changer d'adresse IP.
QQue faire si le serveur Hetzner tombe en panne ?
Avec restart: always dans le docker-compose.yml, n8n redémarre automatiquement après un crash ou un redémarrage du serveur. Les snapshots Hetzner (0,90 €/mois) permettent de restaurer le disque entier en quelques minutes. UptimeRobot vous alerte immédiatement par email en cas d'interruption. L'uptime garanti par Hetzner est de 99,9 %, soit moins de 9 heures de downtime par an.

Besoin d'aide pour installer n8n sur Hetzner ?

Je propose une installation clé en main depuis Cotonou : serveur configuré, HTTPS activé, sauvegardes automatiques, monitoring — livré en 24h.

Je propose aussi des formations n8n pour apprendre à créer vos propres automatisations depuis le Bénin.

PM

Paul-Maxime Dossou

Consultant n8n & Automatisation basé à Cotonou, Bénin. J'accompagne les PME béninoises et africaines dans l'automatisation de leurs processus : facturation, CRM, communication, reporting. Plus de 5 ans d'expérience en intégration d'APIs et workflows no-code/low-code.

Voir mon profil complet →