Files
docker-compose-cookbooks/listmonk
codeandClaude Fable 5 340866f9f4 complete all stack READMEs to the 9-section template
Existing content preserved and reordered to the canonical section order;
missing sections generated from each stack's compose data (ports, volumes,
env vars, image links). Fixes copy-paste errors in Dockhand sections
(qbittorrent pointed at archivebox; invokeai/thunderbird said SERVICENAME)
and persistant->persistent typos in gatus.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 06:25:05 +00:00
..
2026-07-16 06:24:54 +00:00

listmonk

Overview

Self-hosted newsletter and mailing list manager powered by PostgreSQL. This stack deploys listmonk with persistent storage, automatic database initialization/upgrades, and support for reverse proxy integration.

Project Details

Getting Started

  1. Start the container: docker compose up -d
  2. Open http://localhost:9000 in your browser
  3. Follow the initial setup wizard to configure the application

Environment Variable Notes

Most variables are optional because sane defaults are already included in the compose file.

Database

POSTGRES_IMAGE – PostgreSQL container image
POSTGRES_RESTART – Restart policy for PostgreSQL
POSTGRES_USER – PostgreSQL username
POSTGRES_PASSWORD – PostgreSQL password
POSTGRES_DB – PostgreSQL database name

listmonk

LISTMONK_IMAGE – listmonk container image
LISTMONK_RESTART – Restart policy for listmonk
LISTMONK_PORT – Web UI / proxy port
LISTMONK_HOSTNAME – Container hostname
LISTMONK_SSLMODE – PostgreSQL SSL mode
LISTMONK_MAX_OPEN – Maximum open DB connections
LISTMONK_MAX_IDLE – Maximum idle DB connections
LISTMONK_MAX_LIFETIME – DB connection lifetime

Initial Admin User

These are only used during first startup.

LISTMONK_ADMIN_USER – Initial admin username
LISTMONK_ADMIN_PASSWORD – Initial admin password

General

VOL_PATH – Base path for persistent storage
TZ – Container timezone

Volume Notes

/data/listmonk/db PostgreSQL database storage

/data/listmonk/uploads
    listmonk uploads and media storage

Back up both directories regularly.

Network Notes

Requires an external Docker network named:

proxy

Create it manually if it does not already exist:

docker network create proxy

Internal application traffic uses the private:

listmonk

bridge network.

Docker Run

docker run -d \
  --name listmonk \
  -p 9000:9000 \
  -v /data/listmonk/db:/var/lib/postgresql \
  -v /data/listmonk/uploads:/listmonk/uploads:rw \
  listmonk/listmonk:latest

See compose.yaml for the full set of environment variables.

Additional Notes / Gotchas

  • The stack automatically runs:

    • database installation
    • schema upgrades
    • application startup

    on container launch.

  • The install and upgrade commands are idempotent and safe to rerun.

  • Change all default passwords before exposing publicly.

  • Designed for use behind a reverse proxy such as Traefik, Caddy, Nginx Proxy Manager, or SWAG.

Dockhand Stack, Deploy from Git

Cookbooks Repository

stackname: listmonk
Compose file path: listmonk/compose.yaml
Additional env file (optional): listmonk/sample.env

Then load:

listmonk/sample.env

into the Environmental Variables section in Dockhand.

Create the Stack.