Auto-héberger ntfy et se notifier de tout

ntfy est un petit service auto-hébergeable, permettant de se faire notifier de presque tout. En comparaison avec Gotify qui est aussi très simple et hébergeable chez soi, je trouve que ntfy est bien plus flexible et peut être adapté au service que l’on souhaite, soit par les outils intégrés à sa distribution : curl, HTTP POST, js, Go, Python, PHP, ou alors en se forgeant un petit script intermédiaire qui sera exécuté régulièrement par sa machine linux, windows, mac ou rpi.

Afin de récupérer ses notifs sur smartphone, nous allons compter sur l’app ntfy dans les différents app stores, dont F-Droid. Sinon, sur votre ordinateur, il sera aussi possible de définir un genre de Web App sur sa barre de tâches.

Etape #1 : Installer ntfy sur docker

Rien de plus simple en utilisant docker-compose sur portainer ou alors, définir une image custom sur CasaOS avec les paramètres suivants :

version: "2.3"

services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    restart: unless-stopped
    command:
      - serve
    environment:
      - TZ=Europe/Paris    # mettre à jour son TZ pour sa ville
    #user: UID:GID # optional: replace with your own user/group or uid/gid
    volumes:
      - ~/AppData/ntfy/var/cache/ntfy:/var/cache/ntfy # mettre à jour le répertoire où va se trouver le cache de notifications
      - ~/AppData/ntfy/etc/ntfy:/etc/ntfy  # mettre à jour le répertoire où va se trouver les configs de l'application
    ports:
      - 8085:80   # mettre à jour le port qui exposera le service sur votre serveur, ici "8085"
        test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
        interval: 60s
        timeout: 10s
        retries: 3
        start_period: 40s

Ceci étant fait, on peut lancer son docker-compose et ensuite consulter les logs pour identifier si tout fonctionne.

Vérification des logs
Pas de messages d’erreur

Ensuite, nous lançons le service sur un navigateur avec le port configuré précédemment :

ntfy en mode http, non-sécurisé

Le service est bien fonctionnel, avec le bémol que nous ne pouvons pas y accéder faute d’un accès https. Cela est facile à résoudre, soit en le configurant dans votre reverse-proxy, ou alors en utilisant le tunnel cloudflare, pour les options nécessitant peu d’ouverture de ports (ou pas du tout pour cloudflared).

Etape #2 : Rajouter un utilisateur et son token

Nous avons donc un service ntfy qui fonctionne sur internet. Nous pouvons déjà créer un « Topic » afin d’y publier des notifications de manière public. Cependant, pour sécuriser la bête, nous allons donner quelques permissions à un utilisateur lambda sur un « Topic ». Pour cela, nous avons deux choix :

  1. Exécuter /bin/sh dans le container ntfy :
docker exec -it <id du container> /bin/sh

2. Ou alors, utiliser portainer, si vous l’avez installé pour accéder à l’invite de commande du container ntfy :

Il nous reste à rajouter un utilisateur :

ntfy user add <utilisateur>

Lui donner un accès de lecture et d’écriture à un sujet ou « Topic » ainsi :

ntfy access <utilisateur> montopic rw

Lui rajouter un token pour faciliter l’authentification :

ntfy token add <utilisateur>

Afin de vérifier que l’utilisateur a bien un token, on tape :

ntfy token list
Token genéré et utilisable pour l’utilisateur en question

Etape #3 : Créer un « Topic » et tester les notifications

Et pour tester notre première notification sécurisée, on va créer le topic qui nous intéresse dans l’interface ntfy, exemple « montopic ».

Ensuite, sur une machine quelconque, on envoie le message suivant, avec curl pour aller au plus simple :

curl -u :<token> -d "Mon premier message - ça roule?" https://<mon serveur ntfy>/montopic
Notification reçue

Et, en rajoutant un titre, une priorité et quelques émos comme ceci :

curl -u :<token> -H "t: Bonjour Monde" -H p:5 -H ta:tada -d "Mon premier message - ça roule?" https://<mon serveur ntfy>/montopic
Notification améliorée – version Web
Version Appli ntfy sur smartphone

On peut aussi installer le Web App pour avoir des notifications sans que son navigateur soit ouvert, ainsi :

Conclusion

Nous avons entrouvert tout juste la porte des notifications avec ce tuto rapide. L’outil peut faire remonter des évènements bash, des backups qui plantent, des batteries faibles, des routeurs dont une mise à jour est disponible, sans parler des applications qui l’intègrent déjà directement, comme Sonarr, Radarr, Prowlarr, Uptime Kuma, etc.

0 0 votes
Article Rating
S’abonner
Notification pour
guest

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x