Back to all templates
Listmonk logo

Listmonk

Application256MB+ RAM

High-performance newsletter and mailing list manager

emailnewslettermarketingmailchimp-alternative

Deploy Listmonk in 3 Steps

1

Connect Your VPS

Add your server credentials to Server Compass

2

Select Listmonk

Choose from our template library

3

Deploy & Configure

Fill in settings and click Deploy

No Docker knowledge required
Step-by-step deployment guide

Deploy Listmonk on a VPS with Server Compass

Use the Listmonk template in Server Compass to deploy a self-hosted newsletter and mailing list manager with PostgreSQL on your VPS, then verify the Listmonk web UI in a browser.

About 7 minutesBrowser verified
1
Step 1

Open the server Apps tab

Select your VPS, open the Apps tab, and start a new app deployment. Keep sensitive server details hidden before capturing or sharing screenshots.

Server Compass Apps tab before creating a Listmonk app
2
Step 2

Choose an app template

Click New App and choose the template deployment path so Server Compass can load the built-in catalog.

Choosing to deploy an app from a Server Compass template
3
Step 3

Search for Listmonk

Use the template picker search to find Listmonk in the Server Compass template catalog.

Searching for Listmonk in the Server Compass template picker
4
Step 4

Select the Listmonk template

Choose the Listmonk template. Server Compass fills in the Listmonk web service, setup job, PostgreSQL database, generated database password, and mapped browser port.

Listmonk template selected in Server Compass
5
Step 5

Review the Listmonk settings

Confirm the app name and compose services. In this run, the app was named listmonk-demo and used host port 9000.

Reviewing Listmonk project settings and compose services
6
Step 6

Deploy Listmonk

Review the generated environment values, confirm the port is available, and click Deploy Now.

Reviewing Listmonk environment variables and port before deployment
7
Step 7

Watch the deployment progress

Keep the deployment modal open while Server Compass uploads the compose file, pulls the Listmonk image, starts the container, and verifies the stack.

Server Compass deploying the Listmonk template on the VPS
8
Step 8

Confirm Listmonk is running

After deployment finishes, return to the Apps tab and confirm the Listmonk app is marked Running with its application URL available.

Listmonk template running in the Server Compass Apps tab
9
Step 9

Open Listmonk in the browser

Open the application URL in a browser. The Listmonk web UI confirms the mailing list manager is reachable.

The deployed Listmonk web UI loaded in a browser

After Listmonk Opens

  • Change the default Listmonk password before production use.
  • Configure HTTPS, SMTP, bounce handling, and domain settings before sending campaigns.
  • Back up the Listmonk data and PostgreSQL volumes before production use.

Verified Result

The Listmonk web UI loaded successfully in a browser.

Listmonk deployment questions

What does the Listmonk template deploy?

It deploys Listmonk with PostgreSQL and a one-time setup container that initializes the database schema.

Which port did the tutorial use?

The tutorial used host port 9000, which maps to the Listmonk web service on container port 9000.

Why does the guide stop at the login or setup web UI?

The tutorial verifies the clean Listmonk web UI because SMTP, sender domains, lists, templates, and user settings depend on the production instance.

Should this become a blog post?

No. The deployment guide should live on the Listmonk template detail page and be linked from the reusable template deployment docs page.

Manual Setup Guide

Set Up Listmonk from Terminal

Get your hands dirty: manual Listmonk deployment guide for developers.

1

Connect to Your VPS via SSH

Fire up your terminal application and establish a connection to your remote server.

terminal
# Access your VPS
ssh root@YOUR_SERVER_IP

# With SSH key authentication
ssh -i ~/.ssh/your-private-key root@YOUR_SERVER_IP

First time? Ensure Docker is installed first: curl -fsSL https://get.docker.com | sh

2

Initialize Project Folder

Create a folder to house your Docker Compose configuration.

terminal
# Create and navigate to project directory
mkdir -p ~/apps/listmonk
cd ~/apps/listmonk
3

Create Docker Configuration

Define your services in a docker-compose.yml file:

docker-compose.yml
services:
  listmonk_setup:
    image: listmonk/listmonk:latest
    environment:
      - LISTMONK_app__address=0.0.0.0:9000
      - LISTMONK_db__host=db
      - LISTMONK_db__port=5432
      - LISTMONK_db__user=listmonk
      - LISTMONK_db__password=<your-db-password>
      - LISTMONK_db__database=listmonk
    depends_on:
      db:
        condition: service_healthy
    command: ["./listmonk", "--install", "--idempotent", "--yes"]
    restart: "no"

  listmonk:
    image: listmonk/listmonk:latest
    ports:
      - "9000:9000"
    environment:
      - LISTMONK_app__address=0.0.0.0:9000
      - LISTMONK_db__host=db
      - LISTMONK_db__port=5432
      - LISTMONK_db__user=listmonk
      - LISTMONK_db__password=<your-db-password>
      - LISTMONK_db__database=listmonk
    restart: unless-stopped
    depends_on:
      listmonk_setup:
        condition: service_completed_successfully
      db:
        condition: service_healthy

  db:
    image: postgres:16-alpine
    environment:
      - POSTGRES_USER=listmonk
      - POSTGRES_PASSWORD=<your-db-password>
      - POSTGRES_DB=listmonk
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U listmonk"]
      interval: 10s
      timeout: 5s
      retries: 10

volumes:
  postgres_data:
Environment Variables
PORTHost port(default: 9000)
DB_PASSWORDDB password
4

Execute the Deployment

Start your containers and verify they're running correctly.

terminal
# Launch the stack
docker compose up -d

# Verify container status
docker compose ps

# Follow the logs
docker compose logs --follow
5

Allow Network Access

Update UFW rules to allow traffic on the application port.

terminal
# Allow the application port through firewall
sudo ufw allow 9000/tcp
sudo ufw reload

# Access your app at:
# http://your-server-ip:9000
Skip the Terminal

Don't want to type commands? We've got you.

Why type commands when you can click? Deploy Listmonk the easy way with Server Compass.

  • No terminal required
  • Point-and-click setup
  • Auto SSL certificates
  • Rolling deployments
  • Health monitoring
  • Instant rollbacks
Download Server Compass$29 one-time • Lifetime license

After Deployment

After deploying Listmonk with Server Compass, complete these steps to finish setup

1

Change the default password

2

Configure SMTP

Need help? Check out our documentation for detailed guides.

Listmonk FAQ

Common questions about self-hosting Listmonk

How do I deploy Listmonk with Server Compass?

Simply download Server Compass, connect to your VPS, and select Listmonk from the templates list. Fill in the required configuration and click Deploy. The entire process takes under 3 minutes.

What are the system requirements for Listmonk?

Listmonk requires a minimum of 256MB RAM. We recommend a VPS with at least 1024MB RAM for optimal performance. Any modern Linux server with Docker support will work.

Can I migrate my existing Listmonk data?

Yes! Server Compass provides volume mapping that allows you to import existing data. You can also use standard Listmonk backup and restore procedures.

How do I update Listmonk to the latest version?

Server Compass makes updates easy. Simply click the Update button in your deployment dashboard, and the latest Listmonk image will be pulled and deployed with zero downtime.

Is Listmonk free to self-host?

Listmonk is open-source software. You only pay for your VPS hosting (typically $5-20/month) and optionally Server Compass ($29 one-time). No subscription fees or per-seat pricing.

Ready to Self-Host Listmonk?

Download Server Compass and deploy Listmonk to your VPS in under 3 minutes. No Docker expertise required.

Download Server Compass