Как установить Listmonk на Ubuntu 25.04

Дата публикации: 2025-05-19T13:58:25

Теги: ["self-hosted", "ubuntu", "newsletter"]

⏪ Вернуться домой
⏪ В Gemlog

[Listmonk](https://listmonk.app/) — это автономный, самостоятельный, информационный бюллетень и менеджер списков рассылки. Он быстрый, многофункциональный и упакован в один бинарный файл, и единственная зависимость — это база данных Postgres. В этой статье мы узнаем, как установить Listmonk на Ubuntu 25.04. Итак, приступим.

<!--more-->

Предпосылки

Конвенции

# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя

Шаг 1. Обновите систему

Свежая установка Ubuntu 25.04 требует обновления пакетов до последних доступных версий.

sudo apt update -y && sudo apt upgrade -y

Шаг 2. Установите PostgreSQL

Установите пакет Postgres вместе с пакетом contrib, который добавляет некоторые дополнительные утилиты и функции.

sudo apt install postgresql postgresql-contrib

После установки запустите и включите службу PostgreSQL.

sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service

Шаг 3. Создание базы данных

Нам нужно создать базу данных для Listmonk для работы.

sudo -u postgres psql -c "CREATE USER listmonk WITH PASSWORD 'yourpassword';"
sudo -u postgres psql -c "CREATE DATABASE listmonk_db OWNER listmonk;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE listmonk_db TO listmonk;"

Шаг 4. Создайте пользователя для запуска

sudo useradd -s /usr/sbin/nologin -r -M listmonk

Шаг 5. Установите Listmonk

Загрузите последний бинарный файл со страницы релизов на [GitHub](https://github.com/knadh/listmonk/releases).

wget https://github.com/knadh/listmonk/releases/download/v5.0.0/listmonk_5.0.0_linux_amd64.tar.gz
wget https://github.com/knadh/listmonk/releases/download/v5.0.0/listmonk_5.0.0_checksums.txt
shasum -a 256 -c listmonk_5.0.0_checksums.txt
tar -xvf listmonk_5.0.0_linux_amd64.tar.gz
sudo mv listmonk /usr/local/bin/

Создайте новый файл конфигурации с помощью следующей команды

sudo mkdir -p /etc/listmonk/
listmonk --new-config
sudo mv config.toml /etc/listmonk/
sudo chown listmonk:listmonk /etc/listmonk/

Отредактируйте файл `config.toml`, чтобы он соответствовал вашим данным, включая ваше имя пользователя и безопасный пароль.

[app]
address = "0.0.0.0:9000"
admin_username = "listmonk"
admin_password = "StrongPassword"

# Database.
[db]
host = "localhost"
port = 5432
user = "listmonk"
password = "yourpassword"
database = "listmonk_db"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"

Сохраните и закройте файл.

Используйте следующую команду для установки таблиц PostgreSQL.

listmonk --install

После этого выполните следующую команду, чтобы запустить его.

listmonk

Затем перейдите в браузере по адресу `http://localhost:9000` чтобы получить доступ к listmonk.

Шаг 6. Настройте службу systemd для запуска Listmonk

sudo nano /etc/systemd/system/listmonk.service
[Unit]
Description=ListMonk - mailing list and newsletter manager
Requires=network.target
After=network.target
After=postgresql.service

[Service]
Type=simple
User=listmonk
Group=listmonk
WorkingDirectory=/etc/listmonk/
EnvironmentFile=/etc/listmonk/config.toml
ExecStart=/usr/local/bin/listmonk --config /etc/listmonk/config.toml
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

Включите и запустите listmonk при загрузке.

sudo systemctl start listmonk.service
sudo systemctl enable listmonk.service

Все, что осталось, — это войти в систему, используя учетные данные администратора, которые мы установили в файле `config.toml`, и ввести все наши пользовательские настройки на вкладке «Настройки».

Шаг 7. Настройте Nginx в качестве обратного прокси

$ sudo apt-get -y install nginx

Создайте обратный конфигурацию прокси-сервера для Listmonk.

$ sudo nano /etc/nginx/sites-available/listmonk.conf

Заполните файл следующей конфигурацией.

server {
    server_name     news.example.com;
    listen          80;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Включите конфигурацию обратной прокси-сервера

$ sudo ln -s /etc/nginx/sites-available/listmonk.conf /etc/nginx/sites-enabled/listmonk.conf

Наконец, мы можем проверить, не имеет ли наш файл nginx никакой ошибки.

$ sudo nginx -t
$ sudo systemctl restart nginx.service

Шаг 8. Получите сертификат TLS от Let's Encrypt

Мы будем использовать Let's Encrypt для получения SSL-сертификата бесплатно. Пожалуйста, убедитесь, что вы указали свой поддомен на IP-адрес сервера. Шаги, приведенные ниже, будут работать только в том случае, если вы обслуживаете интерфейс управления с помощью Nginx.

$ sudo apt install python3-certbot-nginx

Запрос на Let’s Encrypt SSL.

$ sudo certbot certonly --nginx -d news.example.com

Проверьте SSL

Откройте следующую ссылку в вашем веб-браузере для проверки.

https://news.example.com

Следующая команда гарантирует, что Certbot может проверить ваш поддомен с помощью вашей конфигурации.

$ sudo certbot renew --dry-run

Если пробный запуск прошел без ошибок, все готово. Теперь процесс продления будет автоматизирован.

Он автоматически настраивает `/etc/nginx/sites-available/listmonk.conf` для включения SSL.

Обновление Listmonk

Загрузите последний бинарный выпуск с [GitHub](https://github.com/knadh/listmonk/releases) и извлеките его содержимое и замените бинарный файл.

Выполните следующую команду для обновления.

listmonk --upgrade

Затем посетите веб-сайт по адресу `https://news.example.com` для доступа.

Завершение

Собственно на этом всё, теперь вы можете создавать кампании и отправлять сообщения всем своим подписчикам обо всех ваших выгодных предложениях.

Если вам понравился этот пост о том, как установить Listmonk на Ubuntu 25.04, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.