IFTTT, Zapier, Make.Com... Tant de solutions possibles pour faire de l'automatisation, sans pour autant écrire la moindre ligne de code... Cependant elles sont toutes propriétaires.

Vous le savez, chez Aukfood, nos manchots sont friands de technos open-source. C'est pour cela que nous avons trouvé n8n, se plaçant comme une concurrente très sérieuse à celles citées précédemment. Cerise sur le gâteau, nous pouvons l'auto-héberger sur notre plateforme, et ainsi garder le contrôle sur les données.

1. Présentation de n8n

Tout d'abord, c'est quoi un "workflow" ? Selon Wikipédia, un workflow (ou flux de travaux), est [...] une suite de tâches ou d'opérations, [...] d'une étape à une autre.

Ici, l'idée de n8n, est de créer cet enchaînement d'actions, de façon automatisée, le tout en intégrant plus de 200 applications. Cet enchaînement peut être réalisé à la main, mais quoi de plus fastidieux que de répéter maintes et maintes fois la ou les mêmes opérations ! De plus, vous gagnez du temps.

n8n compte énormément d'intégrations avec des services tiers (GitLab, GitHub, Rocket.Chat, Nextcloud, Facebook, etc...), la liste complète est ici.

Pour être concret, je peux créer un workflow qui détecte lorsqu'une nouvelle release d'un projet GitHub (ou GitLab) est disponible, et d'être alerté via un webhook Rocket.Chat. Et le tout, sans écrire la moindre ligne de code (no-code).

2. Installation de n8n (avec Docker)

Vous avez la possibilité d'utiliser le service n8n mis à disposition par eux-mêmes (SaaS), mais cette version est payante. Nous allons voir ici comment l'installer sur notre propre serveur. Le tout bien évidemment, est gratuit.

La machine qui accueillera n8n devra disposer de Docker et Docker-Compose.

Commencer par créer un répertoire dédié à n8n :

mkdir -p ~/n8n/

Contenu du fichier docker-compose.yml :

version: "3"

services:
  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_EMAIL_MODE=${N8N_EMAIL_MODE}
      - N8N_SMTP_HOST=${N8N_SMTP_HOST}
      - N8N_SMTP_PORT=${N8N_SMTP_PORT}
      - N8N_SMTP_USER=${N8N_SMTP_USER}
      - N8N_SMTP_PASS=${N8N_SMTP_PASS}
      - N8N_SMTP_SENDER=${N8N_SMTP_SENDER}
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ${DATA_FOLDER}/.n8n:/home/node/.n8n

Ici, le port écouté par le conteneur sera le 5678. Mais vous avez la possibilité d'en sélectionner un autre, à condition que celui-ci soit libre.

Contenu du fichier .env :

# Folder where data should be saved
DATA_FOLDER=~/n8n/

# The top level domain to serve from
DOMAIN_NAME=domain.com

# The subdomain to serve from
SUBDOMAIN=n8n

# DOMAIN_NAME and SUBDOMAIN combined decide where n8n will be reachable from
# above example would result in: https://n8n.example.com

# The user name to use for authentication - IMPORTANT ALWAYS CHANGE!
N8N_BASIC_AUTH_USER=username123

# The password to use for authentication - IMPORTANT ALWAYS CHANGE!
N8N_BASIC_AUTH_PASSWORD=password123

# Optional timezone to set which gets used by Cron-Node by default
# If not set New York time will be used
GENERIC_TIMEZONE=Europe/Berlin

N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.domain.com
N8N_SMTP_PORT=465
N8N_SMTP_USER=username@domain.com
N8N_SMTP_PASS=YourPassword!123
N8N_SMTP_SENDER=username@domain.com

J'ai rajouté une configuration SMTP, nécessaire pour la gestion des utilisateurs.

Lancer le conteneur :

docker-compose up -d

L'instance n8n est désormais prête, vous pouvez y accéder à l'adresse suivante : http://localhost:5678.

Cependant si vous souhaitez sécuriser le tout, rien de tel qu'un reverse-proxy tel que Traefik ! Vous pouvez vous inspirer de cette documentation.

3. Conclusion

Pour conclure, n8n est une formidable alternative à Zapier et à IFTTT (les plus connues). Attention, le catalogue d'intégrations de n8n est quand même moins consistant que les autres. Mais pour un projet jeune (2020-06-13 pour la 0.70.0), c'est très prometteur pour la suite.

N'hésitez pas à l'utiliser, c'est un très bel outil et qui vous fera gagner du temps !

Plus d'informations et documentation utile :