Deploy Novu | Open-Source Notifications Infrastructure, Knock & OneSignal Alternative
Self Host Novu. Email, SMS, push, in-app, Slack, Teams & more channels
Novu-Dashboard
Just deployed
MongoDB
Just deployed
/data/db
Novu-Worker
Just deployed
Novu-API
Just deployed
Redis
Just deployed
/data
Novu-WS
Just deployed
Deploy and Host Novu on Railway
Deploy Novu on Railway to get a fully self-hosted notification infrastructure with a unified API for email, SMS, push, in-app, and chat notifications. Self-host Novu on Railway and own your notification data while integrating with providers like SendGrid, Twilio, Firebase Cloud Messaging, Slack, and Microsoft Teams.
This Railway template pre-configures six services — Novu API (ghcr.io/novuhq/novu/api:3.15.0), Novu Worker, Novu WebSocket server, Novu Dashboard, MongoDB for data persistence, and Redis for queue management and caching — all wired together with proper cross-service references so you can start building notification workflows immediately.

Getting Started with Novu on Railway
After deployment completes, open the Novu Dashboard URL in your browser. You'll be prompted to create your first account with an email and password (social login is not available in self-hosted mode). Once signed in, create an organization and you'll land on the main dashboard.
Navigate to Integrations in the sidebar to connect your first delivery provider — for example, add your SendGrid API key for email or Twilio credentials for SMS. Then head to Workflows to create your first notification workflow. Select a trigger event, add channel steps (email, in-app, SMS, push, or chat), and configure the content template for each.
Test your workflow by triggering it via the API or using the built-in test panel. The Worker service processes the notification queue in the background while the WebSocket server delivers real-time in-app notifications to connected clients.

About Hosting Novu
Novu is an open-source notification infrastructure platform (MIT license) that provides a unified API and visual dashboard for managing multi-channel notifications. It solves the problem of building and maintaining notification systems from scratch — routing logic, template management, subscriber preferences, delivery tracking, and retry handling.
Key features:
- Multi-channel delivery — email, SMS, push, in-app inbox, Slack, Teams, Discord, WhatsApp
- Visual workflow editor — drag-and-drop notification flow builder with conditions, delays, and digest
- In-app notification center — embeddable React/Angular/Vue inbox component
- Subscriber preference management — users control which channels they receive notifications on
- Content management — template editor with variable interpolation and i18n support
- Delivery observability — track notification status, delivery rates, and failures
The architecture consists of an API server handling REST endpoints, a Worker service processing the notification queue asynchronously, a WebSocket server for real-time in-app delivery, and a Dashboard SPA for visual management.
Why Deploy Novu on Railway
- One-click deploy with MongoDB, Redis, and all Novu services pre-wired
- Full data ownership — notifications, templates, and subscriber data stay on your infrastructure
- No per-notification pricing — pay only for Railway compute, not per message sent
- Scale Worker replicas independently for high-throughput notification processing
- Private networking between services for secure internal communication
Common Use Cases for Self-Hosted Novu
- SaaS product notifications — transactional emails, in-app alerts, and digest summaries for your application users
- DevOps alerting — route infrastructure alerts to Slack, email, and PagerDuty with priority-based workflows
- E-commerce order updates — order confirmation, shipping, and delivery notifications across email and SMS
- Multi-tenant platforms — isolated notification workflows per tenant with subscriber preference management
Dependencies for Novu on Railway
- Novu API —
ghcr.io/novuhq/novu/api:3.15.0— REST API server - Novu Worker —
ghcr.io/novuhq/novu/worker:3.15.0— background job processor - Novu WS —
ghcr.io/novuhq/novu/ws:3.15.0— WebSocket server for real-time delivery - Novu Dashboard —
ghcr.io/novuhq/novu/dashboard:3.15.0— web management UI - MongoDB —
mongo:8.0— primary data store (Railway-managed) - Redis —
redis:8.2.1— queue management and caching (Railway-managed)
Environment Variables Reference
| Variable | Service | Description |
|---|---|---|
JWT_SECRET | API, WS | Signing key for authentication tokens |
STORE_ENCRYPTION_KEY | API, Worker | Encrypts provider credentials (32 chars) |
NOVU_SECRET_KEY | API | Internal API secret |
MONGO_URL | API, Worker, WS | MongoDB connection string |
REDIS_HOST | API, Worker, WS | Redis hostname for queues and cache |
VITE_API_HOSTNAME | Dashboard | API URL for frontend requests |
VITE_WEBSOCKET_HOSTNAME | Dashboard | WebSocket URL for real-time updates |
STEP_RESOLVER_DISPATCH_URL | API | Step resolver callback URL |
Deployment Dependencies
- Runtime: Node.js (bundled in Docker images)
- GitHub: novuhq/novu — 36k+ stars
- Docker Hub: ghcr.io/novuhq/novu
- Docs: docs.novu.co
Hardware Requirements for Self-Hosting Novu
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB (all services combined) | 8 GB |
| Storage | 10 GB (MongoDB data) | 20 GB |
| Runtime | Docker 20+ | Docker 24+ with Compose v2 |
Self-Hosting Novu with Docker Compose
Clone the repository and start with Docker Compose:
git clone https://github.com/novuhq/novu.git
cd novu/docker/community
cp .env.example .env
# Edit .env — set JWT_SECRET, STORE_ENCRYPTION_KEY, NOVU_SECRET_KEY
docker compose up -d
Or run individual services with Docker:
docker run -d --name novu-api \
-e NODE_ENV=production \
-e PORT=3000 \
-e JWT_SECRET=$(openssl rand -hex 32) \
-e STORE_ENCRYPTION_KEY=$(openssl rand -hex 16) \
-e MONGO_URL=mongodb://user:pass@mongo:27017/novu-db?authSource=admin \
-e REDIS_HOST=redis \
-e REDIS_PORT=6379 \
-e IS_SELF_HOSTED=true \
-p 3000:3000 \
ghcr.io/novuhq/novu/api:3.15.0
How Much Does Novu Cost to Self-Host?
Novu is fully open-source under the MIT license. Self-hosting is free — you pay only for infrastructure. On Railway, expect approximately $5–15/month for a low-traffic deployment across all six services. Novu Cloud offers managed hosting starting at $30/month for 30k notification runs if you prefer not to self-host. Enterprise features like SAML SSO and audit logs require a commercial license.
Novu vs Knock vs OneSignal
| Feature | Novu | Knock | OneSignal |
|---|---|---|---|
| Open source | Yes (MIT) | No | No |
| Self-hosting | Yes | No | No |
| Multi-channel | Email, SMS, Push, In-App, Chat | Email, SMS, Push, In-App, Chat | Push, Email, SMS |
| Visual workflow editor | Yes | Yes | Limited |
| In-app inbox component | Yes (React, Angular, Vue) | Yes | No |
| Pricing | Free (self-host) / $30/mo cloud | Free tier, usage-based | Free tier, usage-based |
Novu is the only fully open-source option with self-hosting support, making it ideal for teams that need data ownership or have compliance requirements.
FAQ
What is Novu and why self-host it? Novu is an open-source notification infrastructure platform that provides a unified API for sending notifications across email, SMS, push, in-app, and chat channels. Self-hosting gives you full control over notification data, no per-message pricing, and the ability to customize the platform.
What does this Railway template deploy for Novu? This template deploys six services: the Novu API server (REST endpoints), a background Worker (queue processing), a WebSocket server (real-time in-app notifications), the Dashboard web UI, MongoDB for data storage, and Redis for queuing and caching. All services are pre-configured with cross-service references.
Why does Novu need MongoDB and Redis on Railway? MongoDB stores all persistent data — notification templates, subscriber profiles, workflow definitions, and delivery logs. Redis handles the notification processing queue (ensuring reliable async delivery) and provides caching for frequently accessed data like workflow configurations.
How do I connect email providers like SendGrid to self-hosted Novu? After deploying, open the Dashboard, navigate to Integrations, and add your provider credentials (e.g., SendGrid API key, Twilio SID/token). Novu supports 50+ providers across email, SMS, push, and chat channels. No code changes needed — configure everything through the UI.
Can I scale Novu Worker replicas independently on Railway? Yes. The Worker service processes notifications asynchronously from the Redis queue. You can increase its replica count in Railway's service settings without affecting the API or Dashboard. This is useful for high-throughput notification workloads.
Does self-hosted Novu support the in-app inbox component?
Yes. The WebSocket server (Novu-WS) handles real-time delivery to the embeddable inbox component. Install @novu/react (or Angular/Vue equivalent) in your frontend app and connect it to your self-hosted WS endpoint.
Template Content
Novu-Dashboard
ghcr.io/novuhq/novu/dashboard:3.15.0MongoDB
mongo:8.0Novu-Worker
ghcr.io/novuhq/novu/worker:3.15.0Novu-API
ghcr.io/novuhq/novu/api:3.15.0Redis
redis:8.2.1