Зміст

📨 Налаштування сповіщень з Proxmox у Telegram через Webhook

Мета: Отримувати повідомлення через Телеграм якщо стається якась подія в Proxmox VE або Proxmox Backup Server

Вступ

У цьому гайді покажемо, як налаштувати сповіщення з Proxmox у Telegram за допомогою вбудованої підтримки вебхуків — без скриптів і складного коду. Просто, швидко і надійно.

Крок 1. Створення Telegram-бота

  1. Знаходимо BotFather у Telegram і надсилаємо команду /newbot.

  2. Вказуємо ім’я для бота — будь-яке, наприклад Proxmox Notifier.

  3. Задаємо username, який має бути унікальним і закінчуватись на **Bot**, наприклад: **HomeServerProxmoxNotifierBot**.

  4. Отримуємо токен для роботи з API Telegram. Зберігайте його у безпечному місці.

  5. Тимчасово вимикаємо режим приватності бота: My BotsBot SettingsGroup PrivacyTurn Off.

  6. Щоб отримати 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

  1. Відкриваємо Datacenter > NotificationsNotification Targets → додаємо Webhook.

  2. Вказуємо ім’я (наприклад, Telegram-Webhook), обираємо метод POST.

  3. У полі URL вставляємо базове посилання Telegram API, а дані передаємо через поле Body.

У Headers додаємо:

Content-Type: application/json

У Body:

{
  "text": "Title: {{title}}\nMessage: {{message}}"
}

Натискаємо Test — якщо все вірно, повідомлення з’явиться у Telegram.

Далі відкриваємо Matchers (умови сповіщень), редагуємо стандартне правило та додаємо наш Webhook у вкладці Targets to Notify.


Крок 4. Тестування

  1. Обираємо будь-яку VM.

  2. Запускаємо резервне копіювання.

  3. Зупиняємо його.

У журналі з’явиться повідомлення, і Telegram отримає нотифікацію.


Крок 5. Покращення

Зберігання ключів у полі секретів

У Webhook налаштуваннях додаємо Secrets:

  • apiKey

  • chatId

Потім у 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, і робить це ефективно:

  • важливе виділено окремо,

  • інфо повідомлення не турбують даремно,

  • усі чутливі дані захищено.

Якщо вам відомі інші способи покращення — діліться своїм досвідом в коментарях.