Listmonk

High performance, self-hosted newsletter and mailing list manager with a modern dashboard.

Directory Structure

    • .env
    • docker-compose.yml

docker-compose.yml

version: "3.7"
 
x-app-defaults: &app-defaults
  restart: unless-stopped
  image: listmonk/listmonk:latest
  ports:
    - "9000:9000"
  networks:
    - listmonk
  environment:
    - TZ=Etc/UTC
 
x-db-defaults: &db-defaults
  image: postgres:13-alpine
  ports:
    - "9432:5432"
  networks:
    - listmonk
  environment:
    - POSTGRES_PASSWORD=listmonk
    - POSTGRES_USER=listmonk
    - POSTGRES_DB=listmonk
  restart: unless-stopped
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U listmonk"]
    interval: 10s
    timeout: 5s
    retries: 6
 
services:
  db:
    <<: *db-defaults
    container_name: listmonk_db
    volumes:
      - type: volume
        source: listmonk-data
        target: /var/lib/postgresql/data
 
  app:
    <<: *app-defaults
    container_name: listmonk_app
    hostname: listmonk.example.com # Recommend using FQDN for hostname
    depends_on:
      - db
    volumes:
      - ./config.toml:/listmonk/config.toml
 
  demo-db:
    container_name: listmonk_demo_db
    <<: *db-defaults
 
  demo-app:
    <<: *app-defaults
    container_name: listmonk_demo_app
    command: [sh, -c, "yes | ./listmonk --install --config config-demo.toml && ./listmonk --config config-demo.toml"]
    depends_on:
      - demo-db
 
networks:
  listmonk:
 
volumes:
  listmonk-data:

Resources

Website: https://listmonk.app/

GitHub: https://github.com/knadh/listmonk

Docker Hub : https://hub.docker.com/r/listmonk/listmonk

Configuration: https://listmonk.app/docs/installation/