Deploy Listmonk with Docker in 5 Minutes
beginner · 5-10 minutes · listmonk
Published: March 1, 2026 Updated: March 9, 2026
Prerequisites
- A VPS with at least 1GB RAM (DigitalOcean, Hetzner, or Linode — $5/mo)
- Docker and Docker Compose installed
- A domain name (optional, but recommended)
Step 1: Create Project Directory
mkdir listmonk && cd listmonk
Step 2: Create Docker Compose File
Create docker-compose.yml:
version: "3.7"
services:
listmonk:
image: listmonk/listmonk:latest
restart: unless-stopped
ports:
- "9000:9000"
environment:
- TZ=UTC
volumes:
- ./config.toml:/listmonk/config.toml
depends_on:
- db
db:
image: postgres:15-alpine
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=listmonk
- POSTGRES_USER=listmonk
- POSTGRES_DB=listmonk
volumes:
- listmonk-data:/var/lib/postgresql/data
volumes:
listmonk-data:
Step 3: Create Configuration File
Create config.toml:
[app]
address = "0.0.0.0:9000"
admin_username = "admin"
admin_password = "your-secure-password-here"
[db]
host = "db"
port = 5432
user = "listmonk"
password = "listmonk"
database = "listmonk"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"
Step 4: Initialize the Database
docker compose run --rm listmonk ./listmonk --install
Step 5: Start Listmonk
docker compose up -d
Listmonk is now running at http://your-server-ip:9000. Log in with the admin credentials from your config.
Step 6: Configure SMTP
Navigate to Settings → SMTP and add your email provider:
Amazon SES example:
- Host:
email-smtp.us-east-1.amazonaws.com - Port:
587 - Auth:
login - Username: Your SES SMTP username
- Password: Your SES SMTP password
- TLS:
STARTTLS
Production Configuration
For production use, add these:
Reverse Proxy (Caddy)
listmonk.yourdomain.com {
reverse_proxy localhost:9000
}
Backups
# Add to crontab
0 3 * * * docker exec listmonk-db-1 pg_dump -U listmonk listmonk | gzip > /backups/listmonk-$(date +%Y%m%d).sql.gz
Common Pitfalls
- Emails going to spam — Set up SPF, DKIM, and DMARC records for your sending domain
- Bounce handling — Configure bounce processing in Settings → Bounces
- Rate limiting — Start slow with new domains. SES limits new accounts to 200 emails/day initially
- Memory usage — Listmonk is very efficient. 512MB RAM is sufficient for most installations
Next Steps
- Import your existing subscribers via CSV (Settings → Import)
- Create your first email template
- Set up a subscription form on your website using the API
- Configure tracking domain for click/open tracking
Need help with deployment? upready.dev offers turnkey Listmonk setup starting at $200, including domain configuration, SMTP setup, and subscriber migration.