Huginn et n8n, des alternatives à IFTTT, auto-hébergées et open-source

Vous connaissez IFTTT ? Ce sigle signifie IF This Then That (Si Ceci Alors Cela) et c'est la base de tout algorithme. Ce service web permet de déclencher des actions en fonction d'une ou plusieurs conditions.

Huginn et n8n, des alternatives à IFTTT, auto-hébergées et open-source

IFTTT est un service web, gratuit à sa création, capable de connecter ensemble de multiples services et d'automatiser des tâches simplement, sous la forme de recettes, avec à chaque fois une condition, et une ou plusieurs actions.

Depuis quelques mois, IFTTT a fait évoluer ses services, et pas dans le bon sens. En effet, l'arrivée d'une version Pro avec abonnement à 9,99€ par mois ainsi que la limitation de 3 recettes pour les comptes gratuits, n'augurait rien de bon. Si on ajoute à ça le fait qu'IFTTT a augmenté les tarifs qu'il demandait aux fournisseurs pour faire partie des services supportés, et que plusieurs d'entre eux se sont donc retirés, il faut bien envisager de trouver une alternative à IFTTT.

Parmi les alternatives possibles, deux sortent particulièrement du lot : Huginn et n8n, que je vais vous présenter et vous proposer de mettre en place.


Huggin

Dans la mythologie nordique, Hugin et Munin sont les deux corbeaux messagers qui accompagnent Odin. À l'aube, ils partent et parcourent les neuf mondes et reviennent le lendemain matin pour rapporter au dieu ce qu'ils ont vu et entendu, en le lui murmurant à l'oreille.

Alors Huginn, en plus d'être le messager d'une divinité nordique, permet, tout comme le fait IFTTT, de définir des actions en fonction de conditions. Mais sa grande force est qu'il s'agit d'un logiciel open-source, et qui plus est, que vous pouvez héberger vous-même.

Il est possible de connecter Huginn avec de nombreux services en ligne, dont Twitter, Github, Tumblr, Dropbox, Wunderlist, Evernote, ... et bien d'autres. Pour cela, vous devez configurer les accès des services souhaités.

Quelques exemples d'utilisation de Huginn, tout ça de manière automatique :

  • Envoyer des mails de rapport quotidien
  • Surveiller les prix de produits qui vous intéressent et vous avertir si un prix plancher a été atteint
  • Etre prévenu d'une nouvelle interaction sur un de vos réseaux sociaux

La version qui nous intéresse plus particulièrement se présente sous la forme d'un conteneur Docker.
Il n'y a pas beaucoup d'options à configurer lors de la création du conteneur, si ce n'est que vous avez le choix de définir une base de données externe ou d'utiliser celle intégrée dans l'image huginn officielle. Nous allons faire le choix d'utiliser la base de données intégrée, ce qui est plus simple en terme de configuration et gestion.

La commande pour créer le conteneur est la suivante :

docker run -it -p 3000:3000 -v volume_huginn_mysql:/var/lib/mysql huginn/huginn

Ou son équivalent en tant que stack Docker-Compose :

version: '3.8'
services:
    huginn:
        container_name: huginn
        ports:
            - 3000:3000
        volumes:
            - ./huginn/db:/var/lib/mysql
        image: huginn/huginn
        restart: unless-stopped

Vous pourrez ensuite accéder à l'interface d'Huginn depuis l'URL http://<IP-DOCKER>:3000. Les identifiants par défaut sont admin et password.

Quelques explications sur l'interface d'accueil :

  1. Accès à l'ensemble des agents
  2. Accès à l'ensemble des scenarios
  3. Accès aux événements créés par les agents et scenarios
  4. Vous permet de définir tous les identifiants et mots de passe que vous pourrez réutiliser dans les services
  5. Services externes auxquels Huginn est connecté
  6. Gestion du compte et des utilisateurs
  7. Nombre d'agents et accès rapide vers ceux-ci
  8. Nombre d'événements créés par les agents

A vous maintenant de jouer en ajoutant des agents et en créant des scénarios dans Huginn pour automatiser certaines de vos tâches.


n8n

Une deuxième alternative à IFTT est n8n, une solution elle aussi open-source et gratuite, que vous pouvez également auto-héberger. n8n permet d'interagir entre différentes applications, outils, sites, fichiers, dans le but d'automatiser diverses tâches. Peu consommateur en ressources, il est pourtant très puissant.

Parmi les nombreux services auxquels n8n peut être connecté se trouvent Dropbox, Nextcloud, Microsoft Teams, Discord, Telegram, Github, Google Drive, Gmail, Twitter ou encore Jira, Trello, MySQL ou Postgres, Excel...

Quelques exemples de tâches que vous pouvez automatiser à l'aide de n8n :

  • Créer un bot Telegram
  • Etre prévenu des mises à jour de repository sur Github
  • Réaliser des scénarios avec des équipements MQTT (en tant que déclencheurs uniquement)

Comme pour Huginn, nous allons mettre en place n8n en local sur notre hôte Docker :

docker run -it --rm --name n8n -p 5678:5678 -v ./n8n:/home/node/.n8n n8nio/n8n

Ou encore avec une stack Docker-Compose :

version: "3.8"

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER
      - N8N_BASIC_AUTH_PASSWORD
      - N8N_HOST
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_TUNNEL_URL=https://${N8N_HOST}/
    volumes:
      - ./n8n:/home/node/.n8n
#      - /PATH/TO/FILES:/files  # Personnalisez le chemin pour permettre à n8n d'accéder à des fichiers en local

Comme on l'a déjà vu dans de précédents articles, on va utiliser un fichier .env pour définir les variables d'environnement :

# Sous-domaine et domaine où n8n sera accesible depuis Internet
N8N_HOST=sousdomaine.domaine.com

# Nom d'utilisateur pour n8n - IMPORTANT A CHANGER !
N8N_BASIC_AUTH_USER=user

# Mot de passe pour l'utilisateur - IMPORTANT A CHANGER !
N8N_BASIC_AUTH_PASSWORD=password

L'interface de n8n est plus moderne que celle d'Huginn et la construction des scénarios est ici appelée workflow, qui sont représentés graphiquement.

Le menu est composé de 4 parties :

  • Workflows : Permet de créer un nouveau workflow de 0 ou d'en importer un depuis un fichier ou une URL. On retrouve aussi la sauvegarde, le téléchargement ou la suppression d'un workflow.
  • Credentials : Vous pouvez ici configurer les données d'identification qui seront utilisées dans les workflow.
  • Executions : Vous affiche les dernières exécutions des workflow ainsi que leur statut, et permet d'accéder aux détails de l'exécution pour étudier les erreurs rencontrées.
  • Help : On retrouve ici les liens vers la documentation, le forum ou encore la bibliothèque des workflow.

La bibliothèque de workflows est mise à disposition par n8n et ses utilisateurs pour que vous puissiez vous en inspirer et la communauté est très active si vous avez besoin d'aide.

Un exemple concret de mon utilisation de n8n est la publication automatique des articles du blog sur les réseaux sociaux ainsi que sur notre groupe Telegram !


Conclusion

J'espère que cet article vous aura fait réagir à propos des dérives que peuvent prendre les services cloud, et qu'il est, dans la plupart des cas, possible de trouver des alternatives gratuites et tout autant fonctionnelles. Huginn et n8n peuvent vous permettent de vous affranchir d'une partie du cloud, et vous apporter du confort en automatisant certaines tâches.
Pour ma part, ma préférence va à n8n, que j'utilise pour quelques workflow simples pour le moment.

Si vous avez des questions sur la mise en place d'Huginn ou de n8n, ou même sur la construction de workflows, n'hésitez pas à les laisser en commentaire ou à venir nous les poser sur notre groupe Telegram.