Back to Apps
Novu

Deploy Novu on Your Own Server

Open Source Notification Infrastructure For Developers

πŸ“¦ Other

Want to deploy Novu on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.

Get Started

What is Novu?

Novu is a fully functional real-time notification center for your web and react apps. The only open-source notifications infrastructure that manages multi-channel content, scheduled notifications, digest engine, user preferences, and delivers Email, SMS, Push and Chat notifications using a single API.

Learn more

Self-Host Novu

Follow these steps to deploy on your own server.

1

Install Docker

Skip this step if Docker is already installed on your server.

curl -fsSL https://get.docker.com | sh
2

Configure

Customize the settings below. Defaults work for most cases.

Application
Redis
MongoDB
General
Security
Privacy
API
Networking
S3
3

Deploy

Copy the configuration and run it on your server.

services:
  novu:
    image: ghcr.io/novuhq/novu/web:0.8.0
    environment:
      REACT_APP_API_URL: http://novu-api.your-domain.com
      REACT_APP_DOCKER_HOSTED_ENV: "true"
      REACT_APP_ENVIRONMENT: prod
      REACT_APP_WIDGET_EMBED_PATH: http://novu-embed.your-domain.com/embed.umd.min.js
    depends_on:
      - novu-api
  novu-api:
    image: ghcr.io/novuhq/novu/api:0.8.0
    environment:
      API_ROOT_URL: http://novu-api.your-domain.com
      AWS_ACCESS_KEY_ID: test
      AWS_SECRET_ACCESS_KEY: test
      DISABLE_USER_REGISTRATION: "false"
      FRONT_BASE_URL: http://novu.your-domain.com
      JWT_SECRET: 67852d50df15d7411f46ac2628d78bf2
      MONGO_URL: mongodb://novu-db/novu
      NODE_ENV: prod
      PORT: "3000"
      REDIS_DB_INDEX: "2"
      REDIS_HOST: novu-cache
      REDIS_PORT: "6379"
      S3_BUCKET_NAME: novu-local
      S3_LOCAL_STACK: http://localhost:4566
      S3_REGION: us-east-1
      SENTRY_DSN: ""
      STORE_ENCRYPTION_KEY: 169583bb25ec0498b712868b8e364fad
    depends_on:
      - novu-db
      - novu-cache
  novu-cache:
    image: redis:7.0.5
  novu-db:
    image: mongo:6.0.2
    environment:
      PGID: "1000"
      PUID: "1000"
    volumes:
      - novu-db:/data/db
  novu-embed:
    image: ghcr.io/novuhq/novu/embed:0.8.0
    environment:
      WIDGET_URL: http://novu-widget.your-domain.com
    depends_on:
      - novu-widget
  novu-widget:
    image: ghcr.io/novuhq/novu/widget:0.8.0
    environment:
      REACT_APP_API_URL: http://novu-api.your-domain.com
      REACT_APP_ENVIRONMENT: prod
      REACT_APP_WS_URL: http://novu-ws.your-domain.com
    depends_on:
      - novu-api
      - novu
  novu-ws:
    image: ghcr.io/novuhq/novu/ws:0.8.0
    environment:
      JWT_SECRET: 67852d50df15d7411f46ac2628d78bf2
      MONGO_URL: mongodb://novu-db/novu
      NODE_ENV: prod
      PORT: "3002"
      REDIS_HOST: novu-cache
      REDIS_PORT: "6379"
    depends_on:
      - novu-db
      - novu-cache
volumes:
  novu-db: {}

Then run:

docker compose up -d
4

Access

Once started, access your app at http://localhost:80

Why Self-Host Novu?

Full Data Ownership

Your data stays on your servers. No third-party access.

No Monthly Fees

Pay only for your server. No per-seat or usage charges.

Complete Control

Customize, backup, and scale on your own terms.

Privacy & Compliance

Meet GDPR, HIPAA, or internal security requirements.

Technical Details

Docker Image

${NOVU_IMAGE_URL}/web:${NOVU_IMAGE_VERSION}

Official Docs

docs.novu.co

Want to go faster?

Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.

Install on any Linux server:

sh -c "$(curl -sSL https://get.senate.sh)"