Il existe aujourd'hui de nombreux services de notification pour être tenu informé de tous les évènements qu'on souhaite. Nous avions notamment vu l'utilisation de SMS via Free ou encore les notifications Telegram pour recevoir les notifications de notre système domotique Jeedom. Et si on utilisait notre propre serveur de notifications pour être totalement indépendant ? C'est possible grâce à Ntfy, un projet open source qu'il est possible d'installer librement sur son propre serveur.
Présentation de Ntfy
Ntfy, qui se prononce “notify”, est un service de notification ultra léger, permettant d'envoyer des messages vers un smartphone ou un ordinateur via de simples scripts, sans besoin de compte et totalement gratuitement ! C'est un projet open source qui propose une API complète, et qu'il est possible d'héberger sur son propre serveur, comme un Nas par exemple.
Mais s'il est simple à utiliser, Ntfy n'en est pas moins complet, puisqu'il est capable de gérer des niveaux d'importance dans les alertes, gérer les pièces jointes, liens cliquables, etc.
Pour l'utiliser, il suffit d'installer l'application sur son smartphone (disponible sur Android et iOS). Aucun compte à créer: il suffit de s'abonner à une notification. On crée nous même le nom de la notification. Par exemple:
Si on ne veut pas s'embêter avec l'installation du serveur Ntfy, on peut utiliser simplement celui mis à disposition par son créateur.
On envoie alors un message en utilisant le même nom de notification:
On valide. Et on reçoit la notification instantanément sur tous les appareils abonnés à cette notification:
Car en effet plusieurs appareils peuvent être alertés simultanément. En fait chaque appareil “écoute” constamment ce que peut publier le serveur. C'est extrêmement simple d'utilisation, et super efficace !
Comme il existe un package Docker, j'ai donc installé Ntfy sur mon Nas Synology pour héberger mon propre service de notification :)
Pré requis
Les besoins sont simples: il suffira ici de posséder un Nas Synology avec Docker installé dessus (disponible via le Centre de Paquets Synology).
Il faudra également avoir configuré le Reverse Proxy avec le certificat SSL comme nous avions vu dans le guide précédent.
Configuration de l'accès extérieur
Pour que les notifications fonctionnent correctement, le serveur doit être accessible de l'extérieur. Il faut en effet que les applications de notification puisse s'y connecter de n'importe où.
On va commencer par créer une entrée sur le Reverse Proxy. Si votre Reverse Proxy est correctement configuré, avec certificat SSL, etc. il suffit de renseigner quelques informations pour que Ntfy soit accessible:
- on donne un nom à l'entrée: par exemple Ntfy
- on renseigne son nom d'hôte. Par exemple ntfy.mondomaine.synology.me , comme nous avions vu dans le guide sur le Reverse Proxy
- Port: 443
- on coche “Activer HSTS”
- puis dans la destination, on renseigne protocole HTTP, localhost, et le port sur lequel on prévoit de faire tourner le service, par exemple ici 5202:
Enfin, dans l'onglet “Entête personnalisé”, on clique sur “Créer”, puis Websocket. Deux entrées vont être crées automatiquement:
On valide. C'est fini pour le Reverse Proxy. Passons à l'installation du package Docker.
Installation de Ntfy sur Docker
On va commencer par créer deux répertoires sur le Nas via File Station. Dans le répertoire Docker, on crée un répertoire ntfy, puis à l'intérieur un sous répertoire “cache” puis un autre “config”:
Dans l'application Docker, maintenant, dans l'onglet Réseau, on commence par créer une connexion réseau (cela permet de bien séparer les différents conteneurs). On clique sur “Ajouter”:
Et on crée un réseau “ntfy_default” par exemple:
Ensuite, dans le menu “Registre”, on recherche “ntfy”. On sélectionne le paquets “binwiederhier/ntfy”, et on clique sur “Télécharger”.
On sélectionne “lastest” dans la boite de dialogue suivante pour bien avoir la dernière version.
Le téléchargement va très vite, le package pesant moins de 30Mo.
On le retrouve dans le menu “Image”:
On le sélectionne, et on clique sur “Lancer”. On commence par sélectionner la connexion réseau créée plus haut:
Ensuite, on donne un nom au conteneur, par exemple “Ntfy-server”, on coche “redémarrage automatique”, pour être sûr que le service se relance après un redémarrage du Nas.
On clique ensuite “Paramètres Avancés”, puis dans l'onglet commande d'exécution, on ajoute “serve”:
On valide, puis on fait suivant. Là on indique le port renseigné au niveau du Reverse Proxy: nous avions mis 5202:
On va ensuite mapper les deux répertoires créés précédemment, en cliquant sur “Ajouter un dossier”, et on indique en face /var/cache/ntfy et /etc/ntfy:
On valide: il n'y a plus qu'à confirmer, notre conteneur va être créé et démarré:
Si vous tapez dans un navigateur l'adresse renseignée dans le Reverse Proxy pour Ntfy, ici https://ntfy.mondomaine.synology.me, vous devez arriver sur cette page: si c'est le cas, bravo, votre installation fonctionne !
Configuration de Ntfy
Ntfy peut fonctionner tel quel, sans rien faire de plus. C'est ce que j'aime sur ce service: sa simplicité.
Mais il est possible d'ajuster de nombreux paramètres via son fichier de configuration server.yml. Un exemple de ce fichier est disponible ici. Il suffit de l'enregistrer et de le placer dans le répertoire docker/ntfy/config que nous avons créé au tout début.
Il est possible d'activer la gestion d'utilisateurs avec mot de passe, activer un serveur smtp, etc. Tous les paramètres sont disponibles sur la page du développeur. Pour le moment je n'ai activé que trois paramètres, pour indiquer l'url du service, et activer le cache pour les messages et les pièces jointes:
base-url: "http://ntfy.mondomaine.synology.me"
cache-file: "/var/cache/ntfy/cache.db"
attachment-cache-dir: "/var/cache/ntfy/attachments"
Ce qui donne dans le fichier de configuration:
On enregistre le fichier avec les modifications, et on relance le conteneur Docker pour prendre en compte les modifications.
Exemples d'utilisation
Avant de nous lancer dans la mise en place des notifications un peu partout, testons si notre installation fonctionne correctement !
Test de fonctionnement
Sur le smartphone, inscrivez vous à une notification dont vous définirez le nom, et indiquez que vous utilisez un serveur différent, puis indiquez l'adresse de votre serveur sur votre Synology. Par exemple:
A l'adresse de votre serveur Ntfy, saisissez une notification, en reprenant le même nom du sujet. Par exemple:
Validez. Vous devez recevoir instantanément la notification sur votre smartphone:
Si tout est ok, on peut continuer !
Utilisation avec Jeedom
Quand j'ai découvert ce super service, j'en avais discuté sur le forum Jeedom. Il n'a pas fallu longtemps pour que Lunarok nous fasse un super plugin pour utiliser Ntfy dans Jeedom, et ceci gratuitement !
Il suffit de l'installer et de l'activer comme n'importe quel autre plugin Jeedom.
Ensuite via le menu Plugins / Communication / Ntfy, on crée un nouveau périphérique. On lui donne le nom qu'on veut, on l'active, et surtout on complète l'URL Ntfy, qui sera du type https://url-du-serveur-ntfy/sujet-de-notification. Par exemple https://ntfy.mondomaine.synology.me/mes_notif_jeedom_2915 . Attention, utilisez un titre de sujet que personne ne pourra deviner pour que personne d'autre ne puisse s'abonner à vos notifications. Ce peut être une suite de chiffres et de lettres ne voulant rien dire.
On obtient ce widget pouvant envoyer des notifications:
Mais le vrai intérêt, c'est de pouvoir envoyer des notifications via les scénarios. Par exemple ici une notification me confirmant l'ouverture des volets le matin:
Dans le champ Message, on peut taper le message qu'on souhaite. Mais dans le champ Options, il est possible de stipuler le titre via “Title:”, une icône via “Tags”, etc. tous ces arguments étant séparés par un point virgule.
Je recois par exemple cette notification su mon smartphone:
Vous pouvez retrouver toutes les options qu'il est possible de passer sur la page officielle. On peut notamment régler le degrés d'importance du message, ce qui fera réagir le smartphone différemment. Joindre une image, insérer un lien, etc. pour utiliser par exemple la fonction ask de Jeedom. Bref, c'est très complet, et une fois bien maitrisé les différentes options, on ne peut plus s'en passer !
Utilisation avec Synology
Votre Nas Synology vous envoie aussi des notifications par mail ? Vous pouvez les recevoir via Ntfy en passant par votre serveur ! Pour cela, il suffit d'utiliser les webhooks dans la configuration des notifications du Nas:
Je vous invite à consulter le Tuto de Cachem pour la mise en place, qui explique tout de A à Z pour recevoir les notifications du Synology via Ntfy. Il suffira de remplacer l'adresse https://ntfy.sh/ par celle de votre propre serveur Ntfy.
Conclusion
Ntfy est un service de notification vraiment sympa et très bien concu, qui gagne de plus en plus d'utilisateurs. Le site officiel recense d'ailleurs une liste d'autres applications utilisant Ntfy, comme par exemple Radarr et Sonarr, Uptime Kuma, Automatisch, etc.
Je l'utilise maintenant depuis plusieurs mois, et toutes les notifications que je peux faire passer par Ntfy passent par lui ! Tout est centralisé au même endroit, via un service que je gère moi même, et dont les possibilités ne déméritent pas face à d'autres solutions “concurrentes”. Bref, l'essayer c'est l'adopter !
Bonjour
Encore un service ouvert vers internet qui sera demain la porte d’entrée d’un pirate. Avoir des solutions locales c’est bien mais ça demande une expertise qui va au delà de la première installation qui consiste à suivre un tuto sur internet. Combien y a eu de Nas piraté ? Un paquet, y compris dans le monde pro, les salariés pensant mettre leurs données à l’abri des gafa… Données que l’on retrouve quelques mois après sur internet après piratage
Difficile avec toutes ces applications de notification, moi j’utilise Gotify, compatible aussi Jeedom et il y a aussi une application mobile Android. Prise en charge aussi par de nombreux services, à voir avec le temps qui survivra ?
Bonjour et merci pour ton article. Petite question : peut on aussi le configurer pour envoyer des notifications via html?
Hello ! Qu’entends tu par “notifications via html” ?
Sinon tu as pas mal d’exemples d’utilisation sur cette page: https://docs.ntfy.sh/examples/