bruno b049b9ce2a
CI / build (push) Failing after 36s
ci: job unique — artifacts sur chaque push, release via API sur tag
Un seul job build qui:
1. Build 3 archs (linux amd64, linux arm64, windows amd64)
2. Lance les tests
3. Upload les binaires comme artifacts (dispo dans Actions > Summary)
4. Si tag v*: crée une release Gitea + attache les binaires (curl API)

Plus besoin de job release séparé — tout est dans build.
2026-08-05 21:26:21 -04:00
2026-08-03 12:12:12 -04:00
2026-08-03 12:12:12 -04:00
2026-08-03 12:12:12 -04:00
2026-08-03 12:12:12 -04:00

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 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

# 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
Plugin Exec Exécutable externe appelé périodiquement (bash, python, …)

Features

  • ACLs — Restriction par IP (CIDR) ou Bearer token sur chaque webhook
  • Plugins — Scripts externes exécutés toutes les 60s, contrat JSON stdout
  • Dashboard — Interface web avec stats, statuts, historique temps réel
  • Filtres — Règles conditionnelles drop/set_priority/add_tag par source
  • Actions Ntfy — Boutons click, vues, broadcast intégrés
  • Prometheus — Endpoint /metrics pour Grafana
  • Outgoing webhooks — Forward vers Slack, Discord, JSON
  • Silence rules — Mute temporaire des notifs via API
  • Grouping — Regroupement intelligent des notifs identiques
  • State persistence — Sauvegarde de l'état up/down et silence sur disque

Exemple de config minimale

server:
  url: https://ntfy.dracodev.net
  listen: ":9090"

sources:
  gitea:
    - webhook_path: /webhooks/gitea
      topic: dev-notifs

Licence

MIT

S
Description
Hub central de notifications homelab — agrège Gitea, Docker, Uptime Kuma, health checks → notifications Ntfy intelligentes
Readme
319 KiB
Languages
V 84.4%
HTML 7%
Shell 4.3%
PowerShell 3.5%
Dockerfile 0.6%
Other 0.2%