High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.
Find a file
Kailash Nadh a271bf54d5 Introduce per-campaign filter permissions. Closes #2325.
This patch introduces new `campaigns:get_all` and `campaigns:manage_all`
permissions which alter the behaviour of the the old `campaigns:get` and
`campaigns:manage` permissions. This is a subtle breaking behavioural change.

Old:

- `campaigns:get` -> View all campaigns irrespective of a user's list
  permissions.
- `campaigns:manage` -> Manage all campaigns irrespective of a user's list
  permissions.

New:

- `campaigns:get_all` -> View all campaigns irrespective of a user's list
  permissions.
- `campaigns:manage_all` -> Manage all campaigns irrespective of a user's list
  permissions.
- `campaigns:get` -> View only the campaigns that have at least one list to
  which which a user has get or manage access.
- `campaigns:manage` -> Manage only the campaigns that have at list one list
  to which a user has get or manage access.

In addition, this patch refactors and cleans up certain permission related
logic and functions.
2025-03-31 16:39:42 +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 Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +05:30
dev Fix outdated docker local dev suite (#2200) 2024-12-10 23:05:12 +05:30
docs Add Nuxt.js module to Supported Libraries Lists (#2371) 2025-03-27 00:18:40 +05:30
frontend Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +05:30
i18n Fix inconsistent behaviour in campaign scheduling on the UI. 2025-03-31 13:00:51 +05:30
internal Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +05:30
models Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +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 fix(static): no matching closing anchor tag 2025-01-24 11:02:21 +13:00
.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 feat: Add separate config for demo setup, tweak docs 2020-07-08 22:38:31 +05:30
.goreleaser.yml Remove obsolete demo file reference from Docker build commands. 2024-10-27 18:55:21 +05:30
config.toml.sample Remove admin user/password from sample config generation. 2024-10-13 16:59:52 +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 Upgrade smtppool to v2 and add support for concrete SSL options. 2025-03-29 17:05:03 +05:30
go.sum Upgrade smtppool to v2 and add support for concrete SSL options. 2025-03-29 17:05:03 +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 Update gorelease command and remove deprecated flags. 2024-10-27 18:14:32 +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 Introduce per-campaign filter permissions. Closes #2325. 2025-03-31 16:39:42 +05:30
README.md Fix docker-compose curl command examples. 2024-10-28 00:16:26 +05:30
schema.sql Add support for domain allowlists in addition to blocklists. Closes #2230. 2025-03-29 23:31:34 +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 (⩾ 12) 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


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.