jorge 55d81f1d9d | ||
---|---|---|
.github | ||
cmd | ||
frontend | ||
i18n | ||
internal | ||
models | ||
scripts | ||
static | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.goreleaser.yml | ||
Dockerfile | ||
LICENSE | ||
Makefile | ||
README.md | ||
TODO.md | ||
config-demo.toml | ||
config.toml.sample | ||
docker-compose.yml | ||
go.mod | ||
go.sum | ||
install-demo.sh | ||
queries.sql | ||
schema.sql | ||
stats.sql |
README.md
listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.
Visit listmonk.app
Installation
Docker
The latest image is available on DockerHub at listmonk/listmonk:latest
. Use the sample docker-compose.yml to run listmonk and Postgres DB with docker-compose as follows:
Demo
mkdir listmonk-demo
sh -c "$(curl -sSL https://raw.githubusercontent.com/knadh/listmonk/master/install-demo.sh)"
The demo does not persist Postgres after the containers are removed. DO NOT use this demo setup in production.
Production
docker-compose up db
to run the Postgres DB.docker-compose run --rm app ./listmonk --install
to setup the DB (or--upgrade
to upgrade an existing DB)- Run
docker-compose up app
and visithttp://localhost:9000
.
More information on docs.
Binary
prerequisites Debian: system user and PostgreSQL
- install
sudo
- install PostgreSQL
apt install postgresql
- --create system user with config.toml data for the database:
adduser listmonkuser
-- - create the postgreSQL database, the user and grant permissions:
su - postgres
and then acces de PostgreSQL consolepsql
postgres=# CREATE DATABASE listmonkdatabase; postgres=# CREATE USER listmonkuser WITH PASSWORD 'listmonkpassword'; postgres=# GRANT ALL PRIVILEGES ON DATABASE listmonkdatabase TO listmonkuser;
download an prepare config file
cd /var/www/
and make the directorymkdir listmonk
cd listmonk
- Download the latest release and extract the listmonk binary.
wget https://github.com/knadh/listmonk/releases/download/v1.0.0/listmonk_1.0.0_linux_amd64.tar.gz wget https://github.com/knadh/listmonk/releases/download/v1.0.0/listmonk_1.0.0_checksums.txt sha256sum listmonk_1.0.0_linux_amd64.tar.gz cat listmonk_1.0.0_checksums.txt |grep linux
- change ownership of files
chown -R www-data:www-data /var/www/listmonk
- generate config file
sudo -u www-data ./listmonk --new-config
- edit the config file with the data we created previously and more options
vim /var/www/listmonk/confif.toml
reverse proxy
- create the apache config to work behind a reverse proxy
/etc/apache2/sites-available/listmonk.doamain.tdl.conf
<VirtualHost *:80>
ServerName listmonk.domain.tdl
ServerSignature Off
ErrorLog /var/log/apache2/listmonk.domain.tdl_error.log
TransferLog /var/log/apache2/listmonk.domain.tdl_access.log
LogLevel warn
ProxyPreserveHost On
ProxyPass "/" "http://127.0.0.1:9000/"
ProxyPassReverse "/" "http://127.0.0.1:9000/"
</VirtualHost>
- enable the proxy module
a2enmod proxy_http
enable the sitea2ensite listmonk.domain.tdl
and restart apachesystemctl reload apache2
proceed to install
sudo -u www-data ./listmonk --install
to setup the Postgres DB (or--upgrade
to upgrade an existing DB. Upgrades are idempotent and running them multiple times have no side effects).- Run
sudo -u www-data ./listmonk
and visithttp://listmonk.domain.tdl
after install, fine tunning
oncen checked it works, stop the process.
- move the files to where you like most, usually
/opt/listmonk/
or inside/var/www/html/
- change ownership of the files to
www-data
or whatever user you have assigned the webserverchown -R www-data:www-data listmonk
- run listmonk as a service, create
/etc/systemd/system/listmonk.service
with:[Unit] Description=Listmonk domain.tdl server After=syslog.target network.target postgressql.target [Service] Type=simple # the user and group executing the service User=www-data Group=www-data # the directory where you have listmonk WorkingDirectory=/var/www/html/listmonk # the file to execute ExecStart=/var/www/html/listmonk/listmonk Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
- enable the service
systemct enable listmonk.service
and restart the daemonsystemctl daemon-restart
or you can start just the servicesystemctl start listmonk.service
fixing small dependencies
- uploads fail:
mkdir /var/www/html/listmonk/uploads
andchown -R www-data:www-data /var/www/html/listmonk
Heroku
Using the Nginx buildpack can be used to deploy listmonk on Heroku and use Nginx as a proxy to setup basicauth. This one-click Heroku deploy button provides an automated default deployment.
Please note that configuration options must be set using environment configuration variables.
Developers
listmonk is a free and open source software licensed under AGPLv3. If you are interested in contributing, refer to the developer setup. The backend is written in Go and the frontend is Vue with Buefy for UI.
License
listmonk is licensed under the AGPL v3 license.