Skip to main content

Deploy listmonk

Before using the one-click template, here is a minimal Docker Compose example for self-hosting listmonk.

If you're new to Docker Compose, check out our guide on how to self-host a Docker Compose app. More stacks are in our Docker Compose library.

Self-host listmonk with Docker Compose (minimal)

services:
app:
image: listmonk/listmonk:latest
ports:
- "9000:9000"
command:
[
sh,
-c,
"./listmonk --install --idempotent --yes --config '' && ./listmonk --upgrade --yes --config '' && ./listmonk --config ''",
]
environment:
LISTMONK_app__address: 0.0.0.0:9000
LISTMONK_db__host: db
LISTMONK_db__port: 5432
LISTMONK_db__user: listmonk
LISTMONK_db__password: changeme
LISTMONK_db__database: listmonk
LISTMONK_db__ssl_mode: disable
LISTMONK_ADMIN_USER: admin
LISTMONK_ADMIN_PASSWORD: changeme_long_random_password
TZ: Etc/UTC
volumes:
- ./uploads:/listmonk/uploads
depends_on:
- db

db:
image: postgres:17-alpine
environment:
POSTGRES_USER: listmonk
POSTGRES_PASSWORD: changeme
POSTGRES_DB: listmonk
note

The --config '' flag tells listmonk to ignore config.toml and read its database settings from the LISTMONK_* environment variables instead. --install --idempotent creates the schema only on an empty database, and --upgrade runs migrations after an image update — so the same command is safe on every start.

warning

LISTMONK_ADMIN_USER and LISTMONK_ADMIN_PASSWORD create the super admin on the first start only. Changing them later does nothing — change the password inside the app under Admin → Settings → Users.


Deploy listmonk on Hostim.dev (One-Click)

listmonk is a self-hosted newsletter and mailing list manager — lists, subscribers, campaigns, templates and analytics, with your own SMTP provider doing the sending. With Hostim.dev, you can deploy listmonk with Docker and managed PostgreSQL in one click – complete with automatic domain and HTTPS.

📬 Your list, your data, your server.

Try it Yourself

Guest project runs for 1 hour. Log in to save and extend to 5 days.

Why Host listmonk on Hostim.dev?

  • One-click Docker deployment
  • Managed PostgreSQL, no setup required
  • Schema install and migrations run automatically on every boot
  • Automatic HTTPS and domain
  • Real-time logs and metrics
  • Fully self-hosted and private

What's included

ResourceDetails
Applistmonk/listmonk Docker image
DatabaseManaged PostgreSQL
Volume/listmonk/uploads for media
Adminadmin user with a generated password
DomainFree *.hostim.dev subdomain
SSLLet's Encrypt (auto-enabled)
Port9000

How to Deploy

  1. Go to your Hostim.dev dashboard.
  2. Click Create ProjectUse a Template.
  3. Select listmonk.
  4. Choose a resource plan.
  5. Deploy.
  6. Copy the generated LISTMONK_ADMIN_PASSWORD from the app's environment variables and log in as admin.

First steps after deploy

  1. Set the root URL. Go to Admin → Settings → General and set Root URL to your https:// domain. listmonk ships with http://localhost:9000, and that value ends up in email links and media URLs.
  2. Add SMTP. Under Admin → Settings → SMTP, enter your mail provider's host, port and credentials. listmonk does not send mail on its own.
  3. Change the admin password under Admin → Settings → Users.

FAQ

Does listmonk send email itself?

No. listmonk is the campaign manager — it connects to an SMTP provider you configure (or Amazon SES, Postmark, and similar). Set this up under Admin → Settings → SMTP before sending a campaign.

Where is my data stored?

Lists, subscribers, campaigns, templates and settings live in the managed PostgreSQL database. Uploaded media lives in the /listmonk/uploads volume.

Why do my media URLs point to localhost?

The root URL setting still has its default value. Set it to your app's https domain under Admin → Settings → General.

Is it safe to restart or update the app?

Yes. The start command runs --install --idempotent and --upgrade , so the schema is created only on an empty database and migrations run automatically after an image update.

How do I back up listmonk?

Back up the managed PostgreSQL database and the /listmonk/uploads volume.

How do I update listmonk?

Docker: docker compose pull && docker compose up -d Hostim.dev: redeploy the app.


Alternatives

  • Ghost — blogging platform with a built-in newsletter
  • Mautic — heavier marketing automation suite
  • Mailtrain — another self-hosted newsletter manager

Source + Docs


Looking for something else? Browse all templates →


Try it now

Deploy listmonk Now – in less than 60 seconds