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
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.
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.
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
| Resource | Details |
|---|---|
| App | listmonk/listmonk Docker image |
| Database | Managed PostgreSQL |
| Volume | /listmonk/uploads for media |
| Admin | admin user with a generated password |
| Domain | Free *.hostim.dev subdomain |
| SSL | Let's Encrypt (auto-enabled) |
| Port | 9000 |
How to Deploy
- Go to your Hostim.dev dashboard.
- Click Create Project → Use a Template.
- Select listmonk.
- Choose a resource plan.
- Deploy.
- Copy the generated
LISTMONK_ADMIN_PASSWORDfrom the app's environment variables and log in asadmin.
First steps after deploy
- Set the root URL. Go to Admin → Settings → General and set Root URL to your
https://domain. listmonk ships withhttp://localhost:9000, and that value ends up in email links and media URLs. - Add SMTP. Under Admin → Settings → SMTP, enter your mail provider's host, port and credentials. listmonk does not send mail on its own.
- 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
- GitHub: https://github.com/knadh/listmonk
- Documentation: https://listmonk.app/docs/
Looking for something else? Browse all templates →