Railway

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

/var/lib/postgresql/data

Just deployed

/listmonk/uploads

listmonk logo

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

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

  • listmonklistmonk/listmonk:latest (Docker Hub · GitHub)
  • PostgreSQL — Railway managed Postgres (≥ v9.4 required; Railway provides v15+)

Environment Variables Reference

VariableDescriptionRequired
LISTMONK_ADMIN_USERInitial super admin username (first deploy only)Yes
LISTMONK_ADMIN_PASSWORDInitial super admin password (first deploy only)Yes
LISTMONK_app__root_urlFull public URL used in all email links — no trailing slashYes
LISTMONK_app__addressApp listen address inside container — keep as 0.0.0.0:9000Yes
LISTMONK_db__ssl_modePostgres SSL mode — use require for Railway managed PostgresYes
PORTPort Railway routes public traffic to — must match app listen portYes
LISTMONK_db__max_openMax open DB connections (default: 25)No
LISTMONK_db__max_lifetimeMax DB connection lifetime (default: 300s)No

Deployment Dependencies

  • Database: PostgreSQL ≥ 9.4
  • Docker image: listmonk/listmonk:latest

Minimum Hardware Requirements for listmonk

ResourceMinimumRecommended
CPU0.5 vCPU1 vCPU
RAM (app only)128 MB512 MB
RAM (app + Postgres)512 MB total1 GB+
Storage1 GB5 GB+ (for media uploads)
PostgreSQL versionv9.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

FeaturelistmonkMailchimpSendy
Open source✅ AGPLv3
Self-hostable
PricingFree (infra only)From $20/mo$69 one-time + SES costs
Subscriber limitsNonePlan-basedNone
Transactional email API✅ (paid tiers)
Visual email builder✅ (v5+)Limited
SQL-based segmentation
Marketing automationLimited
Full data ownershipPartial

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.


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
View Template
Prefect [Updated Mar ’26]
Prefect [Mar ’26] (ETL & Automation alternative to Airflow) Self Host

shinyduo