Skip to main content

Configuration

TOML Configuration file

One or more TOML files can be read by passing --config config.toml multiple times. Apart from a few low level configuration variables and the database configuration, all other settings can be managed from the Settings dashboard on the admin UI.

To generate a new sample configuration file, run --listmonk --new-config

Environment variables

Variables in config.toml can also be provided as environment variables prefixed by LISTMONK_ with periods replaced by __ (double underscore). Example:

Environment variableExample value
LISTMONK_app__address"0.0.0.0:9000"
LISTMONK_app__admin_usernamelistmonk
LISTMONK_app__admin_passwordlistmonk
LISTMONK_db__hostdb
LISTMONK_db__port9432
LISTMONK_db__userlistmonk
LISTMONK_db__passwordlistmonk
LISTMONK_db__databaselistmonk
LISTMONK_db__ssl_modedisable

Customizing system templates

Read this

HTTP routes

When configuring auth proxies and web application firewalls, use this table.

Private admin endpoints.

MethodsRouteDescription
*/api/*Admin APIs
GET/admin/*Admin UI and HTML pages
POST/webhooks/bounceAdmin bounce webhook

Public endpoints to expose to the internet.

MethodsRouteDescription
GET, POST/subscription/*HTML subscription pages
GET, /link/*Tracked link redirection
GET/campaign/*Pixel tracking image
GET/public/*Static files for HTML subscription pages
POST/webhooks/service/*Bounce webhook endpoints for AWS and Sendgrid

Media Uploads

Filesystem

When configuring docker volume mounts for using filesystem media uploads, you can follow either of two approaches. The second option may be necessary if your setup requires you to use sudo for docker commands.

After making any changes you will need to run sudo docker compose stop ; sudo docker compose up.

And under https://listmonk.mysite.com/admin/settings you put /listmonk/uploads.

Using volumes

Using docker volumes, you can specify the name of volume and destination for the files to be uploaded inside the container.

app:
volumes:
- type: volume
source: listmonk-uploads
target: /listmonk/uploads

volumes:
listmonk-uploads:

!!! note

This volume is managed by `docker` itself, and you can see find the host path with `docker volume inspect listmonk_listmonk-uploads`.

Using bind mounts

app:
volumes:
- ./path/on/your/host/:/path/inside/container

Eg:

app:
volumes:
- ./data/uploads:/listmonk/uploads

The files will be available inside /data/uploads directory on the host machine.

To use the default uploads folder:

app:
volumes:
- ./listmonk/uploads:/listmonk/uploads

Time zone

To change listmonk's time zone (logs, etc.) edit docker-compose.yml:

environment:
- TZ=Etc/UTC

with any Timezone listed here. Then run sudo docker-compose stop ; sudo docker-compose up after making changes.