Tags

init

  1. ai postgresql postgresql-contrib nginx
  2. sudo -u postgres psql
  3. create database listmonk;
  4. create user listmonk with encrypted password 'PW';
  5. grant all privileges on database listmonk to listmonk;
  6. ALTER DATABASE listmonk OWNER TO listmonk;
  7. quit
  8. https://github.com/knadh/listmonk/releases
  9. wget https://github.com/knadh/listmonk/releases/download/listmonk_VERSION_linux_amd64.tar.gz
  10. extract listmonk_VERSION_linux_amd64.tar.gz
  11. cd listmonk
  12. ./listmonk --new-config
  13. vim config.toml
  14. ./listmonk --install
    • /usr/bin/listmonk --install --config config2.toml
  15. ./listmonk
  16. mkdir /etc/listmonk/
  17. mv config.toml /etc/listmonk/
  18. mv listmonk /usr/bin/
  19. vim /etc/systemd/system/listmonk.service
    https://github.com/knadh/listmonk/blob/master/listmonk%40.service 
ConditionPathExists=/etc/listmonk/config.toml
ExecStartPre=/usr/bin/listmonk --config /etc/listmonk/config.toml --upgrade --yes
ExecStart=/usr/bin/listmonk --config /etc/listmonk/config.toml $SYSTEMD_LISTMONK_ARGS
SystemCallFilter=@system-service
SystemCallFilter=~@privileged @resources
  1. systemctl daemon-reload
  2. systemctl enable listmonk.service
  3. systemctl start listmonk.service

Docker

  1. mkdir -p listmonk/DOM
  2. cd listmonk/DOM
  3. mkdir uploads data static

vim config.toml

[app]
address = "0.0.0.0:9000"
admin_username = "DOM-admin"
admin_password = "PASSWORD-WEBLOGIN"
[db]
host = "lm_db-DOM"
port = 5432
user = "listmonk"
password = "PASSWORD-DB"
database = "listmonk"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"

vim docker-compose.yml

---
version: "3.7"
x-app-defaults: &app-defaults
 restart: always
 image: listmonk/listmonk:latest
 user: 1001:1001
 ports:
   - "127.0.0.1:PORTNUMBERLOCALHOST:9000"
 networks:
   - listmonk
 environment:
   - TZ=Europe/Vienna
x-db-defaults: &db-defaults
 image: postgres:13
 user: 1001:1001
 ports:
   - "127.0.0.1:PORTNUMBERLOCALHOST:5432"
 networks:
   - listmonk
 environment:
   - POSTGRES_PASSWORD=PASSWORD-DB
   - POSTGRES_USER=listmonk
   - POSTGRES_DB=listmonk
 restart: always
 healthcheck:
   test: ["CMD-SHELL", "pg_isready -U listmonk"]
   interval: 10s
   timeout: 5s
   retries: 6
services:
 db:
   <<: *db-defaults
   container_name: lm_db-DOM
   volumes:
     - ./data:/var/lib/postgresql/data
 app:
   <<: *app-defaults
   container_name: lm_app-DOM
   depends_on:
     - db
   volumes:
     - ./config.toml:/listmonk/config.toml
     - ./uploads:/listmonk/uploads
     - ./static:/listmonk/static
networks:
 listmonk:
  1. docker compose up db -d
  2. docker compose run --rm app ./listmonk --install
  3. docker compose down
  4. docker compose up -d && docker compose logs -f