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.

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

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).

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.

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".

- Cliquez sur "Web Cloud"
- Cliquez sur "Mes noms de domaines" à gauche
- Choisissez le nom de domaine que vous souhaitez utiliser dans la liste
- Allez dans "Zone DNS"

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

On choisit "Champs de pointage" > "A"

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:
Docker pour Linux
Voir la vidéo d'installationDocker pour Mac
Voir la vidéo d'installationVirtualBox pour Windows
Voir la vidéo d'installationDans un terminal, on va récupérer l'image d'Ansible sur docker en faisant:
docker pull alpine/ansible

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:

5 - Modifier l'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:

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:

- On encrypt le fichier depuis le terminal
- 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

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...

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>

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:

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

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