|
| 1 | +--- |
| 2 | +title: "Installer N8N sur un VPS OVHcloud" |
| 3 | +excerpt: "Apprenez à héberger la plateforme d’automatisation N8N sur un VPS OVHcloud à l’aide de Docker et Caddy" |
| 4 | +updated: 2025-06-03 |
| 5 | +--- |
| 6 | + |
| 7 | +## Objectif |
| 8 | + |
| 9 | +Ce guide vous explique comment installer et exécuter [n8n](https://n8n.io), une plateforme open source d’automatisation de workflows, sur un VPS OVHcloud. L’installation s’appuie sur [Docker](https://www.docker.com/), avec le serveur [Caddy](https://caddyserver.com/) pour gérer automatiquement les certificats SSL. |
| 10 | + |
| 11 | +## Prérequis |
| 12 | + |
| 13 | +- Disposer d'un [VPS](https://www.ovhcloud.com/fr/vps/) fonctionnel (Debian 11 ou supérieur recommandé) |
| 14 | +- Disposer d'un nom de domaine |
| 15 | +- Disposer d'un accès administrateur (sudo) via SSH à votre serveur |
| 16 | + |
| 17 | +## En pratique |
| 18 | + |
| 19 | +### Se connecter à votre VPS |
| 20 | + |
| 21 | +Ouvrez un terminal et connectez-vous à votre VPS avec la commande suivante (en remplaçant `IP_DU_VPS` par la véritable IP) : |
| 22 | + |
| 23 | +```bash |
| 24 | +ssh <user>@IP_VPS |
| 25 | +``` |
| 26 | + |
| 27 | +### Installer Docker et Docker Compose |
| 28 | + |
| 29 | +Pour déployer N8N via Docker sur un VPS OVHcloud, Docker et Docker Compose doivent être installés. Cette méthode est compatible avec la majorité des distributions proposées par OVHcloud (Debian 11, Debian 12, Ubuntu 22.04...). |
| 30 | + |
| 31 | +#### Étape 1 - Mettez le système à jour |
| 32 | + |
| 33 | +```bash |
| 34 | +sudo apt update && sudo apt upgrade -y |
| 35 | +``` |
| 36 | + |
| 37 | +#### Étape 2 - Ajouter la clé GPG officielle de Docker |
| 38 | + |
| 39 | +```bash |
| 40 | +sudo apt install -y ca-certificates curl gnupg |
| 41 | +sudo install -m 0755 -d /etc/apt/keyrings |
| 42 | +curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg |
| 43 | +``` |
| 44 | + |
| 45 | +#### Étape 3 - Ajouter le dépôt Docker |
| 46 | + |
| 47 | +Pour Debian (version 11 et 12) : |
| 48 | + |
| 49 | +```bash |
| 50 | +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
| 51 | +``` |
| 52 | + |
| 53 | +Pour Ubuntu (version égale ou suppérieure à 22.04) : |
| 54 | + |
| 55 | +```bash |
| 56 | +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
| 57 | +``` |
| 58 | + |
| 59 | +#### Étape 4 - Installer Docker Engine et Docker Compose Plugin |
| 60 | + |
| 61 | +```bash |
| 62 | +sudo apt update |
| 63 | +sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
| 64 | +``` |
| 65 | + |
| 66 | +#### Étape 5 - Vérifier que Docker et Docker Compose fonctionnent |
| 67 | + |
| 68 | +```bash |
| 69 | +docker --version |
| 70 | +docker compose version |
| 71 | +``` |
| 72 | + |
| 73 | +### Récupérer le dépôt de configuration N8N + Caddy |
| 74 | + |
| 75 | +Clonez le dépôt Git officiel contenant une stack Docker prête à l’emploi : |
| 76 | + |
| 77 | +```bash |
| 78 | +git clone https://github.com/n8n-io/n8n-docker-caddy.git |
| 79 | +cd n8n-docker-caddy |
| 80 | +``` |
| 81 | + |
| 82 | +> [!primary] |
| 83 | +> |
| 84 | +> Dans ce guide, le dossier cloné est aussi appelé dossier de données (`DATA_FOLDER`). |
| 85 | +
|
| 86 | +Créez les volumes nécessaires : |
| 87 | + |
| 88 | +```bash |
| 89 | +sudo docker volume create caddy_data |
| 90 | +sudo docker volume create n8n_data |
| 91 | +``` |
| 92 | + |
| 93 | +### Ouvrir les ports nécessaires |
| 94 | + |
| 95 | +Pour que votre VPS accepte les connexions web (HTTP et HTTPS), ouvrez les ports 80 et 443 via UFW (le pare-feu par défaut sur Debian/Ubuntu) : |
| 96 | + |
| 97 | +```bash |
| 98 | +sudo ufw allow OpenSSH |
| 99 | +sudo ufw allow 80 |
| 100 | +sudo ufw allow 443 |
| 101 | +``` |
| 102 | + |
| 103 | +> [!primary] |
| 104 | +> |
| 105 | +> Si UFW n’est pas installé, vous pouvez l’installer et l’activer avec : `sudo apt install ufw -y` |
| 106 | +
|
| 107 | +Activez le pare-feu : |
| 108 | + |
| 109 | +```bash |
| 110 | +sudo ufw enable |
| 111 | +``` |
| 112 | + |
| 113 | +Vérifiez l’état du pare-feu : |
| 114 | + |
| 115 | +```bash |
| 116 | +sudo ufw status |
| 117 | +``` |
| 118 | + |
| 119 | +Vous devez voir une sortie similaire à ceci : |
| 120 | + |
| 121 | +Status: active |
| 122 | + |
| 123 | +To Action From |
| 124 | +-- ------ ---- |
| 125 | +80 ALLOW Anywhere |
| 126 | +443 ALLOW Anywhere |
| 127 | +OpenSSH ALLOW Anywhere |
| 128 | +80 (v6) ALLOW Anywhere (v6) |
| 129 | +443 (v6) ALLOW Anywhere (v6) |
| 130 | +OpenSSH (v6) ALLOW Anywhere (v6) |
| 131 | + |
| 132 | +### Configurer le fichier `.env` |
| 133 | + |
| 134 | +Le fichier `.env` permet de définir les paramètres d’environnement nécessaires à N8N et Caddy. Pour le créer : |
| 135 | + |
| 136 | +```bash |
| 137 | +nano .env |
| 138 | +``` |
| 139 | + |
| 140 | +```console |
| 141 | +DATA_FOLDER=/home/debian/n8n-docker-caddy |
| 142 | +DOMAIN_NAME=exemple.com |
| 143 | +SUBDOMAIN=n8n |
| 144 | +GENERIC_TIMEZONE=Europe/Paris |
| 145 | + |
| 146 | +``` |
| 147 | + |
| 148 | +Explications : |
| 149 | + |
| 150 | +- DATA_FOLDER : chemin absolu vers le dossier où vous avez cloné le dépôt Git (dossier de données). |
| 151 | +- DOMAIN_NAME : nom de domaine principal (déjà configuré dans votre zone DNS). |
| 152 | +- SUBDOMAIN : sous-domaine pointant vers votre VPS (ex : `n8n.exemple.com`). |
| 153 | +- GENERIC_TIMEZONE : fuseau horaire utilisé par défaut (important pour les automatisations). |
| 154 | +- SSL_EMAIL : e-mail utilisé pour générer le certificat SSL via Let's Encrypt. |
| 155 | + |
| 156 | +Assurez-vous que votre sous-domaine pointe bien vers l’adresse IP de votre VPS dans la zone DNS. Pour plus de détails, consultez notre guide « [Éditer une zone DNS OVHcloud](/pages/web_cloud/domains/dns_zone_edit){.external} ». |
| 157 | + |
| 158 | +Redéployez ensuite la stack Docker pour que la configuration soit prise en compte : |
| 159 | + |
| 160 | +```bash |
| 161 | +sudo docker compose down |
| 162 | +sudo docker compose up -d |
| 163 | +``` |
| 164 | + |
| 165 | +### Définir le domaine dans Caddy |
| 166 | + |
| 167 | +Vous avez deux manières de définir le domaine dans le fichier `Caddyfile` : |
| 168 | + |
| 169 | +- La modification manuelle est simple et rapide si vous ne comptez faire qu'une seule installation ou modification. |
| 170 | +- La génération dynamique via un script est recommandée si vous gérez plusieurs environnements (développement, production, etc.), ou si vous souhaitez automatiser les déploiements à partir d’un fichier `.env`. Cela permet d’éviter les erreurs manuelles et de centraliser la configuration. |
| 171 | + |
| 172 | +#### Option 1 : Modifier manuellement le fichier `Caddyfile` |
| 173 | + |
| 174 | +Ouvrez le fichier CaddyFile : |
| 175 | + |
| 176 | +```bash |
| 177 | +nano caddy_config/Caddyfile |
| 178 | +``` |
| 179 | + |
| 180 | +Remplacez le contenu du fichier par : |
| 181 | + |
| 182 | +```console |
| 183 | +n8n.<domain>.com { |
| 184 | + reverse_proxy n8n:5678 { |
| 185 | + flush_interval -1 |
| 186 | + } |
| 187 | +} |
| 188 | +``` |
| 189 | + |
| 190 | +Remplacez `<domain>` par votre véritable nom de domaine. |
| 191 | + |
| 192 | +Relancez Docker : |
| 193 | + |
| 194 | +```bash |
| 195 | +sudo docker compose down |
| 196 | +sudo docker compose up -d |
| 197 | +``` |
| 198 | + |
| 199 | +#### Option 2 : Générer dynamiquement le fichier `Caddyfile` |
| 200 | + |
| 201 | +Créez un fichier à la racine de votre dossier de données (`n8n-docker-caddy` dans notre exemple) : |
| 202 | + |
| 203 | +```bash |
| 204 | +nano generate-caddyfile.sh |
| 205 | +``` |
| 206 | + |
| 207 | +Collez le contenu suivant : |
| 208 | + |
| 209 | +```console |
| 210 | +#!/bin/bash |
| 211 | + |
| 212 | +# Charge les variables depuis le fichier .env |
| 213 | +set -a |
| 214 | +source .env |
| 215 | +set +a |
| 216 | + |
| 217 | +# Génére dynamiquement le fichier Caddyfile |
| 218 | +cat <<EOF > caddy_config/Caddyfile |
| 219 | +${SUBDOMAIN}.${DOMAIN_NAME} { |
| 220 | + reverse_proxy n8n:5678 { |
| 221 | + flush_interval -1 |
| 222 | + } |
| 223 | +} |
| 224 | +EOF |
| 225 | + |
| 226 | +echo "Fichier Caddyfile généré avec succès." |
| 227 | +``` |
| 228 | + |
| 229 | +Rendez le script exécutable : |
| 230 | + |
| 231 | +```bash |
| 232 | +chmod +x generate-caddyfile.sh |
| 233 | +``` |
| 234 | + |
| 235 | +Puis lancez-le : |
| 236 | + |
| 237 | +```bash |
| 238 | +./generate-caddyfile.sh |
| 239 | +``` |
| 240 | + |
| 241 | +Relancez Docker : |
| 242 | + |
| 243 | +```bash |
| 244 | +sudo docker compose down |
| 245 | +sudo docker compose up -d |
| 246 | +``` |
| 247 | + |
| 248 | +> [!primary] |
| 249 | +> |
| 250 | +> Le fichier `caddy_config/Caddyfile` sera écrasé à chaque exécution du script. Ne le mofifiez pas manuellement si vous choisissez cette option. À la place, ajoutez un commentaire du type : `# Ce fichier est généré automatiquement par le script generate-caddyfile.sh`. |
| 251 | +
|
| 252 | +#### Accéder à N8N |
| 253 | + |
| 254 | +Accédez à N8N dans un navigateur via l'URL `https://n8n.exemple.com/`. Remplacez `n8n.exemple.com` par le domaine réel que vous avez défini. La page suivante s'affiche. |
| 255 | + |
| 256 | +{.thumbnail} |
| 257 | + |
| 258 | +Une fois la page chargée, vous serez invité à créer le premier utilisateur administrateur de votre instance N8N via le formulaire de configuration. |
| 259 | + |
| 260 | +### Conclusion |
| 261 | + |
| 262 | +Vous disposez désormais d’une instance N8N opérationnelle et sécurisée sur votre VPS OVHcloud, avec une gestion automatique des certificats SSL grâce à Caddy. Pour aller plus loin, consultez la [documentation officielle](https://docs.n8n.io/) de N8N pour créer vos premiers workflows. |
| 263 | + |
| 264 | +## Aller plus loin |
| 265 | + |
| 266 | +[Éditer une zone DNS OVHcloud](/pages/web_cloud/domains/dns_zone_edit){.external} |
| 267 | + |
| 268 | +Pour des prestations spécialisées (référencement, développement, etc), contactez les [partenaires OVHcloud](https://partner.ovhcloud.com/fr-ca/directory/) |
| 269 | + |
| 270 | +Échangez avec notre [communauté d'utilisateurs](/links/community). |
0 commit comments