How it helps your business
Key Benefits
- Blazing Fast Delivery: Multi-threaded concurrency models in Go enable sending massive volumes concurrently.
- Single Binary Deployment: No need to configure PHP-FPM, Ruby, or complex web stacks. Dropping the binary on a Linux server is sufficient.
- Multi-SMTP Routing: Configure multiple SMTP providers (e.g., Postmark for transactional, SES for newsletters) and route campaigns dynamically.
- Developer-Friendly: Complete REST API coverage ensures easy integration with custom web apps (e.g., auto-subscribing users upon sign-up).
Production Architecture Overview
- Listmonk Core: A single compiled Go binary containing both the Web UI and the delivery engine.
- PostgreSQL Database: The only external requirement, storing subscribers, campaigns, and metrics.
- Reverse Proxy / SSL: An Nginx or Caddy server sitting in front of Listmonk to handle SSL termination and map a domain name to the application port.
- External SMTP: The required transactional email service (AWS SES, Mailgun, SendGrid) to deliver the outbound messages.
How we deploy this for you
Security Hardened
Firewalls, SSL, and hardened kernels out of the box.
Performance Tuned
Optimized for speed with cache and DB fine-tuning.
Automated Backups
Daily off-site backups so you never lose your data.
Private Cloud
You own the server and the data. No middleman.
Implementation Blueprint
Prerequisites
# Update and install PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib nginx -yDatabase Setup (PostgreSQL)
# Switch to postgres user
sudo -u postgres psql
# Create DB and user
CREATE DATABASE listmonk;
CREATE USER listmonkuser WITH PASSWORD 'super_secure_password';
GRANT ALL PRIVILEGES ON DATABASE listmonk TO listmonkuser;
\qApplication Installation
# Download and install via curl
mkdir ~/listmonk && cd ~/listmonk
wget https://github.com/knadh/listmonk/releases/download/v3.0.0/listmonk_3.0.0_linux_amd64.tar.gz
tar -zxvf listmonk_3.0.0_linux_amd64.tar.gz
# Make it executable
chmod +x listmonkConfiguration and Initialization
config.toml file../listmonk --new-configconfig.toml, specifically the [db] and [app] sections:[app]
address = "127.0.0.1:9000"
# Keep this secure
admin_username = "admin"
admin_password = "super_secure_admin_password"
[db]
host = "localhost"
port = 5432
user = "listmonkuser"
password = "super_secure_password"
database = "listmonk"./listmonk --installRunning as a Systemd Service
systemd./etc/systemd/system/listmonk.service:[Unit]
Description=listmonk newsletter manager
After=network.target postgresql.service
[Service]
Type=simple
User=root
# Adjust this path to where your binary and config.toml reside
WorkingDirectory=/root/listmonk
ExecStart=/root/listmonk/listmonk
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable listmonk
sudo systemctl start listmonkConfiguring the Reverse Proxy (Nginx)
/etc/nginx/sites-available/listmonk:server {
listen 80;
server_name notify.mycompany.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/
sudo systemctl reload nginxConfiguring Throttling and SMTP in the UI
Settings -> SMTP).- Log into
https://notify.mycompany.comusing the admin credentials. - Add your Amazon SES or equivalent credentials under SMTP.
- In Settings -> Performance, configure your throughput:
- Concurrency: The number of independent threads dispatching mail. (e.g., 5-10 for SES).
- Message rate: The maximum number of emails to send per second. Match this roughly to your provider's SLA (e.g., 14/sec for new SES accounts).
Production Integrations
POST request to https://notify.mycompany.com/api/subscribers from your Node.js or Python backend whenever a user signs up.// Example Node.js subscriber insertion
const axios = require('axios');
axios.post('https://notify.mycompany.com/api/subscribers', {
email: "newuser@example.com",
name: "John Doe",
status: "enabled",
lists: [1], // ID of your main newsletter list
attribs: {
source: "signup_form",
tier: "free"
}
}, {
auth: { username: 'admin', password: 'super_secure_admin_password' }
});Includes Security & performance standards
Best place to host Listmonk
We recommend Hostinger for its reliability and low cost. It's the perfect home for your new apps, featuring easy setup and 24/7 support.
Get Started on HostingerCompare Similar Tools
WordPress
WordPress is a powerful open-source content management system (CMS) for building websites and blogs. It is production-ready, scalable, and highly extensible with plugins and themes.