Documentation EasyDeploy

Tout d'abord merci pour votre confiance et félicitations à vous d'avoir voulu passer à l'action en installant vous même votre propre serveur n8n.

1 - Location d'un VPS

On va se prendre un abonnement VPS chez votre hébergeur préféré.

Qu'est-ce qu'un VPS?

Un VPS (Virtual Private Server) est un serveur virtuel qui fonctionne avec son propre système d'exploitation. C'est comme avoir votre propre ordinateur distant que vous pouvez configurer à votre guise.

Je recommande Pulseheberg (site: https://pulseheberg.com/) parce que c'est français, hébergé en France et c'est pas cher.

Dashboard Pulseheberg

Je choisis dans "Univers Cloud", un "VPS Standard"

Options VPS Pulseheberg

Comme vous voyez sur la grille des prix vous avez de tout, la machine à 4€ fonctionne déjà bien, mais si vous voulez plus de puissance, sentez-vous libre de passer sur celle à 6€. (Remarque : c'est possible de le faire à tout moment).

Configuration VPS

Vous choisissez une distribution Linux Ubuntu 24.XX, et pour le mot de passe c'est au choix
Pour ceux qui ont l'habitude, vous pouvez utiliser votre clé SSH directement. (Comme pour Git)

Comment récupérer sa clé SSH publique

Sur macOS ou Linux, ouvrez un terminal et utilisez la commande :

cat ~/.ssh/id_rsa.pub

Copiez tout le contenu affiché, qui commence généralement par "ssh-rsa"

Pour ceux qui sont moins habitués, vous pouvez demander un password traditionnel qui vous sera envoyé par email une fois la machine provisionnée.

Faites le checkout et attendez votre email.

Une fois que tout est bon, vous devriez voir votre VPS dans le backoffice de Pulseheberg.

VPS activé

Voici votre adresse IP.

2 - Configuration du nom de domaine

Je vais ajouter un sous domaine chez OVH, vous pouvez faire la même chose chez n'importe quel hébergeur.

Rendez-vous sur le dashboard d'OVH:

Nous allons créer un sous domaine

Qu'est-ce qu'un sous-domaine?

Un sous-domaine est une extension de votre domaine principal. Par exemple, si votre domaine est "example.com", un sous-domaine pourrait être "n8n.example.com".

Dashboard OVH
  1. Cliquez sur "Web Cloud"
  2. Cliquez sur "Mes noms de domaines" à gauche
  3. Choisissez le nom de domaine que vous souhaitez utiliser dans la liste
  4. Allez dans "Zone DNS"
Zone DNS OVH

À droite, on va cliquer sur "Ajouter une entrée".

Ajouter entrée DNS

On choisit "Champs de pointage" > "A"

Configuration entrée DNS

Renseignez le nom de sous domaine que vous souhaitez, j'ai choisi n8n pour donner n8n.mondomaine.com.

Et pour la cible, on va utiliser l'adresse IP fournie par Pulseheberg pour notre VPS.

3 - Utilisation du projet n8n-ansible

On va décompresser l'archive "n8n-ansible.zip" que vous avez téléchargée lors de votre paiement.

4 - Utilisation d'Ansible

On va commencer à utiliser Ansible, alors j'espère qu'à cette étape, vous avez déjà Docker sur votre machine.

Si ce n'est pas le cas, vous pouvez voir comment installer docker ici:

Dans un terminal, on va récupérer l'image d'Ansible sur docker en faisant:

docker pull alpine/ansible
Docker pull animation

Ensuite on va sourcer les commandes d'Ansible dans notre terminal ouvert, en gros, on va charger Ansible depuis le docker sans avoir à l'installer sur la machine. Mais cela ne durera que le temps d'utilisation de ce terminal.

Dans le dossier du projet:

source ansible.source

Pour vérifier qu'Ansible est bien installé, on peut maintenant lancer:

ansible -h

On devrait avoir ceci:

Installation Ansible terminée

5 - Modifier l'inventaire

Fichier inventaire

Dans "myinventory", c'est important, on va remplacer <ip> par l'ip de votre VPS.

Vous devez utiliser l'ip V4 de votre VPS, pas la V6. Donc le format attendu est: 123.123.123.123

Et pour le mot de passe, cela va dépendre de comment vous avez décidé d'installer votre VPS.

  • Avez-vous opté pour un mot de passe ?
  • Ou avez vous choisi l'option clé public SSH ?

5.1 - Utilisation d'un mot de passe

Attention: Si vous avez opté pour la clé SSH à l'installation de votre VPS, vous pouvez passer à l'étape 5.2.

On va créer un nouveau fichier qui s'appelle".vault_pass" en faisant:

echo <nouveau_mot_de_passe> > ".vault_pass"

Ici "nouveau_mot_de_passe" n'est pas le même que pour votre VPS, il va servir à chiffrer votre fichier secret. Vous pouvez utiliser un mot de passe que vous avez l'habitude d'utiliser ou le même que pour déverrouiller votre machine.

Une fois que vous aurez tapé la commande plus haut, vous devriez avoir un nouveau fichier avec un mot de passe dedans.

Si vous utilisez un password, votre fichier"myinventory" doit ressembler à cela:

Inventaire avec mot de passe

Ok maintenant, on va renseigner le mot de passe SSH:

Dans le fichier "group_vars/secrets.yml"

On va coller ceci:

ssh_password: "MonMotDePasseVPS"

En prenant le soin de remplacer "MonMotDePasseVPS" par votre vrai mot de passe VPS.

Une fois qu'on a mis à jour le fichier"group_vars/secrets.yml" sauvegardé, on va encrypter ce fichier pour le rendre illisible. (Il faut éviter d'afficher en clair le mot de passe de notre serveur VPS).

ansible-vault encrypt group_vars/secrets.yml

Vous devriez avoir un fichier "group_vars/secrets.yml"qui ressemble à cela:

Fichier secrets encrypté
  1. On encrypt le fichier depuis le terminal
  2. Le fichier devient volontairement illisible

5.2 - Utilisation de la clé SSH

Si vous avez opté pour une utilisation clé SSH, c'est beaucoup plus simple. Modifiez votre fichier"myinventory" de manière à obtenir quelque chose comme ceci:

Attention aux clés avec password

Si vous utilisez une clé avec mot de passe, vous devez la vous devez

Inventaire avec clé SSH

Comme on peut le voir on a supprimé toute la partie sur le mot de passe, nous n'en aurons pas besoin.

6 - Configuration des variables

Dans le fichier "group_vars/all.yml", on va remplacer les 2 variables <domain> et<email>

Pour <domain> il faut que vous utilisiez le domaine complet (sous-domaine compris) déclaré sur OVH plus haut.

Exemple: n8n.mondomain.com

Et email, utile pour obtenir un certificat SSL, utilisez votre email habituel...

Configuration variables

7 - Déploiement

Votre configuration est maintenant terminée, on devrait avoir tout.

À cette étape, vous devez:

  • Avoir loué un VPS chez un hébergeur et récupéré son IP
  • Avoir redirigé un sous-domaine vers votre VPS (utile pour avoir le HTTPS sur votre adresse n8n)
  • Avoir configuré le fichier "myinventory" avec l'ip de destination (et le mot de passe en fonction de votre besoin)
  • Avoir configuré les variables "domain" et"email"

Nous allons maintenant pouvoir lancer notre playbook.

Qu'est-ce qu'un playbook?

Un playbook Ansible est un fichier contenant une série d'instructions à exécuter sur vos serveurs. C'est comme une recette de cuisine pour configurer automatiquement votre serveur.

Une fois qu'on est prêt, dans un terminal, on lance:

ansible-playbook -i myinventory playbooks/install.yml

Ce playbook va:

  • Installer nvm sur le VPS (pour manager nos versions de Node.js)
  • Installer n8n
  • Installer nginx (le serveur HTTP) et utiliser certbot pour installer notre certificat SSL et obtenir le HTTPS sur l'adresse

On lance, et allez prendre un café, ça prend quelques minutes...

Si vous voulez suivre l'installation, vous pouvez vous connecter en parallèle sur votre serveur VPS depuis un second terminal:

ssh root@<ip du vps>
Connexion SSH

Vous devrez entrer un mot de passe si vous avez un mot de passe sur le VPS.

Et vous pourrez monitorer l'installation avec htop:

Animation htop

Une fois que c'est terminé, connectez vous sur votre n8n depuis votre navigateur en visitant l'adresse domaine que vous avez déclaré: n8n.mondomain.com

Installation n8n terminée

Bonus : Sécurisation avec Fail2ban

Pour la sécurité de votre VPS, je vous ai mis un playbook de sécurité dans "playbooks/failtoban.yml"

Face à la recrudescence du piratage et tentatives de brutforce en ligne, j'ai décidé de mettre en place un outil qui permet de bloquer les BOTS qui essayent d'entrer sur votre serveur.

Qu'est-ce que Fail2ban?

Fail2ban est un outil de sécurité qui analyse les logs du serveur et bloque temporairement ou définitivement les adresses IP qui montrent des signes de comportement malveillant, comme des tentatives répétées de connexion échouées.

Attention: Si vous êtes en mode de connexion par Mot de Passe, soyez sûr de ne pas vous tromper en entrant le mot de passe de votre VPS si vous essayez de vous connecter ensuite. Avec Fail2ban, vous aurez droit à 3 tentatives avant d'être définitivement banni. Vous n'aurez d'autre choix que de réinstaller votre VPS sur le backoffice de Pulseheberg en cas de fausse manip.

Vous pourrez suivre la même procédure en faisant:

ansible-playbook -i myinventory playbooks/failtoban.yml

Bravo, vous y êtes arrivé !

Je suis très content de vous avoir accompagné pour le faire, n'hésitez pas à m'écrire si vous coincez quelque part sur mon email:

M'envoyer un email