С недавнего времени в Proxmox появилась такая замечательная функция как webhook. Если вкратце, то это мгновенная передача данных между разными сервисами. Благодаря ему, мы сможем с лёгкостью поменять уведомления в Proxmox с электронной почты на Telegram бота. Это не только модно, стильно, молодёжно, но и крайне оперативно. В настройке есть небольшие подводные камни, но их я обязательно затрону. Поехали!
Создаём нового Telegram бота
Для начала обратись к отцу всея ботов, чтобы создать нового. Но только делай это с уважением, если понимаешь о чём я. Выбери в меню /newbot и придумай боту любое понравившееся тебе имя. После необходимо задать для него имя пользователя, оно обязательно должно заканчиваться на «bot».

Поздравляю! Твой личный бот создан. Отец предоставит тебе ссылку на него и токен для доступа. Обязательно сохрани токен, он нам ещё понадобится. Но если ты его забудешь или потеряешь, то всегда можешь вновь обратиться к отцу ботов. В меню можно посмотреть список своих ботов, токены для доступа, отредактировать их или удалить.
Теперь переходи по ссылке на бота и нажми кнопку «Старт». В итоге твой бот активирован и готов отправлять тебе сообщения.
Настраиваем уведомления в Proxmox
Настройка уведомлений Telegram в Proxmox достаточно простая. Всё что тебе понадобится — это токен бота и твой ID в Telegram.
Поскольку токен у нас есть, давай теперь узнаем твой Chat_ID. Сделать это можно у очередного бота по имени Get My ID. После нажатия кнопки «Старт» он тебе любезно его сообщит.
Собрав всю необходимую информацию, мы наконец-то готовы настроить Telegram уведомления в Proxmox!
В панели управления Proxmox заходи в «Центр обработки данных», раздел «Notifications». Затем нажми кнопку «Добавить» и выбери «Webhook» из выпадающего списка.

Итак, нам осталось совсем немного. В открывшемся окне задай «Endpoint name» — это имя нашего хука. Метод отправки оставь POST по умолчанию, и введи URL API Telegram для отправки сообщений.
https://api.telegram.org/bot{{ secrets.token }}/sendMessage
В следующем разделе добавь заголовок с ключом Content-Type и значением application/json.
Затем добавь код тела письма. Текст письма настраивается достаточно гибко. Можем добавить иконки и свой текст. Символами \n отметим, где будет перенос строк. Опцией parse_mode обозначим, что уведомление является HTML, а значит, мы спокойно можно использовать теги для форматирования текста. Переменная title передаст заголовок уведомления, а message — сам текст уведомления. На всякий случай экранируем специальные символы опцией escape, чтобы уведомление выглядело и дошло корректно.
{
"chat_id": "{{ secrets.chat_id }}",
"text": "⚙️ Proxmox Notification ⚙️\n\n <b>{{ escape title }}</b>\n {{ escape message }}",
"parse_mode": "HTML"
}
В разделе «Secrets» останется лишь добавить ключ token со значением токена нашего бота, и ключ chat_id со значением твоего ID, полученного у бота Get My ID.
Советую ещё раз пробежаться по настройкам перед сохранением и всё проверить.

После добавления хука можешь нажать кнопку «Проверка», и, если все настроено корректно, тебе придёт долгожданное тестовое сообщение от бота.

Но это ещё не вся настройка. Ниже в разделе «Notification Matchers» нажми кнопку «Modify» и выбери свой Telegram webhook в качестве цели для уведомлений по умолчанию.

На этом настройка Proxmox завершена и теперь уведомления будут моментально прилетать в твой Telegram. Но, к сожалению, не все. О подводных камнях я расскажу далее.
Подводные камни и ошибка 400
В первую очередь мы хотим получать уведомления о резервном копирование наших хостов в гипервизоре Proxmox. Они включают в себя не только результат резервного копирования, но и полные логи данной задачи. А если хостов несколько, то логи в уведомлении занимают неприличное количество места.
В мессенджере Telegram есть ограничение в 4096 символов при отправке сообщений ботом. Поэтому ты наверняка столкнёшься с ошибкой 400 при отправке уведомления о резервном копировании из-за чрезмерных логов.
ERROR: could not notify via target `Telegram`: https://api.telegram.org/bot<masked>/sendMessage: status code 400
Логи мы всегда можем посмотреть в самом интерфейсе Proxmox, поэтому в уведомлении они нам не нужны. Чтобы исправить данную ошибку, давай отредактируем шаблон текстовых уведомлений о резервном копировании.
Подключись к серверу Proxmox по SSH. Для начала сделай резервную копию нашего шаблона. Ведь резервные копии наше всё!
cp /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs.bak
Открой шаблон стандартным текстовым редактором.
nano /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs
Содержимое нашего шаблона имеет следующий вид.
{{error}}
Details
=======
{{table guest-table}}
Total running time: {{duration total-time}}
Total size: {{human-bytes total-size}}
Logs
====
{{logs}}
Не трудно догадаться, что нам необходимо удалить последние три строчки с заголовком и выводом логов. Приведи шаблон к нужному виду.
{{error}}
Details
=======
{{table guest-table}}
Total running time: {{duration total-time}}
Total size: {{human-bytes total-size}}
Сохрани результат с чувством выполненного долга сочетанием клавиш Ctrl+O и нажми Enter. Выйди из текстового редактора на Ctrl+X.
Есть вероятность, что с очередным обновлением Proxmox наш шаблон может быть перезаписан. Поэтому сделай ещё одну резервную копию уже отредактированного шаблона на всякий случай.
cp /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs.tg
В итоге все этапы настройки завершены. Запусти резервное копирование своих хостов на Proxmox и ожидай заветного уведомления в Telegram о своём успехе.
А на этом у меня всё на сегодня, и удачи в этом интересном мире технологий!
Hej, jeg ønskede at kende din pris.