NTFY

ntfy est un outil open source léger qui permet d’envoyer des notifications push à vos appareils (smartphones, ordinateurs, etc.). Il fonctionne comme un système de messagerie simple pour vous avertir en temps réel d’événements importants.

Grâce à ntfy, vous pouvez recevoir des alertes personnalisées depuis vos serveurs, scripts, ou applications.

Présentation

image.png

Qu’est-ce que ntfy ?

ntfy est un outil open source léger qui permet d’envoyer des notifications push à vos appareils (smartphones, ordinateurs, etc.). Il fonctionne comme un système de messagerie simple pour vous avertir en temps réel d’événements importants.

Grâce à ntfy, vous pouvez recevoir des alertes personnalisées depuis vos serveurs, scripts, ou applications.

À quoi sert ntfy ?

ntfy sert à envoyer rapidement des notifications à distance, sans passer par des services tiers. Il est souvent utilisé pour être alerté d’événements critiques, comme des erreurs serveur, des tâches terminées, ou des changements d’état.

Vous gardez ainsi un œil sur vos systèmes même à distance.

Comment fonctionne ntfy ?

ntfy se compose d’un serveur qui reçoit les messages et d’applications clientes (sur Android, iOS, ou via la ligne de commande) qui reçoivent les notifications.

Les messages sont envoyés en HTTP simple, ce qui facilite leur intégration dans vos scripts et outils existants.

Pourquoi utiliser ntfy ?

ntfy est apprécié pour sa simplicité, sa légèreté, et le fait qu’il soit auto-hébergé. Vous contrôlez entièrement vos données sans dépendre de services externes.

Il permet de créer rapidement un système d’alerte personnalisé adapté à vos besoins.

Cas d’usage courants

ntfy est utilisé pour :

En résumé

ntfy est un système de notifications simple, efficace et privé, idéal pour rester informé des événements importants dans votre infrastructure.

Installation

image.png

Fichier docker-compose

Dans cette procédure, nous allons utiliser Docker. Une documentation préalable à ce sujet est disponible ici.
Commençons par créer un fichier docker-compose.yaml, adapté à nos besoins :

services:
  ntfy:
    image: binwiederhier/ntfy  # On utilise l'image officielle du service Ntfy, un serveur de notification en temps réel (push).
    container_name: ntfy       # On nomme le container "ntfy" pour le retrouver plus facilement via Docker ou Portainer.
        command:
      - serve                  # On lance le service avec la commande "serve", qui démarre le serveur Ntfy.
    environment:
      - TZ=UTC+01:00           # On définit le fuseau horaire (ici UTC+1, soit Paris/Bruxelles en hiver).
    user: 1000:1000            # Le container s'exécute avec l'UID et GID 1000 (souvent le premier utilisateur local), pour éviter les droits root.
    volumes:
      - /var/cache/ntfy:/var/cache/ntfy  # Volume pour stocker les données en cache (messages, abonnements…).
      - /etc/ntfy:/etc/ntfy              # Volume pour les fichiers de configuration personnalisés de Ntfy.
    ports:
      - 8080:80                # On expose le port interne 80 du container sur le port 8080 de l'hôte (http://localhost:8080).
    healthcheck:              # Vérification régulière que le service fonctionne bien :
      test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
      interval: 60s           # Le test est exécuté toutes les 60 secondes.
      timeout: 10s            # Il échoue si le test ne répond pas en moins de 10 secondes.
      retries: 3              # Après 3 échecs consécutifs, Docker considère que le container est "unhealthy".
      start_period: 40s       # On attend 40 secondes après le démarrage avant de commencer les vérifications.
    restart: unless-stopped   # Le container redémarre automatiquement sauf si on l'arrête manuellement (bon compromis pour la stabilité).

Démarrage

Une fois le fichier docker-compose.yaml créé, nous pouvons lancer NTFY avec la commande suivante :

docker compose up -d

 

Créer des sujets

image.png

Interface Web

Dans une premier temps, il faut se rendre, sur l'interface web de NTFY : http://<ip>:<port>

Cela permet de faire des tests depuis une invite de commande linux par exemple :

curl -d "Backup successful 😀" <ip>:<port>/monsujet

Vous aurez alors ce retour, sur l'interface web :

ntfy-notif.png

Utilisations

On peut alors choisir de définir une alerte quand il mise à jour est disponible :

#!/bin/bash
# Exécution des commandes de mise à jour
apt update && apt upgrade -y
# Envoi de la notification à la fin
curl -H "Title: Mise à jour terminée" \
     -H "Priority: high" \
     -d "$(hostname) - $(date +'%Y-%m-%d %H:%M') - Update Done!" \
     http://<ip>:<port>/Updates

Il existe aussi des applications compatibles, comme Sonarr, Radarr, NetAlertX.
Il est alors possible d'être informé lorsqu'un fichier est disponible, ou quand un nouvel appareil se connecte au réseau.

Une utilisation très intéressante aussi est avec la supervision, pour recevoir des notifications lorsqu'un appareil est Down par exemple avec Zabbix, sur un sujet différent : http://<ip>:<port>/Alertes.

Application Mobile

Il existe une application mobile, afin de recevoir les notifications sur son téléphone.
Du même nom que le serveur, l'application est facile à prendre en main, il suffit d'ajouter l'adresse du serveur, ainsi que le nom du sujet pour recevoir les notifications associés