Replace Mailchimp / ConvertKit with Self-Hosted Listmonk
High-performance self-hosted newsletter and mailing list manager written in Go (single binary + Postgres) Stop paying Standard 15k Contacts ($135/mo) ($135/mo for a 10-person team) and run Listmonk on a $4.50/mo Linux VPS with full data sovereignty.
1-to-100 Seat Total Cost of Ownership (TCO) Table
Comparing Mailchimp / ConvertKit (Standard 15k Contacts ($135/mo)) vs Listmonk on Hetzner CX22 (4GB RAM / 2 vCPU).
| Team Size | Mailchimp / ConvertKit Cost | Listmonk VPS | Net Annual Savings |
|---|---|---|---|
| 1 Seat (Solo) | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
| 5 Seats | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
| 10 Seats | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
| 25 Seats | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
| 50 Seats | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
| 100 Seats | $135.00/mo ($1,620/yr) | $4.50/mo (CX22) | +$1,566 / year |
Production Docker Compose + Caddy Auto-SSL
Copy and run docker compose up -d on any Ubuntu 24.04 server.
# Production Docker Compose: Listmonk (Replaces Mailchimp / ConvertKit)
services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
networks:
- stack_net
listmonk:
image: listmonk/listmonk:latest
container_name: stack-listmonk
restart: unless-stopped
environment:
- "LISTMONK_app__address=0.0.0.0:9000"
- "LISTMONK_db__host=postgres"
- "LISTMONK_db__port=5432"
- "LISTMONK_db__user=postgres"
- "LISTMONK_db__password=${POSTGRES_PASSWORD:-strongpassword}"
- "LISTMONK_db__database=listmonk"
volumes:
- listmonk_data:/data
networks:
- stack_net
postgres:
image: pgvector/pgvector:pg16
container_name: stack-postgres
restart: unless-stopped
environment:
- "POSTGRES_USER=postgres"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-strongpassword}"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- stack_net
networks:
stack_net:
driver: bridge
volumes:
caddy_data:
listmonk_data:
postgres_data:
# Automatic Let's Encrypt HTTPS for Listmonk
listmonk.{$DOMAIN:yourdomain.com} {
encode zstd gzip
reverse_proxy listmonk:9000
}
Why Teams Switch to Listmonk
- ✓Send 100,000 emails for $10 via AWS SES or Resend
- ✓Uses <150MB RAM even with 1M subscribers
- ✓SQL-powered subscriber segmentation
listmonk/listmonk:latest
Deploy Listmonk in 60 Seconds
Sized automatically for Listmonk (256MB container RAM + OS overhead).
Get All 16 Pre-Built Production Stacks + Encrypted S3 Backups
Includes pre-tuned docker-compose.yml, Caddy Auto-SSL, AES-256 encrypted nightly S3/R2 Postgres backups, and Ubuntu 24.04 UFW/Fail2ban hardening scripts.