Published on

Installare Listmonk su LXC senza Docker

Authors
  • avatar
    Name
    Alessandro Iannacone
    Twitter

Listmonk è una piattaforma open source, leggera e performante per l'invio di newsletter e campagne email. In questa guida vedremo come installarla senza Docker, in un container LXC (ad esempio su Proxmox), usando PostgreSQL come database.

Obiettivo: avere Listmonk in esecuzione come servizio di sistema, accessibile sulla rete, pronto per inviare newsletter via SMTP.

Requisiti

  • Container LXC con Debian/Ubuntu
  • Accesso root
  • Porta 9000 aperta

1. Installare PostgreSQL

apt update
apt install postgresql -y

2. Creare il database e l'utente per Listmonk

sudo -u postgres psql

Nel prompt:

CREATE DATABASE listmonk;
CREATE USER listmonk WITH PASSWORD 'listmonk';
GRANT ALL PRIVILEGES ON DATABASE listmonk TO listmonk;
\q

3. Scaricare il binario Listmonk

cd /opt
curl -L https://github.com/knadh/listmonk/releases/latest/download/listmonk.tar.gz | tar -xz
cd listmonk

Copia il binario in /usr/bin per comodità:

cp listmonk /usr/bin/
chmod +x /usr/bin/listmonk

4. Configurare Listmonk

Modifica il file config.toml in /opt/listmonk/:

[app]
address = "0.0.0.0:9000"

[db]
host = "127.0.0.1"
port = 5432
user = "listmonk"
password = "listmonk"
database = "listmonk"
ssl_mode = "disable"

📅 Importante: assicurati che il file config.toml sia nella stessa cartella indicata nel servizio systemd (WorkingDirectory).

5. Installare Listmonk (una tantum)

/usr/bin/listmonk --install

6. Creare un servizio systemd

nano /etc/systemd/system/listmonk.service

Contenuto:

[Unit]
Description=Listmonk self-hosted newsletter
After=network.target postgresql.service

[Service]
Type=simple
User=root
WorkingDirectory=/opt/listmonk
ExecStart=/usr/bin/listmonk
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Attiva e avvia:

systemctl daemon-reexec
systemctl enable --now listmonk

Verifica:

systemctl status listmonk

7. Accedi a Listmonk

Apri il browser su:

http://IP_DEL_CONTAINER:9000

Credenziali predefinite:

  • Utente: admin
  • Password: listmonk

Troubleshooting

  • Errore CHDIR: assicurati che WorkingDirectory nel servizio punti alla cartella corretta (/opt/listmonk)
  • Porta non raggiungibile: controlla che address = "0.0.0.0:9000" nel config.toml e che non ci sia un firewall che blocchi la porta
  • Crash al reload: esegui Listmonk sempre con percorso assoluto (/usr/bin/listmonk)

Prossimi passi

  • Aggiungere un reverse proxy con Nginx per HTTPS
  • Configurare un dominio (es. newsletter.tuodominio.it)
  • Integrare SPF, DKIM e DMARC per migliorare la deliverability
  • Creare campagne e template Markdown/HTML

Hai bisogno di uno script completo di installazione automatica o una config per Nginx con HTTPS? Scrivimi e lo aggiungo volentieri!