Уведомления proxmox в telegram бота и почту за 10 минут

Возврат:: к списку статей мои статьи


Это небольшая заметка о том как буквально за 10 минут организовать пересылку уведомлений из системы Proxmox VE  в телеграмм.

Небольшое вступление

В один не очень приятный момент я столкнулся с тем что резервное копирование proxmox из за ошибки не выполнялось несколько дней, а так как эксперименты над виртуалками с моей стороны очень частые для меня это очень плохой звоночек. В один не очень хороший момент я мог просто не найти бэкап на который рассчитывал. Для предотвращения подобной ситуации в будущем решил настроить уведомления в proxmox.

Сама система proxmox поддерживает три типа уведомлений: smtp, gotify и встроенную отправку почты linux. По умолчанию настроен вариант отправки почты linux, но из коробки это решение работать не будет и все уведомления оседают где то в логах системы.

Рассмотрим два других варианта более подробно:

Вариант использовать почту был уже более приемлемый но хотелось все таки получать уведомления в телеграмм (у меня уже были ранее настроены уведомления для watchtower, sonar, radar и т.д.).

На просторах интернета есть несколько ботов которые подключаются к proxmox api Для управления системой, но по большей степени это именно управление и уведомления они не получают, ну и для задачи это было избыточно.

В сухом остатке имеем два пути решения задачи Gotify или Smtp, причем приложение Gotify работает по принципу что именно приложение идет за сообщением а не сервер отправляет на телефон, это серьезное ограничение которое требует внешний доступ к серверу Gotify.

Простое и элегантное решение

На просторах интернета и обсуждений проблемы в telegram каналах было найдено простое и элегантное решение, smtp_to_telegram. Это небольшое приложение поднимает smtp сервер для приема писем без авторизации и пересылает их в telegram бот. Данный метод можно использовать не только для proxmox но и для любого сервиса поддерживающего smtp отправку уведомлений.

Подробнее о самом решении можете посмотреть на странице GitHub: https://github.com/KostyaEsmukov/smtp_to_telegram

Фактически нам необходимо создать телеграмм бота (или использовать уже имеющийся) который будет только отправлять сообщения, но не будет читать. Это позволяет без проблем использовать одного бота для нескольких уведомлений как например для watchtower (автоматического обновления докер образов).

На просторах интернета множество инструкций по созданию телеграмм ботов подробно расписывать не буду. Коротко идем к служебному боту https://t.me/BotFather и создаем нового бота через меню, нам надо от него токен API. Не забываем написать нашему боту что ни будь для запуска. Так же с помощью https://t.me/myidbot необходимо узнать наш id для отправки сообщений, все опять таки крайне просто пишем боту /getid и получаем циферки которые нам нужны.

Само решение будем запускать как я люблю в докере, так как это банально проще и легко воспроизводится:

version: '3'
services:
 SmtpToTelegram:
    container_name: SmtpToTelegram
    image: kostyaesmukov/smtp_to_telegram:latest
    restart: unless-stopped
    volumes:
      - /DATA/AppData/SmtpToTelegram:/SmtpToTelegram
    environment:
      - ST_TELEGRAM_CHAT_IDS=<CHAT_ID>
      - ST_TELEGRAM_BOT_TOKEN=<TELEGRAM_BOT_TOKEN>
      - ST_TELEGRAM_MESSAGE_TEMPLATE={subject}\n\n{body}\n\n{attachments_details}
    ports:
      - 2525:2525

Сам автор проекта не очень коммуникабельный и не собирает дорабатывать как либо решение, или банально делать образ докера под arm64 но есть альтернативный вариант под эту архитектуру.

Для arm64 используйте образ image: cobra1978/smtp_to_telegram

После запуска докер контейнера на нашем сервере на порту 2525 поднимется smtp сервер пересылки без авторизации.

Переходим в настройку proxmox, нас интересует раздел notification у центра обработки данных.

Уведомления proxmox в telegram бота и почту за 10 минут-1.png

Создадим новую цель уведомлений smtp с данными для нашего сервиса пересылки (сервер это ip нашего сервера на котором запущен докер контейнер пересылки):

Уведомления proxmox в telegram бота и почту за 10 минут.png

Фактически отправитель и получатель могут быть вообще любыми адресами у сервиса нет контроля релевантности адресов кроме общего шаблона .<name>@domein

Фактически все у нас есть возможность отправлять уведомления proxmox в телеграмм, нажимаем test и видимо сообщение от бота.

Если не сработало проверьте что у пользователя заполнен почтовый адрес

Pasted image 20240620130106.png

Настройка уведомлений на почту

Кроме бота можно настроить еще и дополнительно уведомления на почту, я для таких целей использую свой же почтовый ящик gmail. Но необходимо выполнить несколько предварительных настроек.

Установить у пользователя proxmox почту.

Для этого переходим в управление пользователями proxmox, и заполняем для пользователя от имени которого будем отправлять уведомления электронный адрес.

Pasted image 20240620130116.png

Pasted image 20240620130121.png

Следующий пункт это получение пароля приложения для нашей почты которая будет выполнять отправку. Каждый почтовый сервис имеет свои правила и настройки, но большая часть современных требует создания пароля приложения с ограниченными правами. Для Google можно посмотреть тут: https://support.google.com/accounts/answer/185833?hl=ru

После получения пароля возвращаемся в раздел уведомлений proxmox и создаем новую цель для рассылки smtp, для своего почтового сервиса ищите настройки в поиске по словам "smtp <название вашего сервиса>"

Pasted image 20240620130318.png

Обратите внимание что получатель и отправитель (настраивается в пользователе) почты могут совпадать, это будет письмо самому себе.

Нажимаем тест и проверяем почту.

Pasted image 20240620130311.png

Отправителя по умолчанию можно выключить, но удалить не получиться.

Уведомления о бэкапах proxmox

В proxmox существует достаточно гибкая система условий для уведомлений, подробно о ней можно почитать тут https://pve.proxmox.com/wiki/Notifications

Я приведу небольшой пример который я использую для получения уведомлений о бэкапах как успешных так и ошибочных.

Переходим в раздел уведомлений proxmox и создаем новый Notification Matchers

Pasted image 20240620130303.png
Pasted image 20240620130257.png
Pasted image 20240620130252.png
Pasted image 20240620130246.png

Данные настройки будут отправлять на телеграмм и почту сообщение о событиях бэкапа в любое время. Для дополнительных ограничений по времени или других типов событий рекомендую ознакомится с документацией.

Пример уведомления о бэкапах в телеграмм, к сообщению дополнительно прикладывается лог. Телеграмм бот дополнительно прикладывает его в виде файла так как не всегда удобно читать логи в сообщении телеграмм.

Pasted image 20240620130239.png

И оно же на почте

Pasted image 20240620130231.png

Спасибо за внимание, удачной настройки и меньше тревожных уведомлений.