Deployment guide

Host Listmonk on Your Own VPS

Deploy on a VPS Cloud →

Self-hosting8 min read

Host Listmonk on Your Own VPS

Mailchimp, Brevo and the like bill per contact and cap your sends. Listmonk reverses the model: an open source newsletter manager, written in Go, able to send millions of emails from your own infrastructure. Here is how to install it on a VPS and connect it to an SMTP relay.

Why self-host Listmonk on a VPS

Listmonk is a single Go binary backed by PostgreSQL, able to manage massive lists and segmented campaigns with a very high send rate. Self-hosting becomes worthwhile as soon as your subscriber base exceeds a few thousand contacts: SaaS platforms then bill hundreds of euros a month for a task that a modest VPS performs for the price of the server. You retain full ownership of your email database (no leak to a third party), you connect the SMTP relay of your choice and you control the send pace to preserve your sender reputation. A VPS is essential here because Listmonk needs a persistent process, a PostgreSQL database and open outbound SMTP ports — freedoms that no shared hosting grants.

Concrete benefits of a self-hosted Listmonk

  • No per-contact cost: the bill no longer depends on the size of your list but only on the VPS.
  • Segmentation by SQL queries: target subsets of subscribers with a precision impossible on most SaaS platforms.
  • Rich templating (Go templates + HTML) and A/B campaigns versionable in your repository.
  • Complete REST API: trigger transactional sends from your application via webhook.
  • Tracking of opens, clicks and bounces in a unified interface, without a third-party pixel.
  • Free choice of relay (Postmark, Amazon SES, OVH, your own Postfix) to optimize deliverability and cost.

Technical requirements

Listmonk itself is very light, but PostgreSQL and the send volume call for reasonable sizing: plan for 2 vCPUs, 2 GB of RAM and 20 GB of disk for a base of a few tens of thousands of contacts; go up to 4 GB of RAM if you run large simultaneous campaigns. On the infrastructure side: Docker and Docker Compose, a domain mail.yourdomain.com with an A record to the VPS, and above all the email authentication DNS records (SPF, DKIM, DMARC) configured on the sending domain. An SMTP relay with credentials (host, port 587, user, password) is necessary — direct sending from a VPS's IP is often blocked by providers.

Deploy Listmonk step by step

01

Retrieve the official stack

On the VPS, create /opt/listmonk then download the reference compose file: curl -LO https://raw.githubusercontent.com/knadh/listmonk/master/docker-compose.yml. It declares two services, app (listmonk) and db (PostgreSQL).

02

Initialize the database

Run the initial migration before the first run: docker compose run --rm app ./listmonk --install. This command creates the PostgreSQL schema and the administrator user. Enter a strong admin password at the prompt.

03

Start the service

Start the stack with docker compose up -d. Listmonk listens on port 9000 internally. Check the container status with docker compose ps and review the logs if needed.

04

Configure the reverse proxy and SSL

Expose Listmonk behind a reverse proxy with HTTPS. Caddy example: mail.yourdomain.com { reverse_proxy app:9000 }. The Let's Encrypt certificate is generated automatically. Never expose port 9000 directly on the Internet.

05

Connect the SMTP relay

In Settings > SMTP, enter your relay's parameters (host, port 587, credentials, TLS enabled). Send a test email from the interface to validate the connection before any campaign.

06

Secure deliverability

Check with an external tool that SPF, DKIM and DMARC pass green on your sending domain. Start with small campaigns to "warm up" the relay's IP and monitor the bounce rate in the dashboard.

Set the send rate limit (Settings > Performance > max concurrent connections and message rate) according to your SMTP relay's quotas. Too aggressive a send drives up the spam and rejection rate. For critical transactional emails, create a second mail server in Listmonk dedicated to those sends, separate from the marketing server: that way a reputation issue on the newsletters does not affect your confirmation emails.

Take back control of your newsletters

With the ServOrbit Cloud VPS and its preconfigured Listmonk template (PostgreSQL and reverse proxy included), send your campaigns with no contact cap and no monthly subscription. You keep your database, you choose your relay.

Need help?

Browse our help center and FAQ, or write to our team — support in French, English and Arabic.