Le problème : trop d'outils de monitoring, trop de canaux de notification
Uptime Kuma surveille vos services, Beszel surveille vos métriques VPS, Changedetection.io surveille vos pages web, et vos cron jobs se taisent la nuit — sauf quand ils échouent. Chacun a son canal de notification : Slack, e-mail, webhook, Telegram. Résultat : vous avez cinq intégrations différentes à maintenir, cinq types d'alertes à formater, et aucune vue unifiée quand quelque chose casse à 03h00. ntfy résout ce problème à l'envers : c'est vous qui hébergez le hub de notifications, et chaque outil ou script y envoie ses alertes en HTTP brut.
Ce que ntfy apporte hors de la boîte
- Envoi d'une notification avec un simple curl —
curl -d "Build échoué" http://votre-vps/alertes-ci— zéro SDK, zéro bibliothèque. - Réception sur Android (F-Droid / Play Store), iOS (App Store), navigateur desktop et interface web ntfy — tous souscrivent au même topic via WebSocket ou SSE.
- Actions dans la notification — boutons qui déclenchent des callbacks HTTP, ouvrent des URLs ou exécutent des commandes sur l'appareil.
- Notifications planifiées — livraison différée (
X-Delay: 30min) pour programmer des rappels depuis des scripts. - Niveaux de priorité (min / basse / défaut / haute / urgente) avec contournement du mode Ne Pas Déranger pour les alertes critiques.
- Pièces jointes — images ou fichiers jusqu'à 15 Mo via l'en-tête
X-Attachou un upload multipart. - Contrôle d'accès — ajoutez des utilisateurs, mots de passe et ACL par topic via
ntfy useretntfy accessCLI. - < 30 Mo RAM, SQLite, conteneur unique — le serveur de notifications push le plus léger de sa catégorie.
Architecture : un pub/sub HTTP en conteneur unique
ntfy est un binaire Go qui tient en un seul conteneur Docker. Il expose une interface HTTP simple : PUT ou POST sur /votre-topic publie un message ; n'importe quel client qui écoute ce topic (via WebSocket, SSE ou l'app mobile) le reçoit instantanément. Les messages sont mis en cache dans SQLite (/var/lib/ntfy/cache.db) avec une rétention configurable (12 heures par défaut). La variable NTFY_BEHIND_PROXY=true indique à ntfy qu'il est derrière un reverse proxy (nginx) et qu'il doit lire l'IP réelle depuis X-Forwarded-For.
Déployer et utiliser ntfy en 6 étapes
Déployer ntfy depuis le marketplace ServOrbit
Ouvrez votre tableau de bord ServOrbit → Marketplace → Monitoring → ntfy → Déployer. Docker tire
binwiederhier/ntfy:latest, démarre ntfy sur le port 8080 et l'interface web est accessible en moins de 5 secondes. Aucun fichier de configuration requis au premier démarrage.Envoyer votre première notification
Depuis n'importe quel terminal avec curl :
curl -d "Bonjour depuis mon VPS" http://ip-de-votre-vps:8080/mon-topicOuvrez l'interface web ntfy sur la même URL, naviguez vers
mon-topicet votre message s'affiche en temps réel. Les topics sont créés au premier envoi — aucun paramétrage préalable.Souscrire sur votre téléphone
Installez l'app ntfy (Android : F-Droid ou Play Store ; iOS : App Store). Appuyez sur +, entrez l'URL de votre serveur et le nom du topic. Vous recevrez des notifications push dès qu'un message sera publié — même quand l'app est en arrière-plan, via UnifiedPush (Android F-Droid) ou FCM (Android Play) ou APNs (iOS).
Connecter vos outils de monitoring
Dans Uptime Kuma : Paramètres → Notifications → ntfy → entrez l'URL du serveur et le topic. Faites de même avec Beszel, Changedetection.io et Grafana — chaque outil pointe vers le même serveur ntfy avec un topic distinct. Toutes vos alertes monitoring arrivent dans un hub unifié sur votre téléphone.
Alerter depuis vos scripts et cron jobs
Ajoutez une ligne à la fin de chaque script critique :
# En fin de backup curl -H "Title: Backup nuit" -H "Priority: high" -d "Backup terminé à $(date)" http://votre-vps:8080/cron-jobs # En cas d'erreur curl -H "Tags: warning" -d "Backup ÉCHOUÉ : code $?" http://votre-vps:8080/cron-jobsLe silence devient le signal d'une anomalie ; la notification push confirme l'exécution normale.
Se connecter la première fois
ntfy démarre SANS aucun compte ni mot de passe : l'URL s'ouvre directement sur l'interface, et quiconque connaît l'adresse peut lire ET publier sur n'importe quel sujet. Si votre serveur est joignable depuis Internet, activez l'authentification avant de vous en servir sérieusement.
Tip : noms de topics comme namespaces
Organisez vos alertes par source : ci-builds pour GitHub Actions/GitLab CI, server-alerts pour Uptime Kuma/Beszel, cron-jobs pour vos scripts batch. L'app ntfy vous permet de mettre en sourdine certains topics la nuit (ex. cron-jobs) tout en gardant server-alerts en alerte maximale. Aucune configuration côté serveur — juste le nom du topic dans le curl.