📨 Налаштування сповіщень з Proxmox у Telegram через Webhook
Мета: Отримувати повідомлення через Телеграм якщо стається якась подія в Proxmox VE або Proxmox Backup Server
Вступ
У цьому гайді покажемо, як налаштувати сповіщення з Proxmox у Telegram за допомогою вбудованої підтримки вебхуків — без скриптів і складного коду. Просто, швидко і надійно.
Крок 1. Створення Telegram-бота
Знаходимо BotFather у Telegram і надсилаємо команду
/newbot.Вказуємо ім’я для бота — будь-яке, наприклад
Proxmox Notifier.Задаємо
username, який має бути унікальним і закінчуватись на**Bot**, наприклад:**HomeServerProxmoxNotifierBot**.Отримуємо токен для роботи з API Telegram. Зберігайте його у безпечному місці.
Тимчасово вимикаємо режим приватності бота:
My Bots→Bot Settings→Group Privacy→Turn Off.Щоб отримати chat ID:
Відкрийте створеного бота, надішліть йому будь-яке повідомлення.
Потім відкрийте в браузері посилання:
https://api.telegram.org/bot<токен>/getUpdatesУ результаті ви отримаєте JSON-відповідь, де буде поле chat.id — це і є ваш Telegram ID.
Крок 2. Підготовка Webhook URL
Webhook — це механізм, який дозволяє сервісу автоматично надсилати дані іншому при певній події.
Telegram API-метод sendMessage вимагає два основні параметри:
**chat_id****text**
Для тесту, вставте посилання в браузер, підставивши ваші токен і chat_id:
https://api.telegram.org/bot<токен>/sendMessage?chat_id=<chat_id>&text=привітКрок 3. Додавання Webhook у Proxmox
Відкриваємо Datacenter > Notifications → Notification Targets → додаємо Webhook.
Вказуємо ім’я (наприклад,
Telegram-Webhook), обираємо метод POST.У полі URL вставляємо базове посилання Telegram API, а дані передаємо через поле Body.
У Headers додаємо:
Content-Type: application/jsonУ Body:
{
"text": "Title: {{title}}\nMessage: {{message}}"
}Натискаємо Test — якщо все вірно, повідомлення з’явиться у Telegram.
Далі відкриваємо Matchers (умови сповіщень), редагуємо стандартне правило та додаємо наш Webhook у вкладці Targets to Notify.
Крок 4. Тестування
Обираємо будь-яку VM.
Запускаємо резервне копіювання.
Зупиняємо його.
У журналі з’явиться повідомлення, і Telegram отримає нотифікацію.
Крок 5. Покращення
Зберігання ключів у полі секретів
У Webhook налаштуваннях додаємо Secrets:
apiKeychatId
Потім у URL використовуємо: **secrets.apiKey** та **secrets.chatId**
Покращене форматування
{
"text": "⚠️ PVE *{{severity}}* Notification ⚠️\n\n`Title:` {{title}}\n`Host:` {{fields.hostname}}\n`Type:` {{fields.type}}\n`Job ID:` {{fields.job-id}}",
"parse_mode": "Markdown"
}Окремі шаблони для різних типів повідомлень
Для помилок:
{
"text": "🛑 *CRITICAL ERROR!*\n\n`Title:` {{title}}\n`Host:` {{fields.hostname}}\n`Type:` {{fields.type}}\n`Job ID:` {{fields.job-id}}",
"parse_mode": "Markdown"
}Для попереджень:
{
"text": "⚠️ *WARNING!*\n\n`Title:` {{title}}\n`Host:` {{fields.hostname}}\n`Type:` {{fields.type}}\n`Job ID:` {{fields.job-id}}",
"parse_mode": "Markdown"
}Для інформаційних подій:
{
"text": "ℹ️ *INFO*\n\n`Title:` {{title}}\n`Host:` {{fields.hostname}}\n`Type:` {{fields.type}}\n`Job ID:` {{fields.job-id}}",
"parse_mode": "Markdown",
"disable_notification": true
}Умови сповіщення для кожного типу
Для кожного типу повідомлень (error, warning, info) створюємо окреме правило у Notification Matchers, вказуємо відповідну критичність у Match Rules, і потрібний Webhook у Targets to Notify.
Підсумок
Proxmox тепер надсилає сповіщення в Telegram, і робить це ефективно:
важливе виділено окремо,
інфо повідомлення не турбують даремно,
усі чутливі дані захищено.
Якщо вам відомі інші способи покращення — діліться своїм досвідом в коментарях.