Aller au contenu

Selfhosted

6 articles avec l'étiquette « Selfhosted »

Installation et utilisation de FreshRSS pour la gestion de vos flux RSS décentraliser (avec applications mobiles)

Pour ma veille technologique, j’ai fait le choix d’utiliser l’outil open source FreshRSS et d’utiliser les Flux RSS. Par le passé, j’utilisais Feedly. Bien que puissant, Feedly dispose de limite comme tout modèle payant (limite de source et de folder).

Vous avez dit flux RSS ?

Les flux RSS ne sont clairement pas tous jeune, mais je trouve qu’à l’aire des réseaux sociaux, elle a encore de beaux jours devant elle.

Les flux RSS (Rich Site Summary) sont des fichiers XML qui permettent aux utilisateurs de suivre facilement les actualités et les contenus web, sans avoir à vous assurer d’actualiser manuellement ces informations. Les flux RSS ont été créés pour combler un déficit dans le fonctionnement des systèmes de partage de contenu tels que les forums en ligne, qui n’ont pas la capacité de proposer une actualisation régulière de leurs contenus.

Voici par exemple sur ce blog le lien vers les flux RSS est : (https://blog.callot.fr/rss/) :

Une fois utilisé dans FreshRSS :

FreshRSS avec docker-compose

Si vous utilisez Portainer pour docker (que je vous conseille) voici mon docker-compose :

version: '3.3'
services:
freshrss:
container_name: freshrss
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Paris
ports:
- '3002:80'
volumes:
- '/docker/appdata/freshrss/data:/var/www/FreshRSS/data'
- '/docker/appdata/freshrss/extensions:/var/www/FreshRSS/extensions'
restart: unless-stopped
image: freshrss/freshrss

Bien entendu, adaptez le path de votre volume et le port par rapport à votre environnement.

Configuration

Une fois lancé nous allons le configurer :

Valider les différentes étapes, jusqu’à la base de données.

Pour la base de données, pour ma part, je reste en SQLite, pour ma part, avec mes besoins, cela suffit largement (avec plus de 100 sources agréger et un historique de 60 jours je n’ai aucun ralentissement), mais si vous le souhaitez, FreshRSS est compatible avec MySQL et Postgres :

Ensuite créer un compte et connectez-vous :

Utilisation de FreshRSS

Maintenant que l’installation est terminée, on va passer à l’utilisation, on va s’abonner à notre premier flux et créer une catégorie actualité :

En cliquant sur le petit ”+” on va pouvoir ajouter des abonnements et rajouter des catégories :

Si vous avez du mal à trouver le flux RSS d’un site je vous conseil l’application Want my RSS sur Firefox.

Une fois ceci fait, vous pourrez retourner dans la gestion de vos abonnements pour avoir une vue de tous vos abonnements :

Les paramètres (gestion de l’archivage, utilisateurs et extensions)

Très bien maintenant, on va pousser un peu plus loin l’outil, nous allons gérer l’archivage histoire de ne pas louper une news :

Ici, vous allez pouvoir modifier certains paramètres comme :

  • La politique de nettoyage par flux RSS
  • L’âge maximum des articles à conserver
  • La durée entre chaque rafraichissement.

La gestion des utilisateurs : des paramètres > gestion des utilisateurs.

Vous allez pouvoir créer des utilisateurs pour qu’ils puissent suivre leurs propre flux RSS :

Application pour Iphone et configuration (NetNewsWire)

Pour l’utilisation de FreshRSS sur un iphone, on va utiliser l’application NetNewsWire, un lecteur de flux RSS opensource, bien pratique sur Iphone qui est compatible avec FreshRSS.

FreshRSS & internet

Pour pouvoir récupérer vos fluxRSS de FreshRSS via Internet, il faut bien entendu que votre instance de FreshRSS soit exposée sur internet. Je ferai sûrement un petit tutoriel sur la question avec le très bon proxy NginxProxyManager. La suite de l’article s’adresse donc à ceux qui ont exposé leur instance de FreshRSS sur internet.

Pour pouvoir récupérer le contenu de votre instance de FreshRSS vous allez devoir créer une clé API :

Créer le mot de passe de l'API

Une fois ceci fait, sur NetNewsWire, il suffit de rentrer les bonnes informations :

Voilà vous avez à présent votre FreshRSS sur votre mobile IOS !

Application pour Android et configuration

Pour l’application Android, j’en ai testé plusieurs, une des rares qui ne soit pas rempli de pub est FeedMe :

Pour la configuration même topo :

Voilà vous avez à présent votre FreshRSS sur votre mobile Android !

Conclusion

FreshRSS permet non seulement de disposer d’une gestion de FluxRSS décentralisé, mais également d’être compatible avec différentes application mobile. Je l’utilise depuis 2 ans est je n’ai jamais eu de souci avec, je vous le recommande donc en remplacement de Feedly pour votre veille.

n8n : utiliser l'API SMS de Free mobile pour vos workflows

Saviez-vous que Free met à disposition une API SMS pour envoyer des notifications SMS directement sur votre téléphone ?

Note : L’API permet d’envoyer des notifications uniquement à votre numéro de téléphone Free, elle ne permet pas d’envoyer des SMS à d’autres numéros, mais c’est parfait pour un système de notification.

Activer la fonctionnalité “notification par sms”

Bien entendu, il faut disposer d’un numéro de téléphone Free pour accéder à cette fonctionnalité. Ensuite, il faut vous rendre dans les paramètres de votre compte Free mobile (https://mobile.free.fr/account/mes-options):

Activer la fonctionnalité (dans “mes options > notification par sms”) :

Copier la clé API pour le besoin juste après.

Utiliser l’API dans n8n

Pour l’exemple, on va créer un workflow qui notifie par sms. On va faire en sorte que ce workflow s’exécute, par le biais d’un autre workflow.

On va créer ceci :

Faire un node Set avec les variables suivantes :

On va définir :

  • user => votre numéro d’utilisateur Free mobile
  • pass => la clé API de notification SMS

Pourquoi ne pas définir sous forme de Credential ?

Les variables, user, pass et mess sont directement encoder dans l’url, pour le moment d’après mes recherches, on peut pas créer de Credential n8n pour les mettre directement dans une URL. Si j’ai faux, merci de me le signaler en commentaire 😄.

Comme nous allons envoyer le message comme variable dans l’url, nous allons créer un node pour encoder le message dans l’url :

Le code :

{{ encodeURIComponent( $json["mess"]) }}

Ensuite, un node HTTP request :

L’URL avec les variables :

https://smsapi.free-mobile.fr/sendmsg?user={{$json.user}}&pass={{$json.pass}}&msg={{$json.mess}}

Pour pouvoir l’utiliser à partir d’un autre workflow on va utiliser le trigger “Execute Workflow Trigger”. Ce trigger prend en paramètre le résultat d’un node précédent, on va le voir après, lors d’un déclenchement à partir d’un autre workflow.

Test avec un autre workflow

Dans le node “Envoi message” on crée une variable “mess” avec notre message test qui sera pris en paramètre du précédent workflow.

Pour le node execute Workflow :

Dans Workflow ID on va mette l’ID du workflow.

Comment obtenir l’ID ?

Tout simplement avec l’URL du Workflow en question :

https://n8n.monlab.fr/workflow/4LjGtoFyzPKgn2xr

Voici un exemple de résultat si c’est ok :

Conclusion

On a vu dans ce tutoriel :

  • Comment activer les notification SMS avec Free mobile
  • Comment envoyer un SMS de notification avec l’API
  • Comment exécuter un workflow avec un autre

Sources :

n8n : Peut-on créer des tâches Notion à partir d'un shortcut IOS ?

n8n : Peut-on créer des tâches Notion à partir d’un shortcut IOS ?

Introduction

Nous pouvons faire bien des choses avec n8n. Dans cet article nous allons voir comment on peut lancer un workflow n8n à partir d’un shortcut sur ios (l’application Raccourcis en français 😄), mais également ce que l’on peut faire avec. Si vous ne connaissez pas encore n8n je vous invites à lire mon article sur celui-ci.

L’intérêt de cette exercice est par exemple de déclencher un Workflow depuis un iphone/ipad/mac 🍎.

Note : utilisation en direct de l’API Notion

Nous pouvons en effet utiliser directement l’API de Notion depuis un shortcut, mais l’avantage d’utiliser n8n va être dans l’utilisation d’autres outils, tel que Telegram pour envoyer une notification ou encore utiliser une variable “choix” pour choisir de créer une tâche dans Notion ou Trello par exemple.

Voici le résultat :

Lancer un workflow à partir d’un shortcut ios ?

Pour commencer, nous allons donc lancer un workflow n8n à partir d’un shortcut. Une manière simple d’y parvenir est d’utiliser un appel webhook. Un webhook est une fonction de rappel basée sur le protocole HTTP.

Sur n8n, on va utiliser le déclencheur “on webhook call” :

Je vais vous détailler certains paramètres car ceci peuvent être utile pour votre workflow :

  1. Test URL” -> Quand vous appuyer sur le “Listen For Test event” c’est l’url qui faudra appeler pour déclencher le Workflow pendant vos tests.
  2. Production URL-> L’URL qu’il faudrait appelé quand votre workflow sera en production, par “production” n8n veut dire quand le workflow sera “actif”.
  3. Authentification” -> comme son nom l’indique cela permet de rajouter une authentification à votre appel webhook typiquement pour éviter que n’importe qui puisse déclencher le workflow.
  4. HTTP Method” -> Vous pouvez indiquer ici, s’il s’agit d’un GET, POST ou autres méthodes HTTP.
  5. Path” -> Permet de personnaliser l’url d’appel du webhook.

On va personnaliser le Path en “test-webhook” (1) pour simplifier un peu et rajouter une authentification (2-3) :

Pour l’authentification basique, ajouter un utilisateur et un mot de passe (dans mon authentification, j’ai utilisé login: test, password : test) :

Maintenant, allons du côté de l’application shortcut :

  1. Je défini une variable “login” qui servira pour les identifiants de l’API, il faudra ensuite l’encoder en base64.
  2. Je défini ensuite mon url en méthode GET dans mon cas, n’oubliez pas d’adapter le l’url par rapport à votre path. On va ensuite utiliser “obtenir le contenu de l’url” (prendre l’url précédente en variable). Ajouter les 2 clés d’en-têtes (Content-Type : application/json & Authorization : Basic suivi de votre variable login).

Cliquer ensuite sur “Listen for test Event” sur n8n, pour lancer le test, puis exécuter le shortcut sur votre iphone.

Félicitation, vous venez dans lancer un workflow n8n depuis un shortcut ios ! 😄

On peut maintenant envoyer de la donnée au Workflow.

Dans le shortcut nous allons :

  • Demander du texte (1)
  • Définir une variable “tache” avec l’entrée indiquée (2)
  • Dans “obtenir le contenu url”, on va envoyer notre variable “tache” pour la récupérer dans n8n. Passer la requête en “POST” pour pouvoir envoyer de la données et mettre la variable dans le corps de la requête. (3)
  • Pareil dans n8n.

Vous pouvez à présent cliquer sur “listen for test event” dans n8n , puis exécuter le Workflow, définir votre texte. Vous pouvez retrouver ensuite vos données dans n8n comme ceci :

Créer une tâche et renvoyer le lien vers celle-ci

On va maintenant envoyer des données dans Notion pour créer une tâche et renvoyer le lien de la tâche précédemment crée vers le shortcut.

Dans Shortcuts :

A la suite du shortcut précédent :

  1. On va obtenir le contenu de l’URL pour récupérer “le retour” de n8n.
  2. On va mettre l’étape “URL” sur “Décoder” puis la variable sur “Contenu de l’URL”, on va ensuite “obtenir la valeur du dictionnaire” une fois pour url et pour tache que l’on va ensuite définir dans la variable url-respond et tache-respond.
  3. On va ensuite envoyer une alerte à l’utilisateur une alerte avec le nom de la tâche et lui proposer d’ouvrir le lien vers la tâche.

Dans n8n :

Dans n8n, nous allons donc récupérer l’appel API et les données, ainsi que répondre avec l’url de la tâche Notion crée :

On va modifier notre webhook :

  1. HTTP Method -> Passer à POST
  2. Respond -> Passer à “Using ‘respond to Webhook’ Node”

On rajouter d’ailleurs, le node en question :

On va renvoyer les données en json à notre shortcut avec les bonnes variables :

Conclusion

Nous venons de voir :

  • Comment déclencher une action dans n8n avec un shortcut IOS et transmettre des données
  • Comment fonctionne les webhook sur n8n
  • Comment renvoyer des données a un shortcut IOS

Un éventail de possibilité s’offre maintenant à vous pour vos workflows 🤩

n8n : Une alternative à Zapier, Make et IFTTT ? (avec installation docker et exemple d'utilisation)

/!\ Article non sponsorisé /!\

Aujourd’hui je vous présente N8N, un outil que j’utilise souvent dans le cadre de projet personnel ou professionnel qui permet d’interconnecté différentes API et d’effectuer des transformation, insertion et suppressions par le biais d’une interface facile à prendre en main. Un outil très utiliser par les “no-codeur”. En NO-CODE on parle également d’outil d’automatisation.

Capture d’écran d’un exemple de Workflow sur le site de N8N

L’intérêt de N8N est qu’il s’agit d’un projet “faircode” (on reviendra après sur cette licence) souvent mis à jours et que vous pouvez avoir une version héberger chez vous.

Un marché très concurrentiel

N8N n’est pas le seul sur le marché, bien au contraire. Il existe bon nombre d’outil plus où moins cher sur le marché voici quelques exemples :

  • Zapier (0€ pour 100 tâches par mois, puis à partir de 18,26€ par mois pour 750 tâches par mois)
  • Make (0$ par mois pour 1000 ops, puis à partir de 9$ par mois pour 10 000 ops)
  • IFTTT (0€ par mois pour 2 Applets, puis à partir 2,30€ par mois)
  • Microsoft Power Automate (à partir de 15$ par mois/utilisateurs ou 0,60$ par run)
  • …bien d’autres

Les prix qui sont notés ici sont datés de l’écriture de ce billet. Il faut également faire attention, la “tâche”, “opération” ou “workflow” ce défini de façon différente selon les outils, il est important de faire différents tests d’un même workflow sur plusieurs outils pour comparer. Par exemple, une “ops” sous Make va représenter souvent simplement l’envoi d’une ligne alors que sous Zapier il s’agit d’une exécution d’un workflow (ou Zaps) en entier.

Je vais pas faire de comparaison pousser ici, mais de ce que j’ai pu voir, Zapier à plus de paramètres et il conviendra mieux aux développeurs, Make est très “user friendly” avec une interface facile à prendre en main et donc idéal pour les débutants. Pour IFTTT (ou définition), il dispose de beaucoup d’intégration disponible pour IOT, il conviendra donc mieux à ceux qui cherchent à automatiser leurs objets connectés. Pour Microsoft Power Automate, il sera forcément mieux intégré à un environnement Microsoft.

Pourquoi utiliser N8N ?

Du coup, pourquoi choisir N8N qui n’est pas dans la liste précédente ? 😄

  • Le prix est le premier argument : en hébergeant la solution moi-même avec du docker, je ne paye pas l’exécution d’un Workflow et j’ai un nombre de Workflow illimités. Par contre si vous souhaitez ne pas héberger la solution, vous pouvez toujours prendre un instance chez N8N voici les prix (selon les modèles, vous pouvez bénéficier d’autres fonctionnalités tel que le versionning, la sauvegarde des identifiants dans un vault ou le SSO pour le modèle entreprise par exemple.) :

Tarification sur le site de N8N

  • FairCode” (pas d’open-source mais l’accès au code) : Et oui vous pouvez accéder au code source de N8N (lien vers le github). Vous pouvez contribuer, à la documentation mais également proposer vos propre node sur npm (les nodes sont les nœuds qui permettent de communiquer avec une API existante ou effectuer des transformation de données).

“Faircode licence” ? N8N est un logiciel Fair-code, c’est à dire qu’il est qu’il est libre d’utilisation, son code est généralement publique mais il peut être limité en fonctionnalité par ces auteurs. Pour plus information vous pouvez allez à la page dédié sur la documentation de N8N

Pourquoi ne pas utiliser N8N ?

Il y a aussi des mauvais côtés que j’ai noté :

  • Pas de possibilité de testé N8N sur leurs serveurs sans payer (comme noté plus haut sauf si vous utilisez du docker, l’intérêt est de l’installer sous cette configuration.)
  • Les applications de bureau sont arrivées en fin de support : avant on pouvez installer N8N directement sous Windows avec un .exe ou sur MacOS avec une application, mais N8N a arrêter le support.
  • Certains node ne dispose pas de tous les appels API et ne sont pas toujours mis à jours.
  • Il est possible d’insérer du code mais uniquement en Javascript pour le moment (le python en bêta).
  • Peut ce montrer moins “user friendly” que Make ou Zapier par moment.

Installation de N8N avec docker-compose

💡

Passer cette étape si vous souhaité utiliser la version SAAS de l’outil

Maintenant que les présentation sont fait avec N8N, on va passer à l’installation. La suite, dans le cadre où vous n’utilisez pas la version SAAS de l’outil.

Prérequis

Lancer un conteneur N8N :

Fenêtre de terminal
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n docker.n8n.io/n8nio/n8n

Docker-compose avec Postgres :

On peut aussi avec docker-compose relier N8N à une base de données Postgres pour plus de performance.

Voici le squelette :

Le .env va permettre de définir les mot de passes, nom d’utilisateurs et nom de la BDD :

POSTGRES_USER=changeUser POSTGRES_PASSWORD=changePassword POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=changeUser POSTGRES_NON_ROOT_PASSWORD=changePassword

On va créer une instance de N8N avec Postgres avec docker-compose :

version: '3.8'
volumes:
db_storage:
n8n_storage:
services:
postgres:
image: postgres:11
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
ports:
- 5678:5678
links:
- postgres
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy

Le init-data.sh permet de crée les utilisateurs :

#!/bin/bash
set -e
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi

N’oublier pas de changer les droits du fichier :

chmod 755 init-data.sh

Utilisation de N8N

Bon maintenant que l’installation de nos conteneurs docker est terminé, si on passé aux choses intéressantes ?

Un peu de vocabulaire :

  • Les workflows -> Un workflow est un ensemble nodes qui sont exécutés pour effectuer des actions qui permettent de faire des choses. Il sont exécutés par un “trigger”
  • Les triggers -> Les triggers sont des nodes permettent de déclencher des Workflows (Ex: Toutes les heures, quand un webhook est appelé ou via un autre workflow 😊)
  • Les nodes -> les nodes, c’est un peu coeur de N8N, si c’était de la programmation ce serait des fonctions. il permettent d’effectuer une action sur une API (récupérer des informations, poster un message…etc) ou une transformation (convertir une date, enlever du texte dans une phrase…etc)
  • Les credentials -> La où vous enregistrerez vos identifiants pour vous connecter aux applications.

Après que vous aillez crée votre compte et que vous vous soyez connectez. Voici l’interface d’accueil :

Interface d’accueil d’N8N

Exemple de Workflow N8N (Notion + Telegram)

Dans cette exemple “basique” de Workflow je vous montre comment envoyer une notification Telegram quand une nouvelle page est ajouté à Notion.

D’abord les credentials :

Pour Notion : rendez-vous ici pour créer votre première intégration. En cliquant sur le ”+” :

Création d’une intégration dans Notion

Une fois l’intégration crée, pensez à copier l’integration secret nous en aurons besoin juste après.

Dans Notion les intégrations n’accède pas à toutes les BDD (et tant mieux 😊) il va falloir lui dire à qu’elle BDD nous souhaitons lui donner accès.

Prenons par exemple une liste des tâches simple. Vous pouvez en cliquant sur les options de la BDD ajouter une nouvelle connections vers votre integration :

Une fois ceci fait vous pouvez voir les droits que l’integration a sur votre BDD :

Ajouter le credential Notion dans N8N :

Allez dans credentials (menu à gauche) > add credentials :

Ajouter un credential dans N8N

Entrer votre secret que vous avez précédemment récupéré (vous pouvez renommer le credential pour ne pas vous y perdre quand vous en avez beaucoup) :

Une fois entrée, un test confirme la connexion.

On va tout de suite tester que notre BDD remonte bien :

Dans Workflows > add Workflow :

On va ensuite rajouter notre premier node : un trigger manually. Ceci va permettre d’executer le Workflow lors de l’appui du bouton en bas au centre.

Création du trigger “manually”

Cliquer ensuite sur le ”+” à coté du node “Manually” pour relier un nouveau node et chercher les nodes Notion :

Choisir “get many database pages” pour récupérer toutes les pages d’une BDD.

Dans “credential” choisir le credential que vous venez de créer :

Choix du credential dans le node

Choisir ensuite votre BDD Notion (seul les BDD que vous avez autorisé préalablement peuvent remonter). Le “Return All” permet de remonter tous les éléments d’une BDD (par défaut 50 éléments ) :

Choix de la BDD Notion dans le node Notion

Vous pouvez quitter l’édition du node (en cliquant en dehors de celui-ci).

Il ne vous reste plus qu’à executer :

Execution du Workflow

Si vous double cliquer sur notion vous pouvez voir dans l’édition du node :

  • 1. L’entrée des données dans le node (ici rien car il s’agit d’un trigger manually)
  • 2. La sortie du node Notion avec nos différentes page de notre Base de données
  • 3. Les boutons permettant de voir les données avec différentes vue (sous format Table, sous format JSON ou sous format de schema)

Interface d’un node

Félicitation vous venez de remonter des données de Notion dans N8N ! 👏

Passons à la phase suivante -> Le bot Telegram.

La première étape est d’entamé la conversation avec le BotFather, c’est l’outil de Telegram pour créer les bots 🤠 (un bot pour crée des bot en somme).

Le BotFather

Commencé par lui demander de crée un nouveau bot avec la commande :

Fenêtre de terminal
/newbot

création du bot

Une fois ceci fait, donner un nom à votre bot (attention celui-ci doit finir par bot à la fin). Vous obtenez alors une clé api :

Clé API pour pouvoir utiliser un bot Telegram

Copier cette clé en cliquant dessus et ajouter la aux credentials N8N :

Une fois ceci fait lancer une conversation avec votre nouveau bot :

Première échange avec notre chatbot

Ce /start que nous venons d’envoyer en débutant la conversation va nous permettre de récupérer l’id de cette conversation avec notre bot.

Pour récupérer l’id de la conversation avec notre bot, on peut utiliser N8N avec un Telegram Trigger connecté à notre credential précédemment rajouté. Il faut cliquer sur le bouton “Listen for Event” pour récupérer l’évènement du /start écris à notre bot. L’ID de la conversation sera dans la sortie

Vous allez pouvoir ensuite envoyer un message test avec un node Telegram send message comme ceci :

Envoi d’un message test dans Telegram

Si tout ce passe bien vous devriez recevoir ceci via Telegram :

Pour désactiver le “This message was sent automatically with n8n” regarder du côté des Additional Fields.

Revenons à notre but principal : envoyé une notification Telegram quand une tâche dans Notion est crée.

Pour cela on va faire un algorithme très simple avec N8N :

Algorithme de notre Workflow pour N8N

⁉️

Pourquoi décochée la notif Telegram dans Notion ? Tout simplement pour éviter de recevoir plusieurs fois la notification. Comme notre Workflow va s’executer plusieurs fois (exemple : toutes les 5 minutes) il faut empêcher le Workflow de renvoyer la même notification.

Dans Notion on va crée un nouveau champ “Notif Telegram” :

Création du nouveau champ Notif Telegram

Dans N8N on va rajouter un if juste après notre Node Notion qui permet de récupérer la BDD :

Ajout du if dans N8N

Puis dans notre “if” :

  • 1. On va mettre une condition type “Boolean” (car la case à cochée sous Notion retourne True ou False).
  • 2. On va utiliser une valeur de type “Expression” ceci pour permettre d’utiliser les variables dans N8N.
  • 3. On clique/glisse notre variable qui contient la case à cochée
  • 4. On clique sur le bouton pour l’activer, cela permet de passer la valeur qui répondra à l’opération “Equal” à “True”

En conclusion de cette étape cela permet de dire “si la case est cochée dans Notion pour notre page, alors on continu vers le prochain node”.

Si “Notif Telegram” est cochée

💡

Pour l’exemple, cochée une case de la base Notion et cliquer sur “Execute Workflow

On va ensuite relier nos différents N_odes_ comme ceci :

Notre Workflow qui avance

Dans le node Telegram on va faire quelques modification pour ajouter des indications 😎 :

Avec les expressions nous rajoutons des informations à notre notification

On peut exécuter pour tester :

Génial vous avez votre belle notification 👏 !!!

Il nous manque une chose pour que la notification de tâche ne s’exécute qu’une fois, pour cela rien de plus simple, on va rajouter un node pour modifier une propriété de la page :

modifier une page d’un database

Ensuite on va mettre le node de modification de notre page à la suite du “if” comme ceci :

Ensuite il suffit d’indiquer l’url de la page Notion à modifier puis de mettre notre propriété “Notif Telegram” en décochée :

Il ne vous reste plus qu’à remplacer le trigger Manually par un trigger “On a schedule” pour exécuter notre Workflow toutes les 5 minutes (par exemple, mais selon votre besoin).

Mise en place du Cron

Votre Workflow final est enfin celui-ci :

Le Workflow final

Conclusion

N8N est un outil puissant permettant d’automatiser des tâches et de transformer la donnée. Les workflow sont simple à mettre en place, mais demandes plus de base en programmation que ces concurrents (notamment pour l’utilisation des expressions). Dans les autres avantages que l’on pourra citer, la capacité d’être selfHosted et un coût mieux maîtriser que ces concurrents.

Je continuerai à faire des articles dédiés à des Workflow N8N dans les prochaines semaines pour vous montrer les possibilités de l’outil.

Installation et sauvegarde de ghost CMS

Commençons par le début : Ghost est un CMS dédié au blog. Il est open source, trés simple d’utilisation et dispose de plein de fonction sympa. C’est ce que j’utilise pour ce blog. Je vais reprendre une parti de la documentation sur le sujet très bien faite.

Installation

Crée un utilisateur dédié (ne pas utiliser l’utilisateur ghost):

Fenêtre de terminal
# exemple ghostuser
adduser ghostuser
# ajouter au super user
usermod -aG sudo ghostuser
# Then log in as the new user
su - ghostuser

Installation Nginx :

Fenêtre de terminal
sudo apt install nginx

Installation de Mysql :

Fenêtre de terminal
sudo apt install mariadb-server

Connexion à Mysql :

Fenêtre de terminal
sudo mysql

Changer le mot de passe root de mysql en vous connectant à mysql :

Fenêtre de terminal
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NouveauMotDePasse');

Créer un utilisateur ghostuser et une BDD dédié au site, ici appellé ghost pour l’exemple. Ensuite lui donner les droits sur la BDD.

GRANT USAGE ON *.* TO 'ghostuser'@localhost IDENTIFIED BY 'mypassword';
CREATE DATABASE ghost;
GRANT ALL privileges ON `ghost`.* TO 'ghostuser'@localhost;

Installer NodeJS :

Fenêtre de terminal
curl -sL <https://deb.nodesource.com/setup_14.x> | sudo -E bash
sudo apt-get install -y nodejs

Installation de Ghost CLI (ghost CLI va permettre de simplifier l’installation) :

Fenêtre de terminal
sudo npm install ghost-cli@latest -g

Création du dossier du site internet :

Fenêtre de terminal
# creation du dossier pour le site
sudo mkdir -p /var/www/sitename
# on donne les doits a l'utilsateur ghost
sudo chown ghostuser:ghostuser /var/www/sitename
# les permissions
sudo chmod 775 /var/www/sitename
# on va dans le dossier
cd /var/www/sitename

L’avantage est que ghost-cli simplifie bien le processus.

Lancer le processus de lancement automatisé de ghost (avec l’utilisateur ghost) :

Fenêtre de terminal
ghost install

En cas de second site ?

Se connecter à mariadb puis refaire une base de donnée :

Fenêtre de terminal
CREATE DATABASE mondeuxiemesite;
GRANT ALL privileges ON `mondeuxiemesite`.* TO 'ghostuser'@localhost;

Refaire une installation avec :

Fenêtre de terminal
ghost install

Suivre les étapes, mais ne pas lancer tout de suite ghost, il faut modifier la conf nginx et modifier les ports :

Fenêtre de terminal
sudo vim /etc/nginx/sites-available/mon-deuxième-site.fr.conf
sudo vim /etc/nginx/sites-available/la-migraine-et-moi.fr-ssl.conf

Toujours une sauvegarde

Création de l’utilisateur de backup :

GRANT USAGE ON *.* TO 'backup'@localhost IDENTIFIED BY 'mypassword';
GRANT ALL privileges ON `backup`.* TO 'ghost'@localhost;
FLUSH PRIVILEGES;

Création du fichier .cnf avec les logins de l’utilisateur :

Fenêtre de terminal
vi ~/.my.cnf
Fenêtre de terminal
[client]
user=backup
password="###"

Changement des droits sur le fichier :

Fenêtre de terminal
chmod 600 ~/.my.cnf
#!/bin/bash
now=$(date +'%Y-%m-%d_%H-%M')
echo "Making backup folder for $now"
mkdir "/home/mon_utilisateur/Backups/ghost/$now"
echo "Saving ghost_prod Database Backup $now"
mysqldump ghost | gzip > "/home/mon_utilisateur/Backups/ghost/$now/ghost_prod.sql.gz"
echo "Compressing content folder"
tar -zcvf "/home/mon_utilisateur/Backups/ghost/$now/content.tar.gz" --absolute-names /var/www/mon_blog/content/ > /dev/null
# supprimer les backups au dela de 7 jours
find /home/mon_utilisateur/Backups/ghost -mtime +6 -exec rm -r "{}" \\;

Ajout du cronjob :

Fenêtre de terminal
crontab -e

Activation tous les jours :

Fenêtre de terminal
0 0 * * * /home/(USER)/Backups/backup.sh

Ensuite il suffit de récupérer le dossier de backup avec un rsync ou un scp.

La cli de ghost permet également d’autres chose comme :

Fenêtre de terminal
ghost update # mettre à jour ghost
ghost restart # redemarer ghost