Description
Dispatcharr est un router de notifications spécialisé pour la "*arr suite". Le problème classique : Sonarr envoie vers Discord, Radarr vers Telegram, Prowlarr vers Gotify, et au bout d'un moment on a 5 webhooks différents, 5 templates à maintenir, 5 bots à configurer. Dispatcharr intercepte tous les webhooks sortants de la stack *arr, les normalise, les filtre (par type d'événement, par app, par gravité), puis les redistribue vers une ou plusieurs destinations.
Concrètement : dans chaque *arr, on configure un seul webhook entrant qui pointe vers http://dispatcharr:8080/webhook/sonarr. Dispatcharr reçoit, parse le payload JSON, identifie l'événement ("Episode grabbed", "Download completed", "Health issue"), applique une template custom (Templates Go, syntaxe Mustache-like) et envoie à Discord + Telegram + Ntfy simultanément, avec un formatage propre et des embeds riches.
Dispatcharr supporte aussi les alertes de santé (Health issues) : si Sonarr signale "No indexers available", Dispatcharr peut le router vers un canal Telegram d'urgence distinct. C'est le monitoring léger parfait en complément de Grafana/Prometheus pour la stack *arr.
Installation
Via Docker (recommandé)
# docker-compose.yml
services:
dispatcharr:
image: ghcr.io/dispatcharr/dispatcharr:latest
container_name: dispatcharr
restart: unless-stopped
environment:
- DISPATCHARR_LOG_LEVEL=info
- DISPATCHARR_PORT=8080
volumes:
- ./config:/app/config
- ./templates:/app/templates
ports:
- "8080:8080"
Installation manuelle
Binaire Go statique sur GitHub Releases (curl + chmod +x).
Configuration
- Incoming webhooks : un endpoint par app source (
/webhook/sonarr,/webhook/radarr,/webhook/lidarr). - Destinations : Discord webhook URL, Telegram bot token + chat ID, Gotify URL, Ntfy topic, Email SMTP, Slack, Pushover, webhook custom.
- Templates : un par type d'événement, syntaxe Go templating, support Markdown et embeds riches.
- Filtres : router "Download failed" vers Telegram et "Health issue" vers un canal admin dédié.
- Rate limiting : éviter le spam si un indexer est down.
- Health check : endpoint
/healthpour monitoring externe.
Alternatives
- Apprise / Apprise API — bibliothèque Python plus généraliste, supporte 80+ destinations.
- ntfy — pub/sub simple, pas de templating avancé.
- Notifiarr — concurrent direct de Dispatcharr, focus *arr, plus connu mais plus complexe.
- Gotify — serveur de notifications, pas un routeur.
- n8n / Node-RED — workflows no-code pour relayer des webhooks, plus puissants mais plus lourds.
Sécurité
- Webhook secret : ajouter un header
X-Webhook-Secretà chaque endpoint entrant pour éviter les abus. - HTTPS obligatoire sur les destinations (Discord, Telegram) : Dispatcharr ne chiffre pas en transit interne, donc le réseau Docker doit être de confiance.
- API Keys des destinations : stocker dans des variables d'environnement ou des secrets Docker.
- Logs : désactiver le mode debug en prod, les payloads contiennent des spoilers de release.
- fail2ban sur l'API si elle est exposée.
Ressources
- Repository : https://github.com/dispatcharr/dispatcharr
- Documentation : https://docs.dispatcharr.dev
- Wiki *arr : https://wiki.servarr.com/Useful_Tools#dispatcharr
