High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.
Find a file
2025-07-14 00:18:24 +05:30
.devcontainer Fix outdated docker local dev suite (#2200) 2024-12-10 23:05:12 +05:30
.github Update Go version to v1.24.1 2025-03-18 20:22:44 +05:30
cmd feat: make all settings configurable via config.toml and ENV 2025-07-14 00:18:24 +05:30
dev Fix outdated docker local dev suite (#2200) 2024-12-10 23:05:12 +05:30
docs Update OIDC doc with latest KeyCloak realm URL (#2568) 2025-07-12 22:38:38 +05:30
frontend feat: make all settings configurable via config.toml and ENV 2025-07-14 00:18:24 +05:30
i18n Add Korean i18n translation (#2565) 2025-07-12 14:29:09 +05:30
internal Print full line with error in the importer log. Close #2549. 2025-07-05 18:47:10 +05:30
models Fix quotes issue in TrackLink regexp. 2025-05-25 15:13:51 +05:30
scripts Update i18n refresh script to remove deleted base keys from all other files. 2025-03-29 14:07:26 +05:30
static Prepare first RC. 2025-04-20 20:48:51 +05:30
.dockerignore feat: Add blobstore package 2019-10-31 11:25:31 +05:30
.gitattributes Added end of line config for git 2022-01-26 09:50:06 +01:00
.gitignore Add email-builder/dist to .gitignore. 2025-04-29 00:17:16 +05:30
.goreleaser.yml Remove obsolete demo file reference from Docker build commands. 2024-10-27 18:55:21 +05:30
config.toml.sample feat: make all settings configurable via config.toml and ENV 2025-07-14 00:18:24 +05:30
CONTRIBUTING.md Fix link to the docs repo. 2023-03-26 11:17:15 +05:30
docker-compose.yml Change the docker-compose example to bind Postgres locally. Closes #2357. 2025-03-20 11:07:06 +05:30
docker-entrypoint.sh Don't fail on chown in Docker entry script. Closes #2104. 2024-10-28 12:56:49 +05:30
Dockerfile #2114 - Fix issue of wrong platform used during docker build (#2123) 2024-10-30 10:13:00 +05:30
go.mod Update deps and remove obsolete replace in go.mod. Closes #2567. 2025-07-12 20:53:40 +05:30
go.sum feat: make all settings configurable via config.toml and ENV 2025-07-14 00:18:24 +05:30
LICENSE Refactor and add new build routines 2019-07-09 15:57:04 +05:30
listmonk-simple.service Update listmonk-simple.service - add optional log file (#1640) 2024-01-09 23:41:14 +05:30
listmonk@.service Enable extra system calls in systemd service (#1309) 2023-07-12 19:42:54 +05:30
Makefile Fix frontend/email-builder Makefile build steps. 2025-04-20 20:48:51 +05:30
permissions.json Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +05:30
project.inlang.json fix: update inlang settings (#1529) 2023-09-20 14:19:08 +05:30
queries.sql Fix subscribers unsubscription status being reset to confirmed on save (#2517) 2025-06-06 15:33:36 +05:30
README.md feat: make all settings configurable via config.toml and ENV 2025-07-14 00:18:24 +05:30
schema.sql Remove default dummy admin notification email settings. 2025-04-28 18:12:58 +05:30
VERSION Add a VERSION file for git-archive export 2021-08-14 13:41:19 +05:30

listmonk-logo

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

listmonk-dashboard

Visit listmonk.app for more info. Check out the live demo.

Installation

Docker

The latest image is available on DockerHub at listmonk/listmonk:latest. Download and use the sample docker-compose.yml.

# Download the compose file to the current directory.
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

# Run the services in the background.
docker compose up -d

Visit http://localhost:9000

See installation docs


Binary

  • Download the latest release and extract the listmonk binary.
  • ./listmonk --new-config to generate config.toml. Edit it.
  • ./listmonk --install to setup the Postgres DB (or --upgrade to upgrade an existing DB. Upgrades are idempotent and running them multiple times have no side effects).
  • Run ./listmonk and visit http://localhost:9000

See installation docs


External Configuration

listmonk supports declarative configuration via config.toml and environment variables for all settings, including those typically configured through the admin UI. This enables consistent deployments across environments.

Configuration Precedence

  1. config.toml - Highest priority
  2. Environment variables - Medium priority
  3. Database settings - Lowest priority (UI-configured)

Usage

config.toml example:

[app]
root_url = "https://listmonk.mysite.com"
site_name = "My Newsletter"
from_email = "admin@mysite.com"

[privacy]
individual_tracking = false
allow_blocklist = false

[performance]
concurrency = 20
message_rate = 300

Environment variables:

export LISTMONK_app__root_url="https://listmonk.mysite.com"
export LISTMONK_privacy__individual_tracking=false

Behavior

  • Settings configured externally are disabled in the admin UI
  • External settings show "This setting is configured externally" message
  • API prevents overwriting externally configured values
  • Use GET /api/settings/state to view external configuration status

Developers

listmonk is free and open source software licensed under AGPLv3. If you are interested in contributing, refer to the developer setup. The backend is written in Go and the frontend is Vue with Buefy for UI.

License

listmonk is licensed under the AGPL v3 license.