Deploy Listmonk

Self-hosted newsletter & mailing list manager

Deploy Listmonk

Just deployed

/data

Just deployed

/var/lib/postgresql/data

Deploy on Railway

Deploy and Host

Self-hosted newsletter and mailing-list manager (listmonk v6.2.0, AGPL-3.0) with a PostgreSQL 16 companion. One-click deploy: the form has zero fields — the Postgres password is auto-generated and the app is auto-wired over the private network. First boot installs the schema; the setup wizard on the public URL creates your superuser.

About Hosting

  • Services: listmonk (Go binary) + postgres (PostgreSQL 16)
  • Volumes: 2 — Postgres data at /var/lib/postgresql/data, app uploads at /data (listmonk-data)
  • Memory at rest: ~30–60 MB app, ~100–200 MB Postgres
  • Healthcheck: GET /health → 200 (public, unauthenticated)

Why Deploy

Own your mailing list instead of renting it per subscriber. Listmonk gives you unlimited lists and subscribers, a visual campaign editor, scheduling, bounce handling, and open/click analytics — you only pay Railway usage plus your SMTP provider.

Common Use Cases

  • Newsletters for blogs, products, and communities
  • Launch announcements and drip campaigns
  • Bulk mail via the REST API (digests, notifications)
  • Multi-list audiences with segments and custom attributes

Dependencies for

Deployment Dependencies

  • Railway Hobby plan or higher (Postgres volume needs a few GB)
  • After deploy: create the superuser in the setup wizard, then configure SMTP in Settings → SMTP before sending. SMTP lives in the database, not in env vars.

Environment reference (condensed): LISTMONK_db__host = ${{postgres.RAILWAY_PRIVATE_DOMAIN}}, LISTMONK_db__password = ${{postgres.POSTGRES_PASSWORD}}, POSTGRES_PASSWORD = ${{secret(32)}} — all auto-wired. Baked into the image: LISTMONK_db__port=5432, LISTMONK_db__user=listmonk, LISTMONK_db__database=listmonk, LISTMONK_db__ssl_mode=disable, LISTMONK_upload__filesystem__upload_path=/data/uploads (volume-persisted). The entrypoint also rewrites two DB-seeded settings listmonk loads over env vars: upload.filesystem.upload_path → /data/uploads and app.root_url → the public domain. Optional, set later: LISTMONK_ADMIN_USER + LISTMONK_ADMIN_PASSWORD (skip the web wizard), LISTMONK_ADMIN_API_USER.


Template Content

More templates in this category

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

jakemerson
121
View Template
Evolution API with n8n
Automate WhatsApp workflows with Evolution API, n8n, and Postgres.

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

Railway Templates
870