---
title: "Deploy Listmonk — Open Source Mailchimp Alternative on Railway"
description: "Launch a Self-Hosted Newsletter with Listmonk on Railway"
category: "Automation"
url: https://railway.com/deploy/listmonk-mailchimp-alternative
---

# Deploy Listmonk — Open Source Mailchimp Alternative on Railway

Launch a Self-Hosted Newsletter with Listmonk on Railway

**[Deploy Listmonk — Open Source Mailchimp Alternative on Railway on Railway](https://railway.com/template/listmonk-mailchimp-alternative)**

- **Creator:** Heimdall
- **Category:** Automation
- **Total deploys:** 11

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### Listmonk https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/listmonk.svg

- **Image:** listmonk/listmonk:latest
- **Start command:** `/bin/sh -c "./listmonk --install --idempotent --yes --config '' && ./listmonk --upgrade --yes --config '' && ./listmonk --config ''"`
- **Public domain:** Yes

## Documentation

![listmonk logo](https://i.ytimg.com/vi/fAOBqgR9Yfo/hq720.jpg?sqp=-oaymwEhCK4FEIIDSFryq4qpAxMIARUAAAAAGAElAADIQj0AgKJD&rs=AOn4CLAnM8lqtx5HmoiLLhztnsXCAh4g-Q)

# Deploy and Host Listmonk

Self-host Listmonk on Railway and get a fully production-ready, open source newsletter and mailing list manager — no per-subscriber fees, no data lock-in. Listmonk is a single Go binary that handles millions of subscribers, high-volume email campaigns, transactional messages, and detailed analytics. This Railway template wires up `listmonk/listmonk:latest` alongside a managed PostgreSQL database, auto-installs and migrates the schema on first boot, and exposes the dashboard via Railway's edge SSL — ready to send campaigns in minutes.


## Getting Started with listmonk on Railway

After your Railway deploy completes, navigate to your public Railway domain (e.g. `https://listmonk-production.up.railway.app`) and log in with the admin credentials you set in `LISTMONK_ADMIN_USER` and `LISTMONK_ADMIN_PASSWORD`. Head to **Settings → General** and confirm the **Root URL** exactly matches your domain with no trailing slash — every subscription confirmation link, unsubscribe URL, and open-tracking pixel is built from this value. Next, go to **Settings → SMTP** and configure your outbound email provider (Amazon SES, Mailgun, Brevo, Postmark, or any SMTP server). Once SMTP is verified, create your first mailing list under **Lists**, import subscribers via CSV or the API, and send a test campaign.

![listmonk dashboard screenshot](https://listmonk.app/static/images/splash.png)

## About Hosting listmonk

listmonk is a self-hosted, open source newsletter and mailing list manager built in Go with a Vue.js frontend. It is the tool used by Zerodha to send millions of emails per campaign on modest hardware. Its only dependency is a PostgreSQL database — no Redis, no separate worker process, no external queue.

Key features:

- **High-volume campaigns** — multi-threaded, multi-SMTP queues with throughput and sliding-window rate limiting
- **Subscriber management** — millions of subscribers across single and double opt-in lists, custom JSON attributes, SQL-based segmentation
- **Transactional messages** — send arbitrary messages via API using pre-defined templates (email, SMS, WhatsApp via Messenger webhooks)
- **Visual email builder** — drag-and-drop builder, WYSIWYG editor, Markdown, raw HTML, or plain text (added in v5)
- **Go templating** — 100+ functions available in subject lines and content
- **Analytics** — campaign performance, bounces, top links, open rates, click-through rates
- **REST API** — full API coverage for all dashboard features
- **OIDC SSO** — single sign-on with granular roles and permissions
- **Media library** — S3-compatible backend for image and file uploads

## Why Deploy Listmonk on Railway

One-click deploy gets you a production Listmonk instance without touching Docker config, Postgres setup, or SSL certificates.

- No subscriber limits or per-send pricing — pay only for Railway infrastructure
- Managed Postgres with private networking pre-wired, no connection string juggling
- Auto schema install and migration on every deploy via `--install --idempotent`
- Railway edge TLS and custom domains out of the box
- Vertical scaling via Railway dashboard — no infra changes needed
- Persistent media uploads via Railway volume mount at `/listmonk/uploads`

## Common Use Cases

- **Creator newsletters** — indie developers, bloggers, and content creators replacing Mailchimp or Substack to eliminate per-subscriber costs at 5k+ subscribers
- **SaaS transactional email** — sending onboarding sequences, password resets, and product notifications via the listmonk REST API without a third-party service
- **Internal company communications** — teams broadcasting product updates or announcements to employees while keeping subscriber data fully private
- **High-volume marketing campaigns** — e-commerce and B2B teams sending segmented promotional campaigns to large lists with full bounce and click tracking

## Dependencies for Listmonk 

- **listmonk** — `listmonk/listmonk:latest` ([Docker Hub](https://hub.docker.com/r/listmonk/listmonk) · [GitHub](https://github.com/knadh/listmonk))
- **PostgreSQL** — Railway managed Postgres (≥ v9.4 required; Railway provides v15+)

### Environment Variables Reference

| Variable | Description | Required |
|---|---|---|
| `LISTMONK_ADMIN_USER` | Initial super admin username (first deploy only) | Yes |
| `LISTMONK_ADMIN_PASSWORD` | Initial super admin password (first deploy only) | Yes |
| `LISTMONK_app__root_url` | Full public URL used in all email links — no trailing slash | Yes |
| `LISTMONK_app__address` | App listen address inside container — keep as `0.0.0.0:9000` | Yes |
| `LISTMONK_db__ssl_mode` | Postgres SSL mode — use `require` for Railway managed Postgres | Yes |
| `PORT` | Port Railway routes public traffic to — must match app listen port | Yes |
| `LISTMONK_db__max_open` | Max open DB connections (default: 25) | No |
| `LISTMONK_db__max_lifetime` | Max DB connection lifetime (default: 300s) | No |

### Deployment Dependencies

- **Database**: PostgreSQL ≥ 9.4
- **Docker image**: `listmonk/listmonk:latest`

## Minimum Hardware Requirements for listmonk

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 0.5 vCPU | 1 vCPU |
| RAM (app only) | 128 MB | 512 MB |
| RAM (app + Postgres) | 512 MB total | 1 GB+ |
| Storage | 1 GB | 5 GB+ (for media uploads) |
| PostgreSQL version | v9.4+ | v14+ |

On Railway, the default Hobby plan resources comfortably run listmonk for small to medium lists. Scale up via the Railway dashboard as your subscriber count grows.

## Self-Hosting listmonk

**Docker (quickest path):**

```
docker run -d \
  -p 9000:9000 \
  -e LISTMONK_app__address="0.0.0.0:9000" \
  -e LISTMONK_db__host="your-postgres-host" \
  -e LISTMONK_db__port="5432" \
  -e LISTMONK_db__user="listmonk" \
  -e LISTMONK_db__password="yourpassword" \
  -e LISTMONK_db__database="listmonk" \
  -e LISTMONK_db__ssl_mode="disable" \
  listmonk/listmonk:latest \
  sh -c "./listmonk --install --idempotent --yes --config '' && ./listmonk --config ''"
```

After startup, set **Root URL** in **Settings → General** to your public domain before going live.

## Is listmonk Free?

listmonk is 100% free and open source, licensed under AGPLv3 — no tiers, no subscriber limits, no paid features. On Railway, your only cost is infrastructure: the listmonk service and managed Postgres billed at standard Railway resource rates. There is no listmonk cloud-hosted version or commercial offering from the maintainers. Compare this to Mailchimp at $78/month for 5,000 subscribers, or Brevo's paid tiers above send limits — listmonk eliminates both entirely.

## listmonk vs Mailchimp vs Sendy

| Feature | listmonk | Mailchimp | Sendy |
|---|---|---|---|
| Open source | ✅ AGPLv3 | ❌ | ❌ |
| Self-hostable | ✅ | ❌ | ✅ |
| Pricing | Free (infra only) | From $20/mo | $69 one-time + SES costs |
| Subscriber limits | None | Plan-based | None |
| Transactional email API | ✅ | ✅ (paid tiers) | ❌ |
| Visual email builder | ✅ (v5+) | ✅ | Limited |
| SQL-based segmentation | ✅ | ❌ | ❌ |
| Marketing automation | ❌ | ✅ | Limited |
| Full data ownership | ✅ | ❌ | Partial |

listmonk wins on cost and data ownership at any list size. The main gap versus Mailchimp is visual automation workflows — listmonk has none. If automation is a hard requirement, consider Mautic instead.

## Migrating to listmonk

Most developers arrive from Mailchimp, Substack, or Buttondown. listmonk supports CSV subscriber import natively under **Subscribers → Import**. Export your list from your current provider as a CSV with at minimum `email` and `name` columns. Subscribers can be imported without triggering a new opt-in email by setting their status to `enabled` at import time — existing consent is preserved.

## FAQ

**What is listmonk?**
listmonk is a self-hosted, open source newsletter and mailing list manager built in Go. It handles subscriber management, campaign creation and delivery, transactional messages, and analytics — packaged as a single binary with PostgreSQL as its only dependency.


**Why is Postgres required?**
listmonk stores all subscribers, lists, campaigns, templates, and analytics in PostgreSQL. It has no embedded database and no support for SQLite or MySQL — Postgres is the only supported data store, and it must be v9.4 or higher.

**Can I use listmonk in production for a large list?**
Yes. listmonk is used in production at Zerodha (a major Indian fintech) to send millions of emails per campaign. Its Go concurrency model and multi-threaded SMTP queue handle high volumes on minimal hardware — 57 MB peak RAM for a 7M-email campaign.

**Does Railway block SMTP for listmonk?**
Railway blocks outbound SMTP ports (25, 465, 587) on the Hobby plan. listmonk itself has no such restriction, but you need a **Railway Pro plan** to send emails via external SMTP providers. This is a Railway infrastructure restriction, not a listmonk limitation.

**Can I send transactional emails, not just campaigns?**
Yes. listmonk has a full transactional email API — send arbitrary messages to individual addresses using pre-defined templates via a simple HTTP POST. It also supports non-email messengers (SMS, WhatsApp) via configurable Messenger webhook interfaces.

**How do I upgrade listmonk on Railway?**
Pull the latest image by triggering a redeploy in Railway. The startup command includes `./listmonk --upgrade --yes` which automatically runs any pending DB migrations on boot — upgrades are idempotent and safe to run on every restart.



## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — Automate WhatsApp workflows with Evolution API, n8n, and Postgres.
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/listmonk-mailchimp-alternative
