init
- ai postgresql postgresql-contrib nginx
- sudo -u postgres psql
- create database listmonk;
- create user listmonk with encrypted password 'PW';
- grant all privileges on database listmonk to listmonk;
- ALTER DATABASE listmonk OWNER TO listmonk;
- quit
- https://github.com/knadh/listmonk/releases
- wget https://github.com/knadh/listmonk/releases/download/listmonk_VERSION_linux_amd64.tar.gz
- extract listmonk_VERSION_linux_amd64.tar.gz
- cd listmonk
- ./listmonk --new-config
- vim config.toml
- ./listmonk --install
- /usr/bin/listmonk --install --config config2.toml
- ./listmonk
- mkdir /etc/listmonk/
- mv config.toml /etc/listmonk/
- mv listmonk /usr/bin/
- 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
- systemctl daemon-reload
- systemctl enable listmonk.service
- systemctl start listmonk.service
Docker
- mkdir -p listmonk/DOM
- cd listmonk/DOM
- 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:
- docker compose up db -d
- docker compose run --rm app ./listmonk --install
- docker compose down
- docker compose up -d && docker compose logs -f