Files
wiki/Catalogue-Self-Hosted/apps/app-novu.md
T
2026-06-09 18:40:21 +02:00

5.5 KiB


title: Novu created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, api, backend, tools] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/novuhq/novu]

💻 Novu

Plateforme de notifications open source — unifie l'envoi de notifications (email, SMS, push, in-app, webhooks) derrière une API unique et un workflow de préférences utilisateur.

📋 Informations Générales

Attribut Valeur
Nom Novu
Slug novu
Description Plateforme de notifications multi-canal (inbox, email, push, SMS, chat)
Site officiel https://novu.co
Repository https://github.com/novuhq/novu
Stars 39 079
Licence MIT (core) + Enterprise (Cloud)
Langage principal TypeScript (Node.js) + React (dashboard, in-app)
Catégorie Development
Tags [catalogue, development, api, backend, tools]

📝 Description

Novu est une plateforme de notifications open source conçue pour unifier l'envoi de messages sur plusieurs canaux depuis une seule API. Les développeurs utilisent un seul SDK (@novu/node) et un seul workflow definition pour router une notification vers email, SMS, push mobile, chat (Slack/Discord/Teams), webhook ou une inbox in-app (composant React/Vue/Angular).

L'inbox in-app est la brique différenciante : c'est un composant embed qui affiche, dans votre application, l'historique des notifications de l'utilisateur avec lu/non-lu, marque-pages et préférences granulaires par canal et par topic — similaire à ce que font Intercom, OneSignal ou Knock, mais en self-hostable.

Modèle de licence : Le core est MIT (auto-hébergeable), mais Novu Inc. a introduit en 2024 une Enterprise License sur certaines briques (SSO/SCIM, audit log avancé, multi-environnements) qui ne sont pas disponibles en self-host MIT. La plateforme cloud novu.co est un service freemium avec palier Pro. Pour un self-host 100 % libre, on dispose de l'API, de l'inbox, de la majorité des providers, mais on perd les features Enterprise.

Cas d'usage : ajouter des notifications transactionnelles (confirmation de commande, alertes) à un produit SaaS sans réimplémenter le routage par canal, l'email templating, le tracking d'ouverture.

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml (stack officielle Novu)
version: "3.8"
services:
  api:
    image: ghcr.io/novuhq/novu/api:0.24
    depends_on: [mongodb, redis]
    environment:
      MONGO_URL: mongodb://mongodb:27017/novu-db
      REDIS_HOST: redis
      JWT_SECRET: ***changeme***
    ports: ["3000:3000"]

  worker:
    image: ghcr.io/novuhq/novu/worker:0.24
    depends_on: [mongodb, redis]
    environment:
      MONGO_URL: mongodb://mongodb:27017/novu-db
      REDIS_HOST: redis

  web:
    image: ghcr.io/novuhq/novu/web:0.24
    ports: ["4200:8080"]

  mongodb:
    image: mongo:7
    volumes: ["./mongo:/data/db"]

  redis:
    image: redis:7-alpine

⚠️ La stack complète inclut aussi ws (WebSocket pour l'inbox temps réel) et embed (widget JS) — voir le repo officiel.

Installation manuelle

Déconseillé : le projet est un monorepo TypeScript avec ≥8 services interconnectés. Privilégier l'image Docker officielle (Helm chart Kubernetes aussi disponible).

⚙️ Configuration

  • JWT_SECRET : secret partagé entre API et Worker, long et unique.
  • Providers SMTP/SMS/Push : à configurer depuis l'UI dashboard (/integrations), chaque provider a ses credentials (SendGrid, Twilio, FCM, APNS, Slack…).
  • MongoDB : URI avec auth à partir du moment où l'instance est exposée.
  • Redis : utilisé comme broker de jobs, obligatoire pour les workers.
  • Variables frontend : REACT_APP_API_URL, REACT_APP_WS_URL à pointer vers l'API/WS derrière le reverse-proxy.

🔗 Alternatives

  • Knock — Concurrent direct, plus orienté produit, moins orienté self-host.
  • OneSignal — Notifications push gratuites, mais service cloud uniquement.
  • Knative Eventing / Apache Kafka + SMTP — Plus bas niveau, davantage de travail d'intégration.
  • Supabase + pg_net — Combinaison maison pour des besoins simples, sans UI de templates.

🔒 Sécurité

  • API key & secrets providers : stocker via secrets Docker / Vault / SOPS, jamais en clair dans le compose.
  • JWT : rotation régulière de JWT_SECRET invalide toutes les sessions en cours.
  • MongoDB : activer l'auth (MONGO_INITDB_ROOT_USERNAME/PASSWORD) et ne pas exposer 27017.
  • Dashboard : mettre en place un SSO/OIDC devant l'UI si l'instance est partagée en équipe.
  • Rate-limiting : Novu expose des endpoints publics (webhooks entrants) — limiter via reverse-proxy (fail2ban, Traefik middlewares).

📚 Ressources

🔗 Pages Liées