How to Self-Host Listmonk on a VPS (Complete Guide)
Self-hosting Listmonk, an open-source newsletter and mailing list manager, is an excellent way to maintain control over your email campaigns and subscriber data. This guide will walk you through the process of deploying Listmonk on a Virtual Private Server (VPS) using Docker, ensuring that developers and homelab enthusiasts can set it up with ease.
Why Choose Listmonk?
Listmonk offers a robust, user-friendly interface along with features such as:
- A built-in SMTP server
- Subscriber management
- Campaign scheduling
- Analytics
- RESTful API for integrations
Choosing a reliable VPS provider is crucial for smooth performance. Hereโs a comparison of some top VPS providers:
| Provider | Price (EUR/USD) | Specs | Ideal For |
|---|---|---|---|
| Contabo VPS | 5.99 EUR/mo | 4 CPU, 8 GB RAM, 200 GB SSD | Budget-friendly option |
| Hetzner Cloud | 4.15 EUR/mo | 1 CPU, 2 GB RAM, 20 GB SSD | Great for small projects |
| DigitalOcean | 6 USD/mo | 1 CPU, 1 GB RAM, 25 GB SSD | Good for startups |
| Vultr | 6 USD/mo | 1 CPU, 1 GB RAM, 25 GB SSD | Simple interface |
| Linode (Akamai Cloud) | 5 USD/mo | 1 CPU, 2 GB RAM, 25 GB SSD | Performance-driven projects |
For a full VPS comparison, check out our full VPS comparison.
Prerequisites
To start with, ensure you have:
- A VPS with a minimum of 1 CPU and 2 GB of RAM.
- Docker installed on your VPS. You can follow the official installation guide for Docker if itโs not installed.
- A domain name for your Listmonk instance if you want to send emails from a branded address.
Step 1: Access Your VPS
Connect to your VPS via SSH:
ssh your_username@your_vps_ip
Replace your_username and your_vps_ip with the appropriate values.
Step 2: Install Docker
If Docker isnโt installed, run the following commands:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
Verify installation:
docker --version
Step 3: Set Up PostgreSQL Database
Listmonk requires PostgreSQL for data storage. Use the following commands to set up PostgreSQL:
docker run -d \
--name listmonk-postgres \
-e POSTGRES_DB=listmonk \
-e POSTGRES_USER=listmonk \
-e POSTGRES_PASSWORD=your_password \
-p 5432:5432 \
postgres:latest
Change your_password to a strong password.
Step 4: Deploy Listmonk
You can pull and run Listmonk with the following commands:
docker run -d \
--name listmonk \
-e LISTMONK_DB_HOST=listmonk-postgres \
-e LISTMONK_DB_USER=listmonk \
-e LISTMONK_DB_PASSWORD=your_password \
-e LISTMONK_DB_NAME=listmonk \
-p 9000:9000 \
--link listmonk-postgres:postgres \
--restart unless-stopped \
listmonk/listmonk:latest
Make sure to replace your_password with the same password used for PostgreSQL.
Step 5: Access Listmonk Dashboard
Once the container is up and running, you can access Listmonk by navigating to http://your_vps_ip:9000 in your web browser. The default credentials are:
- Username: admin
- Password: listmonk
Make sure to change these credentials on your first login to secure your installation.
Step 6: Configure Your Domain and SMTP Server
If you are using a custom domain, configure it in your DNS settings to point to your VPS IP. Additionally, set up an SMTP server to send emails (Listmonk can also use external SMTP services).
FAQs
1. Can I self-host Listmonk without Docker?
Yes, while using Docker simplifies the installation and management of Listmonk, you can also directly install it on your server using Go. This requires additional steps, such as installing dependencies and managing service configurations. For most users, Docker is the recommended approach due to its ease of deployment and built-in isolation.
2. What VPS provider is best for hosting Listmonk?
Choosing the right VPS provider depends on your budget and performance needs. For lightweight applications, providers like Hetzner Cloud and Linode offer affordable plans starting at 4.15 EUR/month. For more demanding setups, Contabo provides excellent resources at a competitive price. Always evaluate the specifics of your application and expected workload when making your choice.
3. How do I update my Listmonk installation?
To update Listmonk, simply stop the running container, pull the latest image, and restart the container. Use the following commands:
docker stop listmonk
docker rm listmonk
docker run -d ... # Include your original run command with the latest image
Make sure to back up your database before performing an update to prevent any data loss.
By following these steps, youโll successfully self-host Listmonk on a VPS, providing you with the tools needed to manage your email campaigns effectively. Happy self-hosting!