Author: mumaritcwpadmin

  • How to install listmonk using binary on Ubuntu 22.04

    listmonk

    listmonk is a self-hosted, high-performance mailing list and newsletter manager. It comes as a standalone binary and the only dependency is a Postgres database.

    While you can setup listmonk on docker container and the official documents contains detailed information, today our focus is to install it using binary on Ubuntu 22.04. we need to setup ubuntu machine and ssh into it

    Let starts:

    ssh into your ubuntu machine and run the update

    sudo apt update
    Install and setup Postgre SQL
    sudo apt install postgresql postgresql-contrib

    After installation, create a user and database for listmonk and provide privileges to a user on the newly created database

    sudo -u postgres psql
    
    create database listmonk;
    create user listmonk with encrypted password 'listmonk0101';
    grant all privileges on database listmonk to listmonk;
    \q

    Let’s move to the next step to get the listmonk binary from github repository

    wget https://github.com/knadh/listmonk/releases/download/v2.4.0/listmonk_2.4.0_linux_amd64.tar.gz
    At the time of writing the blog, the latest release is 2.4.0, you can get the latest release from listmonk github repository

    Extract the downloaded listmonk binary file and configure it:

    tar -zxvf listmonk_2.4.0_linux_amd64.tar.gz

    Generate the config file:

    ./listmonk --new-config

    Edit config file and add our database details which we created in first step:

    sudo nano config.toml

    Do the following changes:

    Since I am installing it locally behind the firewall, I will change the address to 0.0.0.0:9000, you can change it to your domain

    Set the admin username and password

    Update the db details to our database

    Press Ctril + X then Y and Enter to save

    Install the listmonk and run it

    ./listmonk --install
    ./listmonk

    At this stage, you should be able to browse to listmonk admin panel using your machine ip with port 9000

    your-ip-address:9000

    Let’s create the service to keep it alive even we close the terminal window:

    For creating the service first, we need to move the listmonk files to directories

    Move the config file to /etc/listmonk

    sudo mkdir /etc/listmonk/
    sudo mv config.toml /etc/listmonk/

    Move the listmonk to /usr/bin

    sudo mv listmonk /usr/bin/

    Create the service file and paste the configuration from the link in listmonk github repository: Link

    sudo nano /etc/systemd/system/listmonk.service

    Do the following config changes:

    ConditionPathExists=/etc/listmonk/config.toml

    ExecStartPre=/usr/bin/listmonk –config /etc/listmonk/config.toml –upgrade –yes

    ExecStart=/usr/bin/listmonk –config /etc/listmonk/config.toml $SYSTEMD_LISTMONK_ARGS

    Comment out the below lines for systemcall or it will give dump error

    #SystemCallFilter=@system-service

    #SystemCallFilter=~@privileged @resources

    Press Ctril + X and then y and Enter to save it

    Enable and start the service

    sudo systemctl daemon-reload
    sudo systemctl enable listmonk.service
    sudo systemctl start listmonk.service

    Check the status of the service, it should be active and you should be able to connect to admin panel of listmonk:

    Next: Install nginx and configure SSL