Listmonk - Developer Guide
Listmonk is a self-hosted powerhouse for newsletters and mailing lists. Experience seamless email campaigns with a built-in feature to auto-push PostgreSQL backups to S3 daily.
Video
Blog
Prerequisites
Before you get started with the Listmonk AMI, ensure you have the following prerequisites:
- Basic knowledge of AWS services, including EC2 instances and CloudFormation.
- An active AWS account with appropriate permissions.
- Enough vCPU limit to create instances
(Follow https://meetrix.io/articles/how-to-increase-aws-quota/ blog to ensure this)
Launching the AMI
Step 1: Find and Select 'Listmonk' AMI
- Log in to your AWS Management Console.
- Navigate to the "Listmonk" in AWS Marketplace.
Step 2: Initial Setup & Configuration
- Click the "Continue to Subscribe" button.
- After subscribing, you will need to accept the terms and conditions. Click on "Accept Terms" to proceed.
- Please wait for a few minutes while the processing takes place. Once it's completed, click on "Continue to Configuration".
- Select your preferred region in "Configure this software" page and click "Continue to Launch" button.
- From the "Choose Action" dropdown menu in "Launch this software" page, select "Launch CloudFormation" and click "Launch" button.
Create CloudFormation Stack
Step1: Create stack
- Ensure the "Template is ready" radio button is selected under "Prepare template".
2. Click "Next".
Step2: Specify stack options
- Provide a unique "Stack name".
- Provide the "Admin Email" for SSL generation.
- For "DeploymentName", enter a name of your choice.
- Provide a public domain name for "DomainName". (Listmonk will automatically try to setup SSL based on provided domain name, if that domain hosted on Route53. Please make sure your domain name hosted on route53. If its unsuccessful then you have to setup SSL manually)
- Choose an instance type, "InstanceType" (Recommended: t3.medium).
- Select your preferred "keyName" (Name of an existing EC2 key pair for SSH access to the EC2 instance).
- Enter a strong password for "ListmonkPassword" (Password for listmonk Web interface).
- Provide a S3 bucket name to "S3Bucket" for storing PostgreSQL backups.
- Set "SSHLocation" as "0.0.0.0/0".
- Keep "SubnetCidrBlock" as "10.0.0.0/24".
- Keep "VpcCidrBlock" as "10.0.0.0/16".
- Click "Next".
Step3: Configure stack options
- Under "Stack failure options", select "Roll back all stack resources".
- click "Next".
Step4: Review
- Review and verify the details you've entered.
2. Tick the box that says, "I acknowledge that AWS CloudFormation might create IAM resources with custom names".
3. Click "Submit".
Afterward, you'll be directed to the CloudFormation stacks page. You can easily locate the corresponding stack by searching for the stack name you entered in Step2.
Please wait for 5-10 minutes until the stack has been successfully created. Afterward, you can click the "Refresh" button under the "Stacks" section.
Update DNS
Step1: Copy IP Address
- Copy the public Ip labeled "PublicIp" in the "Outputs" tab.
Step2: Update DNS
- Go to AWS Route 53 and navigate to "Hosted Zones".
- From there, select the domain you provided to "DomainName".
3. Click "Edit record" in the "Record details" and then paste the copied "PublicIp" into the "value" textbox.
4. Click "Save".
Access Listmonk Dashboard
- you can access the Listmonk application through the "DashboardUrl" provided in the "Outputs" tab.
(If you encounter a "502 Bad Gateway error", please wait for about 5 minutes before refreshing the page)
2. Click "Login" button and enter "listmonk" as the username. For the password, use the "ListmonkPassword" that you entered in the "Step 2: Specify stack options" under the "Create CloudFormation Stack" section.
3. Then click "Sign In" to proceed. You will navigate to the Listmonk dashboard.
4. Before you start, please go to the "General" tab in the settings and modify the "Root URL" to correspond with your domain. Additionally, adjust the "Default `from` email" according to your preference, then click on "Save".
Setup Gmail SMTP server
Step1: Obtain password
- Navigate to your google account https://myaccount.google.com/.
- In the Security section, enable 2-step verification.
3. Use the search bar to find the "App passwords" option and navigate to the "App passwords" section.
4. Provide an app name and click on "create" to generate
5. Once generated, copy the password and ensure to keep it safe as it will not be visible again.
Step2: Test SMTP
- Navigate to the SMTP tab in the Listmonk "Settings"
- Provide the following details:
- Host: smtp.gmail.com
- Port: 465
- Auth protocol: LOGIN
- Username: Your Gmail address
- Password: Previously generated password
- To e-mail: An email address to which you want to send the test email
3. Click on "Send Email". If everything is in order, you will receive a test email.
4. Save the settings, and you're all set to proceed.
Generate SSL Manually
Listmonk will automatically try to setup SSL based on provided domain name, if that domain hosted on Route53. If its unsuccessful then you have to setup SSL manually.
Step1: Copy IP Address
- Proceed with the instructions outlined in the above "Update DNS" section, if you have not already done so.
2. Copy the Public IP address indicated as "PublicIp" in the "Outputs" tab.
Step2: Log in to the server
- Open the terminal and go to the directory where your private key is located.
- Paste the following command into your terminal and press Enter:
ssh -i <your key name> ubuntu@<Public IP address>
.
3. Type "yes" and press Enter. This will log you into the server.
Step3: Generate SSL
Paste the following command into your terminal and press Enter and follow the instructions:
sudo /root/certificate_generate_standalone.sh
Admin Email is acquiring for generate SSL certificates.
Shutting Down Listmonk
- Click the link labeled "Instance" in the "Resources" tab to access the EC2 instance, you will be directed to the Listmonk instance in EC2.
2. Select the listmonk instance by marking the checkbox and click "Stop instance" from the "Instance state" dropdown. You can restart the instance at your convenience by selecting "Start instance".
Remove Listmonk
Delete the stack that has been created in the AWS Management Console under 'CloudFormation Stacks' by clicking the 'Delete' button.
API Documentation
All features that are available on the listmonk dashboard are also available as REST-like HTTP APIs that can be interacted with directly. Request and response bodies are JSON. This allows easy scripting of listmonk and integration with other systems, for instance, synchronisation with external subscriber databases.
API requests require BasicAuth authentication with the admin credentials.
- username: listmonk
- password: "ListmonkPassword" that you entered in the "Step 2: Specify stack options" under the "Create CloudFormation Stack" section.
Upgrades
When there is an upgrade, we will update the product with a newer version. You can check the product version in AWS Marketplace. If a newer version is available, you can remove the previous version and launch the product again using the newer version. Remember to backup the necessary server data before removing.
Troubleshoot
- If you face the following error, please follow https://meetrix.io/articles/how-to-increase-aws-quota/ blog to increase vCPU quota.
2. If you face the following error (do not have sufficient <instance_type> capacity...) while creating the stack, try changing the region or try creating the stack at a later time.
3. If you face the below error, when you try to access the API dashboard, please wait 5-10 minutes and then try.
Conclusion
To sum up, Listmonk proves to be a versatile solution for managing mailing lists and newsletters, featuring a self-hosted model with minimal dependencies—it operates as a standalone binary with only a Postgres database required. This setup ensures users have full control over their email marketing processes, enabling seamless integration and scalability without reliance on external services. Whether for small businesses or large enterprises, Listmonk offers robust features and straightforward deployment, making it an excellent choice for enhancing and managing email campaigns effectively. Opt for Listmonk to streamline your email marketing efforts with ease and control.
Technical Support
Reach out to Meetrix Support (support@meetrix.io) for assistance with Listmonk issues.