Un service tombe, une sauvegarde se termine ou un capteur détecte une anomalie : dans une maison connectée comme dans une petite infrastructure professionnelle, une alerte utile doit arriver au bon endroit, sans dépendre d’une plateforme supplémentaire. ntfy répond à ce besoin avec un serveur de notifications léger, capable de recevoir un message HTTP et de le transmettre aux appareils abonnés à un sujet.
Associé à Docker Compose, ntfy s’installe en quelques commandes et conserve ses données dans un volume persistant. Le résultat peut rester accessible sur le réseau local, par exemple depuis un Raspberry Pi, ou évoluer vers un accès distant après la mise en place du HTTPS et de l’authentification. Pour Camille, qui veut être prévenue lorsqu’une sauvegarde de son serveur domestique échoue, l’enjeu n’est pas de multiplier les outils : il est de construire une configuration simple, compréhensible et suffisamment sécurisée pour durer.
Ce guide présente une installation locale, les commandes pour publier une première notification et des exemples de déploiement pour les scripts ou Home Assistant. Il détaille aussi les précautions à prendre avant d’exposer le service sur Internet : une notification fiable commence par une configuration maîtrisée.
L’article en bref
Docker Compose permet de lancer rapidement ntfy et de garder ses données après un redémarrage. Voici les étapes essentielles pour recevoir des notifications push sans négliger la sécurité.
- Installation locale : Déployez ntfy avec Docker Compose et un volume persistant.
- Premier message : Publiez une alerte HTTP sur un sujet dédié.
- Automatisations utiles : Reliez scripts, Raspberry Pi et Home Assistant.
- Accès sécurisé : Protégez toute exposition extérieure avec HTTPS et authentification.
À retenir : commencez sur le réseau local, puis élargissez l’accès uniquement avec les protections adaptées.
Pourquoi installer ntfy avec Docker Compose pour ses notifications
ntfy est un service de notifications push auto-hébergé. Une application, un script ou un autre outil publie un message sur un sujet ; les personnes et appareils abonnés à ce sujet le reçoivent ensuite dans une application mobile, un navigateur ou un client compatible.
Cette approche convient aux alertes techniques qui n’ont pas besoin d’un système complexe : fin de sauvegarde, température inhabituelle, mise à jour terminée ou indisponibilité d’un service. Camille peut ainsi ajouter une notification à son script de sauvegarde plutôt que de consulter manuellement les journaux chaque matin.
Un serveur léger pour centraliser les alertes
Dans la pratique, ntfy reçoit des requêtes HTTP et relaie les messages aux abonnés. Les sujets servent de canaux : un sujet réservé aux sauvegardes peut rester distinct d’un autre consacré à la domotique.
Docker facilite l’installation en isolant l’application dans un conteneur. Docker Compose décrit les paramètres du service dans un fichier unique, ce qui rend le déploiement plus facile à relire, à reproduire et à mettre à jour.
Les prérequis avant l’installation de ntfy Docker
Un Raspberry Pi 4 ou 5 sous Raspberry Pi OS 64 bits convient à un usage domestique courant. Un ordinateur Linux ou un serveur compatible Docker peut aussi héberger ntfy, à condition de disposer d’une adresse IP locale stable ou d’une réservation DHCP.
- Docker Engine installé sur la machine qui hébergera le service.
- Docker Compose disponible, généralement via la commande docker compose.
- Un accès au terminal, en local ou par SSH.
- Une adresse IP locale stable pour retrouver le serveur.
Sur Raspberry Pi OS, commencez par actualiser les paquets avec sudo apt update && sudo apt upgrade -y. Vérifiez ensuite la présence de Docker et de Compose avec docker –version et docker compose version.
Installation de ntfy avec Docker Compose étape par étape
Pour limiter les conflits avec d’autres applications, l’exemple ci-dessous rend ntfy accessible sur le port 8080 de la machine. Le port interne du conteneur reste le port 80. Cette configuration vise d’abord un accès local, sans publication directe sur Internet.
Créez un dossier dédié au service et son répertoire de cache avec mkdir -p ~/services/ntfy/cache, puis placez-vous dedans avec cd ~/services/ntfy. Créez un fichier nommé compose.yml dans ce dossier.
Exemple de fichier compose.yml pour ntfy
Ajoutez la configuration suivante. L’image utilise une version explicitement indiquée : avant un déploiement durable, vérifiez la version maintenue disponible et choisissez un tag adapté plutôt que de laisser une mise à jour imprévue modifier le service.
services: ntfy: image: binwiederhier/ntfy:v2.26.3 ; container_name: ntfy ; command: serve ; environment: TZ=Europe/Paris ; volumes: ./cache:/var/cache/ntfy ; ports: « 8080:80 » ; restart: unless-stopped
Cette ligne condensée représente les clés du fichier YAML : chaque propriété doit être placée sur sa propre ligne et indentée sous services, puis sous ntfy. Le montage ./cache:/var/cache/ntfy conserve le cache des messages sur l’hôte, même si le conteneur est recréé.
Pour une instance accessible à travers un nom de domaine, la valeur de base URL et les réglages du serveur devront être adaptés. Ne remplacez pas simplement le port local par une redirection publique : l’accès distant demande une configuration de sécurité complémentaire.
Démarrer le conteneur et vérifier son état
Depuis le dossier qui contient compose.yml, lancez docker compose up -d. L’option -d laisse le service fonctionner en arrière-plan ; au premier démarrage, Docker télécharge l’image si elle n’est pas déjà présente.
Contrôlez ensuite l’état avec docker compose ps. Si le conteneur redémarre ou si l’interface ne répond pas, consultez les dernières lignes du journal avec docker compose logs –tail=30 ntfy.
Depuis un appareil du même réseau, ouvrez http://IP_DU_SERVEUR:8080. Sur le Raspberry Pi, la commande hostname -I affiche ses adresses réseau ; choisissez l’adresse locale accessible depuis les autres appareils.
Configuration de ntfy et premier test de notification
Un sujet fonctionne comme un canal dont le nom doit être connu des personnes ou appareils abonnés. Pour éviter qu’un sujet soit découvert trop facilement, utilisez un nom difficile à deviner, par exemple atelier-maison-7f3k, sans y placer d’information personnelle ou confidentielle.
Depuis le serveur, publiez un premier message avec curl -d « Test reçu depuis mon Raspberry Pi » http://localhost:8080/atelier-maison-7f3k. Dans l’application ntfy ou dans l’interface web, abonnez-vous au même sujet en indiquant l’adresse de votre serveur local.
Ajouter un titre et une priorité au message
Les en-têtes HTTP permettent de rendre une alerte plus facile à interpréter. Pour signaler une sauvegarde terminée, envoyez par exemple : curl -H « Title: Sauvegarde terminée » -H « Priority: high » -d « Le disque USB est synchronisé. » http://localhost:8080/atelier-maison-7f3k.
Une notification doit apporter une information exploitable, pas seulement attirer l’attention. Un titre précis et un message court permettent de distinguer une tâche réussie d’un incident qui demande une intervention.
Paramètres utiles pour choisir son mode de déploiement
| Élément | Configuration locale proposée | Point de vigilance |
|---|---|---|
| Port | 8080 sur l’hôte, port 80 dans le conteneur | Vérifier qu’aucun autre service n’utilise déjà le port 8080. |
| Données | Répertoire local ./cache monté dans le conteneur | Inclure ce dossier dans la stratégie de sauvegarde si nécessaire. |
| Sujets | Un nom distinct par usage ou automatisation | Un nom difficile à deviner ne remplace pas l’authentification. |
| Accès distant | Non activé dans cet exemple | Prévoir HTTPS, authentification et reverse proxy. |
Le choix local réduit le nombre de composants à gérer et constitue un bon point de départ. Le tableau rappelle toutefois qu’un cache persistant et une adresse difficile à deviner ne suffisent pas à sécuriser un service exposé.
Exemples de déploiement de ntfy avec des scripts et Home Assistant
La méthode la plus simple consiste à appeler ntfy à la fin d’une tâche existante. Un script de maintenance peut, par exemple, envoyer une alerte après les vérifications et ne prévenir qu’en cas de réussite ou d’échec, selon le besoin.
Pour une sauvegarde effectuée sur le même serveur, une commande de test peut être envoyée à http://127.0.0.1:8080/atelier-maison-7f3k. Une fois le résultat vérifié sur le téléphone, la commande peut être intégrée au script réel, idéalement après confirmation que les fichiers ont bien été copiés.
Relier un script Bash à un sujet ntfy
Dans un script Bash, ajoutez une requête curl après l’étape dont le résultat doit être signalé. Par exemple : curl -H « Title: Tâche Raspberry Pi » -d « Mise à jour terminée sans erreur » http://127.0.0.1:8080/atelier-maison-7f3k.
Pour rendre l’alerte fiable, le message doit être déclenché par le résultat réel de la tâche. Une notification « terminée » envoyée même après une erreur crée une fausse assurance ; vérifiez donc le code de sortie ou l’état des fichiers avant l’envoi.
Utiliser ntfy avec Home Assistant
Home Assistant peut publier une requête REST vers l’adresse interne de ntfy, ou utiliser une intégration compatible avec la version installée. Le principe reste identique : indiquer le serveur, le sujet et le contenu du message, puis tester l’automatisation avec un événement sans conséquence critique.
Une bonne première automatisation peut signaler le redémarrage d’un appareil ou la fin d’une sauvegarde. Les alertes de sécurité ou de chauffage, elles, méritent des tests supplémentaires et un moyen de notification de secours si leur réception est essentielle.
Sécuriser l’auto-hébergement de ntfy avant l’accès extérieur
Une installation locale n’exige généralement pas d’ouvrir un port sur la box Internet. Dès qu’un accès depuis l’extérieur est nécessaire, le service doit être placé derrière un reverse proxy configuré en HTTPS et protégé par une authentification adaptée.
Le problème, c’est qu’un sujet difficile à deviner n’est pas un contrôle d’accès. Les notifications peuvent contenir des informations sur l’activité d’un réseau ou d’une entreprise ; limitez leur contenu et configurez les droits d’accès selon la documentation de ntfy avant toute exposition publique.
Les erreurs de configuration à éviter
- Publier directement le port 8080 sur Internet : privilégiez un reverse proxy avec HTTPS et des contrôles d’accès.
- Utiliser le même sujet partout : séparez les alertes par usage pour mieux maîtriser les abonnements.
- Oublier le volume persistant : les données stockées uniquement dans le conteneur peuvent disparaître lors de sa recréation.
- Mettre à jour sans vérifier : lisez les notes de version et testez le service après le changement d’image.
- Envoyer des alertes sans validation : confirmez qu’une tâche a réellement réussi avant d’annoncer sa fin.
La bonne approche consiste à traiter ntfy comme un service d’infrastructure, même lorsqu’il ne tourne que sur un Raspberry Pi. Une configuration lisible et des tests réguliers évitent qu’une notification rassurante masque une panne réelle.
Mettre à jour ntfy Docker et résoudre les problèmes courants
Pour actualiser l’image dans le respect du tag choisi, placez-vous dans le dossier du service et exécutez docker compose pull && docker compose up -d. Envoyez ensuite un message de test et contrôlez que les appareils abonnés le reçoivent.
Si l’interface est inaccessible, vérifiez d’abord l’adresse IP, le port publié et la présence des appareils sur le même réseau. Si le conteneur redémarre, les journaux révèlent souvent une erreur de syntaxe YAML, un port déjà occupé ou un problème de droits sur le dossier monté.
ntfy fonctionne-t-il sur un Raspberry Pi ?
Oui. Un Raspberry Pi récent avec un système 64 bits peut héberger ntfy dans Docker. Un modèle Pi 4 ou Pi 5 convient généralement à un usage domestique de notifications.
Faut-il ouvrir un port sur la box pour utiliser ntfy ?
Non, pas pour un usage sur le réseau local. Pour un accès extérieur, configurez un reverse proxy, HTTPS et une authentification avant de rendre le service accessible depuis Internet.
Comment conserver les données de ntfy après un redémarrage ?
Montez un dossier de l’hôte, comme ./cache, dans le répertoire de cache du conteneur. Les données ne dépendent alors pas uniquement du cycle de vie du conteneur.
Pourquoi le téléphone ne reçoit-il pas les messages ?
Vérifiez que l’application utilise le bon serveur et le nom exact du sujet, puis contrôlez les journaux avec docker compose logs ntfy. Assurez-vous également que le conteneur fonctionne et que l’appareil peut joindre le serveur.
Comment mettre à jour ntfy avec Docker Compose ?
Dans le dossier qui contient le fichier Compose, lancez docker compose pull puis docker compose up -d. Après la mise à jour, vérifiez l’état du conteneur et publiez un message de test.




