Are you running your own website and looking to host your own newsletter service? I present Listmonk to you, a self-hosted free and open-source, high-performance mailing list and newsletter manager. It is written in go and utilizes PostgreSQL database. You can connect an SMTP service such as Amazon SES or any other SMTP service to Listmonk and start managing your website's newsletter subscribers. Let's jump into the setup process with docker.
Ensure that you have docker and docker-compose installed or use these steps to install docker.
Docker Compose And Config
The first will be to copy the
config.toml config file to your folder on your docker host where all your docker-compose folders are stored. Create the two files mentioned in the previous sentence and copy the below code to both files.
version: "3.7" services: db: image: postgres:13 container_name: listmonk-db ports: - "5432:5432" networks: - listmonk environment: - POSTGRES_PASSWORD=listmonk - POSTGRES_USER=listmonk - POSTGRES_DB=listmonk restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U listmonk"] interval: 10s timeout: 5s retries: 6 volumes: - /docker/listmonk/postgresql/:/var/lib/postgresql/data app: image: listmonk/listmonk:latest container_name: listmonk-web restart: always ports: - "9800:9000" command: [sh, -c, "yes | ./listmonk --install --config config.toml && ./listmonk --config config.toml"] networks: - listmonk environment: - TZ=Etc/UTC depends_on: - db volumes: - /docker/listmonk/config/config.toml:/listmonk/config.toml - /docker/listmonk/static:/listmonk/static networks: listmonk:
[app] address = "0.0.0.0:9000" admin_username = "your_username" admin_password = "your_password" # Database. [db] host = "listmonk-db" port = 5432 user = "listmonk" password = "listmonk" database = "listmonk" ssl_mode = "disable" max_open = 25 max_idle = 25 max_lifetime = "300s"
Copy config to your docker persistent data folder
The next step is to create the directories if you do not have them created and ensure that you tweaked the folder's permissions for docker usage. Your folders can be anything you want to create or you can follow my structure in the docker-compose file:
sudo mkdir docker sudo mkdir /docker/listmonk sudo mkdir /docker/listmonk/config
config.toml file to the config folder:
sudo cp config.toml /docker/listmonk/config/
Setup Listmonk And Database
Once all the above steps have been completed you should navigate to the folder hosting your the
docker-compose.yml file and run docker-compose up to pull the images and set up the stack:
docker-compose up -d
Once done you can confirm if your containers are running with the
docker ps command or you can navigate to the docker host IP and port number bound to your web application in this specific instance it is
<ip_addr>:9800 via your web browser and you should get to a login screen where you log in with the credentials you defined in the
config.toml file. Once logged in you can navigate through the dashboard and configure all your settings.
In conclusion, I really like Listmonk as it is easy to set up and a lightweight application stack for your compute resources. If you enjoyed this article consider signing up for our newsletter and don't forget to share it with people that would find it helpful. Leave a comment below with a tutorial you would like us to cover.