# ntfy-bridge Hub central de notifications pour homelab — agrège des sources multiples (Gitea, Docker, Uptime Kuma, health checks HTTP, scripts cron) et les transforme en notifications [Ntfy](https://ntfy.sh/) intelligentes, formatées, avec priorités et contexte. ``` ┌─────────────────┐ │ Gitea webhook │──┐ ├─────────────────┤ │ │ Uptime Kuma │──┤ ├─────────────────┤ │ ┌──────────────┐ ┌───────────┐ ┌──────────────┐ │ Docker events │──┤────→│ ntfy-bridge │─────→│ Ntfy Srv │─────→│ Ton phone │ ├─────────────────┤ │ └──────────────┘ └───────────┘ └──────────────┘ │ HTTP health │──┤ ├─────────────────┤ │ │ Scripts cron │──┘ └─────────────────┘ ``` ## Pourquoi ntfy-bridge ? Dans un homelab avec 8+ hôtes Docker, Gitea, Uptime Kuma et des dizaines de services, les alertes arrivent de partout. `ntfy-bridge` centralise tout dans une seule file de notifications intelligentes — avec le bon niveau de priorité, le bon format, et le bon topic Ntfy. | Sans ntfy-bridge | Avec ntfy-bridge | |---|---| | Webhook Gitea → email (noyé) | Push = notif Ntfy formatée avec auteur, commit, message | | Uptime Kuma → alerte brute | "🚨 Gitea DOWN — 503 — since 14:32" avec priority=5 | | Container qui crashe → logs Docker | "🐳 flowdeck exited OOMKilled on docker-prod-1" | | Script cron → email perdu | Résumé quotidien disque à 9h dans ta poche | ## Quick Start ```bash # Installer V (si pas déjà fait) curl -s https://github.com/vlang/v/releases/latest/download/v_linux.zip -o /tmp/v.zip unzip /tmp/v.zip -d /tmp && sudo /tmp/v/v symlink # Compiler git clone https://git.dracodev.net/bruno/ntfy-bridge.git cd ntfy-bridge v . # Configurer cp ntfy-bridge.example.yaml ntfy-bridge.yaml vim ntfy-bridge.yaml # Lancer ./ntfy-bridge --config ntfy-bridge.yaml ``` ## Sources supportées | Source | Type | Description | |--------|------|-------------| | **Gitea** | Webhook | Push, PR, issues, releases → notifs formatées | | **Uptime Kuma** | Webhook | Statut up/down avec priorité critique | | **Docker** | Socket | Container start/die/oom/health_status | | **HTTP Poll** | Polling | Health checks périodiques | | **Cron** | Webhook | Reçoit des notifs depuis des scripts shell | | **Generic** | Webhook | Endpoint passe-partout pour tout script custom | ## Exemple de config minimale ```yaml server: url: https://ntfy.dracodev.net listen: ":9090" sources: gitea: - webhook_path: /webhooks/gitea topic: dev-notifs ``` ## Licence MIT