Listmonk is an amazing feature-packed self-hosted email newsletter manager. It offers loads of features like analytics (clicks, opens, bounces), templates, public subscription pages, importing subscribers, and much more!
What Is Listmonk?Listmonk is a self-hosted newsletter and mailing list manager. It is free and open source, so you have full control over your data. It also offers a super clean webui:
Why Choose Listmonk Over Mailchimp, Buttondown, etc.For me, running a newsletter means owning my email list.
\ When people create newsletters, they want to break free from big platforms like Twitter or YouTube. When you use a proprietary service like Mailchimp, you’re still tied down to their rules and limitations. With listmonk, you get more control and independence, which for me is a huge win.
\ The other reason is that listmonk is completely free (if you don’t count electricity bills/VPS hosting bills). Even if you include the cost of your email host + hosting fees, it is still tiny compared to Mailchimp or Buttondown.
Listmonk Feature Overview\ And more
Requirements for Running ListmonkA server running Linux, either in the cloud or at home. We will be using Debian 12, but you can use any other distribution.
\
An email address to send the newsletter from. Can either be a Gmail or a custom one.
Before doing anything, I highly recommend that you disable password logins for ssh. See Securing ssh with Key-Based Authentication for more info on how to do that.
\ Login to your server via ssh.
ssh [email protected]\ Make sure that all packages are up to date.
sudo apt update && sudo apt upgrade\ Create a new directory to host listmonk’s configuration files.
mkdir listmonk && cd listmonk\ Download the listmonk production script (I highly recommend you read the scripts before running them).
sh -c "$(curl -fsSL https://raw.githubusercontent.com/knadh/listmonk/master/install-prod.sh)"\ Now, if you head to
localhost:9000\ You should see listmonk up and running.
\ But first, we should change some settings in the configuration files.
vim config.tomlHere, you can change the default admin password. I also changed the address to 0.0.0.0 so that I can access it via the server’s IP.
Listmonk CustomizationNow, head to the webui at
localhost:9000Login, and head to the settings.
\ In the General tab, you can customize the default from email, root URL, site name, favicon, and admin notification emails.
\ Here’s what my settings look like:
You can customize the page to your liking.
\ Save by clicking on the save button in the top right corner.
Email SetupFor the next part, you will either need a Gmail account or any other email provider that gives you an SMTP connection.
\ If you want a great custom email, I recommend Ionos, you can get up to 10$ in credits by using my link Ionos - Email & Office 10$ credits which is the provider that I am currently using.
\ In this guide, I will show you how to set this up for these two providers, but the setup should be similar for others too.
\ IMPORTANT: Both of these hosts have a limit on how many emails can be sent out per hour or per day. For Ionos, that is 500/hour. Setting up a Sliding Window Limit is very important.
Setup for GmailI recommend that you use a different Gmail account from your personal one.
\ The first thing you will have to do is generate an app password; to do that, head to Create and manage app passwords, and create a new one called listmonk. Copy the password that is generated, and save it somewhere safe.
\ Now, head over to the listmonk webui.
\ In the SMTP tab, in settings you will find this:
Click on the Gmail option as circled.
\ Now, enter your full email address (including @gmail.com) in the username field.
\ And in the password field, enter the app password we generated before.
\ Now, click on the Test connection button in the bottom right corner, enter a test email, and click on Send e-mail.
\ If you configured everything correctly, you should now get a test message to the email specified.
\ Don’t forget to save!
Setup for IonosYou should probably generate a new email for the newsletter, e.g., `[email protected].
\ Head over to the listmonk webui.
\ Now, in the SMTP tab in the settings you see this.
The Ionos smtp server settings are:
Host: smtp.ionos.com
Port: 465
TLS: SSL/TLS
\ IMPORTANT: If you’re using IONOS UK or another specific regional version, you need to adjust the hostname. For example, if you’re on IONOS UK, you should use smtp.ionos.co.uk instead of the global smtp.ionos.com.
\ Now, in the username field, you should enter the full email address [email protected] and the password is the normal user password.
Now, to test the connection click on the Test connection button in the bottom right corner, enter a test email, and click on Send e-mail.
\ If you configured everything correctly, you should now get a test message to the email specified.
\ Don’t forget to save!
Sliding Window LimitThis is very important to set up when email providers limit the amount of email to be sent per hour or per day. You can access the Sliding window limit in Settings under the performance tab. For Ionos, I have it set at 500 emails/hour.
Exposing via Cloudflare TunnelsI will be making my instance publicly accessible using Cloudflare tunnels.
\ To do this, you will need a Cloudflare account and a domain pointed to Cloudflare.
\ First, head to the Zero Trust Dashboard.
\ Under Networks, click on Tunnels and then Create a tunnel.
\ Once created you should Install and run a connector, follow the instructions on the page for your specific setup.
\ After the connector is running, you should click on the Public Hostname tab and Add a public hostname.
\ Now, you should see something like this:
Fill in the info as I have.
\ The service type should be HTTP and the URL should be yourserverurl:9000, in my case, that’s 127.0.0.1:9000.
\ Now, if you head to the domain that you specified you should see gitea up and running.
\ In my case, you can access my newsletter page here.
Listmonk Feature OverviewThese are all of the features that listmonk offers:
TemplatesListmonk offers amazing built-in template support.
\ All templates are written in HTML.
\ You can access the templates by going to Campaigns > Templates.
\ Don’t forget to always include {{ template "content" . }} (for the main content) and also an unsubscribe button in all of your templates
CampaignsYou can create a new campaign (email) by going to Campaigns > All Campaigns.
\ Here, you can select a campaign name, subject the lists you want to target, and the template.
Email ListsYou can create new lists by going to Lists > All Lists.
For example, I have two lists:
New posts - Receive an email every time I post something new on my blog.
\
Weekly Roundup - Join my weekly roundup, where I share what I’ve been up to that week, including articles I’ve published, cool finds, tips and tricks and more!
\ Not everyone wants to receive an email every time I post a new article, so I created two lists!
HTML FormsListmonk also offers embeddable HTML forms to subscribe to the email list. You can access the form builder by going to Lists > Forms
Public Subscription AgeExcept for the HTML forms, listmonk also has a public subscription page. For example, here is mine.
\ It can also be accessed under `Lists > Forms
Campaign AnalyticsYou can track the views, clicks and bounces of your email campaigns by going to Campaigns > Analytics.
Import SubscribersYou can import subscribers from other platforms by going to Subscribers > Import. It currently supports CSV or ZIP files.
\ These are the most important features that listmonk offers (I’m sure I forgot some).
That’s All FolksIf this article helped you out, consider joining my (listmonk) newsletter below:
SubscribeSubscribe to my newsletter here.
\
All Rights Reserved. Copyright , Central Coast Communications, Inc.