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

```yaml
# 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

- [Site officiel](https://novu.co)
- [Documentation](https://docs.novu.co)
- [Repository GitHub](https://github.com/novuhq/novu)
- [Selfh.st — Novu](https://selfh.st/apps/?tag=Development)
- [Notification Inbox (composant)](https://docs.novu.co/inbox/introduction)

## 🔗 Pages Liées

- [[cat-development]] — Catégorie Development
- [[app-supabase]] — Couplage courant Novu + Supabase (auth + notifications)
- [[app-appwrite]] — Alternative BaaS avec fonctions de notification
- [[app-traefik]] — Reverse-proxy HTTPS recommandé
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker
