Уведомления DumbMonit
Это руководство объясняет, как получать оповещения DumbMonit в выбранном вами сервисе. Навыков программирования не требуется: в каждом разделе сказано, где найти адрес или токен для копирования и что вводить в форму.
Содержание
Заголовок раздела «Содержание»- Как это работает
- Создание и проверка канала
- Настройки или секреты: в чём разница
- Самоподписанные сертификаты
- Пользовательский канал
- Поддерживаемые каналы
- Устранение неполадок
Как это работает
Заголовок раздела «Как это работает»Канал — это пункт назначения: канал Discord, номер телефона, почтовый ящик. Вы создаёте сколько угодно каналов, а ваши правила оповещений выбирают, какие из них уведомлять.
К каждому каналу применяются три принципа:
- Оповещения группируются. Одно сообщение на монитор и на цикл, даже если одновременно заполняются пять дисков. Без этого вы отключили бы уведомления через неделю.
- Неисправный канал никогда не блокирует другой. Сбой записывается в столбец «последняя ошибка» канала, а доставка в остальные продолжается.
- Сервис, который не отвечает, бросается через 15 секунд. Уведомление, пришедшее с опозданием на минуту, уже бесполезно, а цикл мониторинга не должен ждать недоступный сервер.
Создание и проверка канала
Заголовок раздела «Создание и проверка канала»- Откройте Settings → Notifications & reports → Add channel (
/settings/notifications). - Дайте ему осмысленное имя (“Discord — family”, “SMS — on-call”). Именно это имя вы позже выберете в правилах оповещений.
- Выберите тип канала, затем заполните описанные ниже поля.
- Сохраните, затем нажмите Send test.
Тестовое сообщение проходит ровно тем же путём, что и настоящее оповещение: тот же запрос, тот же токен, то же форматирование. Если оно пришло, канал работает. Если нет, сообщение об ошибке называет настройку, которую нужно исправить.
Токен больше никогда не показывается. После сохранения он шифруется в базе данных, а интерфейс пишет только «configured». Чтобы изменить канал, не вводя токен заново, просто оставьте поле пустым.
Настройки или секреты: в чём разница
Заголовок раздела «Настройки или секреты: в чём разница»У каждого канала есть две группы полей.
| Настройки | Секреты | |
|---|---|---|
| Содержимое | адрес сервера, имя канала, тема | токены, пароли, URL вебхуков |
| Хранение | открытым текстом | зашифровано |
| Читается обратно интерфейсом | да | никогда |
Интерфейс отказывается сохранять чувствительное поле среди настроек и сообщает вам об этом. Это не формальность: настройки возвращаются API как есть, поэтому хранящийся там токен публиковался бы при каждом открытии страницы.
Таблицы в разделе Поддерживаемые каналы указывают для каждого канала, что куда помещается.
Самоподписанные сертификаты
Заголовок раздела «Самоподписанные сертификаты»По умолчанию DumbMonit отвергает любой сервер, сертификат которого не удаётся
проверить. Для самостоятельно размещённого сервиса с самоподписанным
сертификатом или сертификатом частного удостоверяющего центра у каналов Matrix,
Mattermost, Rocket.Chat, Zulip, ntfy, Gotify, Bark, Apprise, Home Assistant,
Signal и пользовательского вебхука есть настройка Accept an unverifiable
certificate (insecure_tls, булево значение, по умолчанию выключено).
Её включение сохраняет шифрование соединения, но прекращает проверку подлинности сервера, поэтому используйте её только для сервера, который вы контролируете, в сети, которой вы доверяете. Когда причиной сбоя является сертификат, показываемая для канала ошибка называет его (например “invalid peer certificate: UnknownIssuer”).
Пользовательский канал
Заголовок раздела «Пользовательский канал»Канал webhook — это запасной выход DumbMonit. Вы описываете весь
HTTP-запрос — метод, адрес, заголовки, тип содержимого и тело —, что позволяет
подключить почти любой сервис, включая внутренний API, о котором DumbMonit
никогда не узнает.
Без какой-либо особой настройки он уже отправляет структурированную JSON-нагрузку, которую может использовать скрипт:
{ "source": "dumbmonit", "target": "nas", "rule": "Disk full", "severity": "warning", "status": "firing", "title": "nas — Disk full", "text": "⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %)", "value": 95.0, "threshold": 90.0, "unit": "%", "fingerprint": "nas/disk-full", "count": 1, "at": "2026-09-01T14:12:05+00:00", "link": ""}Настройки пользовательского канала
Заголовок раздела «Настройки пользовательского канала»| Настройка | Обязательна | По умолчанию | Назначение |
|---|---|---|---|
url | да (здесь или как секрет) | — | Адрес для вызова. Может содержать переменные. |
method | нет | POST | POST, PUT или GET. |
content_type | нет | json | json, form или text. Также определяет, как экранируются переменные. |
body_template | нет | — | Шаблон тела. При отсутствии отправляется описанная выше нагрузка. |
base_url | нет | — | Публичный адрес вашего DumbMonit, чтобы {{link}} давал кликабельную ссылку. |
username | нет | — | Имя пользователя для HTTP-аутентификации “Basic”. Требует секрета password. |
| Секрет | Назначение |
|---|---|
url | Используйте вместо настройки url, если адрес уже содержит токен. |
token | Отправляется как заголовок Authorization: Bearer …, если только ваш шаблон не использует {{token}}. |
password | Пароль для аутентификации “Basic”. |
headers | Дополнительные заголовки в виде JSON-объекта {"X-Api-Key": "value"}. Хранятся зашифрованными, как токен, и никогда не показываются снова, поэтому ключи API и заголовки Authorization относятся сюда. |
headers — это секрет. У каналов, сохранённых версией 0.1.0-alpha.6 или более
ранней, которые хранили их в настройках, они переносятся в зашифрованные секреты
при первом запуске, и API их больше не возвращает. Как и все секреты, они
сохраняются, когда вы редактируете канал, не вводя их повторно; отправка
secrets заменяет весь набор целиком.
DumbMonit следует за перенаправлением только на тот же хост (или с http на
https на этом же хосте): заголовки и токен канала никогда не уходят никуда,
кроме введённого вами адреса.
Доступные переменные
Заголовок раздела «Доступные переменные»Переменная записывается между двойными фигурными скобками: {{title}}.
Пробелы вокруг имени допускаются ({{ title }}). Одинарные фигурные скобки в
теле JSON остаются буквальными, так что JSON можно писать как обычно.
| Переменная | Что содержит | Пример |
|---|---|---|
{{title}} | Полный заголовок сообщения | nas — Disk full |
{{message}} | Тело обычным текстом, одна строка на оповещение | ⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %) |
{{message_markdown}} | То же тело в Markdown | **nas — Disk full**\n• ⚠️ … |
{{rule}} | Имя правила оповещения | Disk full |
{{target}} | Имя отслеживаемого монитора | nas |
{{target_id}} | Числовой идентификатор монитора | 42 |
{{severity}} | Техническая важность | info, warning или critical |
{{severity_fr}} | Важность в виде читаемого слова | information, avertissement, critique |
{{status}} | Технический статус | firing или resolved |
{{status_fr}} | Статус в виде читаемого слова | en cours или résolu |
{{value}} | Измеренное значение с единицей | 95 % |
{{value_raw}} | Голое значение, пригодное как число JSON | 95 |
{{threshold}} | Пересечённый порог с единицей | 90 % |
{{threshold_raw}} | Голый порог, пригодный как число JSON | 90 |
{{unit}} | Единица значения | % |
{{operator}} | Сравнение с порогом | > |
{{count}} | Число оповещений, сгруппированных в этом сообщении | 3 |
{{fingerprint}} | Стабильный идентификатор оповещения | nas/disk-full |
{{timestamp}} | Метка времени ISO 8601 | 2026-09-01T14:12:05+00:00 |
{{timestamp_unix}} | Метка времени в секундах с 1970 года | 1788358325 |
{{date}} | Читаемая метка времени в UTC | 2026-09-01 14:12 UTC |
{{priority}} | Приоритет от 1 (низкий) до 5 (высокий) | 4 |
{{color}} | Акцентный цвет без решётки | D98A00 |
{{color_hex}} | Акцентный цвет с решёткой | #D98A00 |
{{emoji}} | Пиктограмма статуса | 🔴, ⚠️, ℹ️ или ✅ |
{{link}} | Ссылка на монитор в DumbMonit | https://dumbmonit.home/targets/42 |
{{source}} | Всегда dumbmonit | dumbmonit |
{{token}} | Секрет token канала | (ваш токен) |
Два полезных замечания:
- Некоторые переменные могут быть пустыми. У оповещения о доступности
(“host unreachable”) нет ни значения, ни порога:
{{value}}и{{value_raw}}тогда превращаются в пустую строку, а не вnullилиNaN. Если вы размещаете их как число JSON, учтите этот случай — или используйте"{{value}}"в кавычках. {{link}}остаётся пустым, пока вы не заполнитеbase_url. Неверная ссылка отняла бы больше времени, чем оповещение без неё.
Вам никогда не нужно ничего экранировать самостоятельно. В зависимости от
выбранного content_type DumbMonit автоматически защищает подставляемые
значения: кавычки и переводы строк экранируются в JSON, процентное кодирование в
форме, без преобразований в обычном тексте. Правило с именем "System" disk full
не сломает ваш шаблон JSON.
Пример 1 — внутренний JSON API
Заголовок раздела «Пример 1 — внутренний JSON API»Самописное приложение предоставляет POST /incidents и ожидает токен в
пользовательском заголовке.
Настройки
{ "url": "https://api.internal.example.org/incidents", "method": "POST", "content_type": "json", "base_url": "https://dumbmonit.home", "body_template": "{\"title\": \"{{title}}\", \"device\": \"{{target}}\", \"severity\": \"{{severity}}\", \"state\": \"{{status}}\", \"value\": {{value_raw}}, \"threshold\": {{threshold_raw}}, \"detail\": \"{{message}}\", \"link\": \"{{link}}\", \"seen_at\": \"{{timestamp}}\"}"}Секреты
{ "token": "your-application-token", "headers": "{\"X-Application\": \"dumbmonit\"}"}Токен отправляется автоматически как заголовок Authorization: Bearer …. Вот
что получает приложение:
{ "title": "nas — Disk full", "device": "nas", "severity": "warning", "state": "firing", "value": 95, "threshold": 90, "detail": "⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %)", "link": "https://dumbmonit.home/targets/42", "seen_at": "2026-09-01T14:12:05+00:00"}Пример 2 — сервис, ожидающий форму
Заголовок раздела «Пример 2 — сервис, ожидающий форму»Многие SMS-шлюзы и старые API ожидают application/x-www-form-urlencoded, а не
JSON, с токеном в теле.
Настройки
{ "url": "https://gateway.example.org/api/send", "method": "POST", "content_type": "form", "body_template": "key={{token}}&recipient=0612345678&subject={{title}}&text={{emoji}} {{message}}&priority={{priority}}"}Секреты
{ "token": "gateway-key" }Поскольку шаблон уже использует {{token}}, DumbMonit не добавляет
заголовок Authorization: некоторые сервисы отклоняют запрос с двумя видами
аутентификации. Значения кодируются автоматически: пробелы становятся +, а
символы с диакритикой — своими эквивалентами в процентном кодировании.
Пример 3 — SMS обычным текстом через оператора
Заголовок раздела «Пример 3 — SMS обычным текстом через оператора»Некоторым сервисам, например SMS API оператора или самодельной автоматизации, нужна одна строка текста.
Настройки
{ "url": "https://automation.home/alert", "method": "POST", "content_type": "text", "body_template": "{{emoji}} {{severity}} on {{target}}: {{rule}} ({{value}}, threshold {{operator}} {{threshold}}) — {{date}}"}Отправляемое сообщение, без какого-либо экранирования:
⚠️ warning on nas: Disk full (95 %, threshold > 90 %) — 01/09/2026 14:12 UTCПример 4 — GET-запрос без тела
Заголовок раздела «Пример 4 — GET-запрос без тела»Когда сервис принимает только параметры URL, поместите переменные в url и
выберите метод GET. У запроса GET нет тела: body_template тогда
отклоняется, чтобы никто не думал, что он что-то делает.
Настройки
{ "url": "https://sms.example.org/send?user=noe&text={{title}} — {{value}}", "method": "GET"}Секреты
{ "token": "api-key" }Кодируются только подставленные значения; остальная часть адреса копируется как есть. Фактически отправленный запрос выглядит так:
GET https://sms.example.org/send?user=noe&text=nas%20%E2%80%94%20Disk%20full%20%E2%80%94%2095%20%25Типичные ошибки шаблонов
Заголовок раздела «Типичные ошибки шаблонов»Неисправный шаблон отклоняется при сохранении, пока вы смотрите на форму, а не в ночь, когда случится инцидент.
| Что вы пишете | Что происходит |
|---|---|
{{severite}} | Отклоняется: неизвестная переменная “severite”, затем список допустимых имён. Правильное имя — severity. |
{"t": "{{title"} | Отклоняется: “unclosed braces”. Не хватает }}. |
{{}} или {{ }} | Отклоняется: переменная без имени ничего не значит. |
{"a": {"b": 1}} | Принимается. Одинарные фигурные скобки буквальны: пишите JSON как обычно. |
{{token}} без секрета token | Отклоняется: шаблон запрашивает токен, которого у канала нет. |
method: GET с body_template | Отклоняется, с альтернативой: поместите переменные в url. |
method: DELETE | Отклоняется: принимаются только POST, PUT и GET. |
Поддерживаемые каналы
Заголовок раздела «Поддерживаемые каналы»Discord
Заголовок раздела «Discord»В Discord: Channel settings → Integrations → Webhooks → New webhook, затем Copy webhook URL. Этот URL содержит токен: он идёт в секреты.
- Секреты —
webhook_url
На https://api.slack.com/apps создайте приложение, включите Incoming
Webhooks, затем Add New Webhook to Workspace и выберите канал. Скопируйте
URL вида https://hooks.slack.com/services/….
- Секреты —
webhook_url
Telegram
Заголовок раздела «Telegram»Вам нужны две вещи: токен бота (секрет) и ID чата (chat_id), куда он
должен писать. Первый получается за минуту; второй зависит от того, где вы
хотите получать оповещения.
1. Создайте бота и получите его токен
Заголовок раздела «1. Создайте бота и получите его токен»-
В Telegram найдите @BotFather и нажмите Start.
-
Отправьте
/newbot, затем ответьте на вопросы (имя, затем имя пользователя, которое должно заканчиваться наbot). -
BotFather завершает сообщением вроде этого:
Done! Congratulations on your new bot. You will find it at t.me/my_homelab_bot.Use this token to access the HTTP API:63xxxxxx71:AAFoxxxxn0hwA-2TVSxxxNf4cСтрока
63xxxxxx71:AAFoxxxxn0hwA-2TVSxxxNf4c— это токен бота. Не делитесь им: он даёт полный контроль над ботом.
В примерах ниже замените <TOKEN> этим токеном. Обратите внимание на префикс
bot, приклеенный перед ним в URL: https://api.telegram.org/bot<TOKEN>/….
2. Найдите chat_id
Заголовок раздела «2. Найдите chat_id»Личный чат (бот пишет напрямую вам)
-
Откройте своего бота (
t.me/my_homelab_bot) и нажмите Start либо отправьте ему любое сообщение. Без этого он никогда не сможет вам написать. -
Откройте в браузере:
https://api.telegram.org/bot<TOKEN>/getUpdates -
Вы получите документ JSON; найдите
"chat":{"ok":true,"result":[{"update_id":83xxxxx35,"message":{"message_id":2643,"from":{…},"chat":{"id":21xxxxx38,"first_name":"…","type":"private"},"date":1703062972,"text":"/start"}}]}chat_id— это значениеchat.id: здесь21xxxxx38(положительное число).Если
resultпуст ("result":[]), отправьте боту ещё одно сообщение и перезагрузите страницу.
Канал
-
Добавьте бота администратором канала (Manage channel → Administrators → Add).
-
Опубликуйте сообщение в канале.
-
Откройте
https://api.telegram.org/bot<TOKEN>/getUpdates: ответ содержит блокchannel_postс"chat":{"id":-1001xxxxxx062,"type":"channel"}.chat_id— это отрицательное число, включая-100:-1001xxxxxx062.
Группа
Проще всего это сделать через настольное приложение:
- Добавьте бота в группу.
- Отправьте сообщение в группу, щёлкните по нему правой кнопкой → Copy message
link. Вы получите
https://t.me/c/194xxxx987/13(илиhttps://t.me/c/194xxxx987/11/13, если в группе есть темы). - Число сразу после
/c/— внутренний идентификатор группы:194xxxx987.chat_idдля ввода — это число с префиксом-100:-100194xxxx987.
Без настольного приложения подойдёт и описанный выше метод getUpdates:
message.chat.id — сразу нужное число (уже отрицательное). Если бот не видит
сообщений группы, попросите у BotFather /setprivacy → Disable, затем удалите
бота из группы и добавьте снова.
Тема группы (группы в режиме «Topics»)
chat_id — это идентификатор группы. Дополнительно заполните Group topic
(message_thread_id) средним числом скопированной ссылки: в
https://t.me/c/194xxxx987/11/13 тема — 11. Без этой настройки сообщение
попадает в ветку General.
3. Проверьте перед сохранением
Заголовок раздела «3. Проверьте перед сохранением»Откройте в браузере:
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=test123(добавьте &message_thread_id=11 для темы). Если test123 пришло, токен и
chat_id верны: введите их в DumbMonit и нажмите Test.
- Настройки —
chat_id(обязательно),message_thread_id(тема, необязательно),api_base(по умолчаниюhttps://api.telegram.org, меняйте только для работы через релей) - Секреты —
bot_token
“Telegram cannot find this chat” — для личного чата бот никогда не получал от вас сообщений: отправьте ему
/start. Для группы или канала, вероятно, отсутствует префикс-100либо бот не был в них добавлен.“thread not found” —
message_thread_idне соответствует ни одной теме группы, либо группа не в режиме «Topics».
Microsoft Teams
Заголовок раздела «Microsoft Teams»Внимание: метод изменился. Старые «коннекторы Office 365» были выведены из
эксплуатации в мае 2026 года; URL вида outlook.office.com/webhook/… больше не
работает.
Актуальная процедура:
- В канале Teams выберите ⋯ → Workflows.
- Выберите шаблон “Post to a channel when a webhook request is received”.
- Подтвердите шаги, затем скопируйте HTTPS POST URL, показанный в конце.
- Секреты —
webhook_url
DumbMonit отправляет завёрнутую Adaptive Card — единственный формат, который эти потоки отображают правильно. Если вы получаете ошибку, упоминающую Power Automate, URL, вероятно, взят из старого коннектора.
- Создайте на своём homeserver учётную запись, выделенную для DumbMonit, и пригласите её в комнату. Учётная запись, не являющаяся участником, не может писать.
- Получите её токен доступа. В Element: Settings → Help & About → Advanced → Access token.
- Получите внутренний идентификатор комнаты — не её отображаемое имя. В
Element: Room settings → Advanced → Internal room ID. Он начинается с
!(например!aBcDeF:matrix.org).
- Настройки —
server_url(напримерhttps://matrix.org),room_id - Секреты —
token
Mattermost
Заголовок раздела «Mattermost»Integrations → Incoming Webhooks → Add. Выберите канал по умолчанию, затем скопируйте URL.
- Настройки —
channel(необязательно, чтобы писать не в канал по умолчанию),username(необязательно, по умолчаниюDumbMonit) - Секреты —
webhook_url
Rocket.Chat
Заголовок раздела «Rocket.Chat»Administration → Integrations → New integration → Incoming webhook. Выберите комнату, включите интеграцию, затем скопируйте Webhook URL.
- Настройки —
channel(необязательно),alias(необязательно, по умолчаниюDumbMonit) - Секреты —
webhook_url
Google Chat
Заголовок раздела «Google Chat»В пространстве Google Chat: название пространства → Apps & integrations → Webhooks → Add webhook. Скопируйте URL, который уже содержит ключ и токен.
- Секреты —
webhook_url
- Создайте бота: Personal settings → Bots → Add a new bot, тип “Generic”. Запишите его адрес электронной почты и ключ API.
- Подпишите бота на целевой stream, иначе отправка будет отклонена.
- Настройки —
server_url(напримерhttps://your-org.zulipchat.com),email(адрес бота),stream(имя stream),topic(необязательно, по умолчаниюDumbMonit) - Секреты —
api_key
Самый простой канал из всех: выберите трудноугадываемое имя темы, затем подпишитесь на неё из приложения ntfy.
- Настройки —
topic,server_url(необязательно, по умолчаниюhttps://ntfy.sh) - Секреты —
token(только если ваш сервер требует аутентификации)
На публичном экземпляре любой, кто знает имя темы, может её читать. Выберите длинное случайное имя или разверните собственный сервер.
В интерфейсе Gotify: Apps → Create Application. Скопируйте показанный токен.
- Настройки —
server_url(напримерhttps://gotify.home) - Секреты —
token
Pushover
Заголовок раздела «Pushover»- На https://pushover.net ваш User Key показан прямо на главной странице.
- Затем создайте приложение: Create an Application/API Token. Вы получите токен приложения.
- Настройки —
priority(необязательно, от -2 до 2),sound(необязательно),retryиexpire(только дляpriority: 2) - Секреты —
token(токен приложения),user_key(ключ пользователя)
Без настройки priority DumbMonit выбирает по важности: -1 для
предупреждения уровня advisory или для разрешения, 0 для warning, 1 для
критического оповещения. Поэтому advisory не заставляет телефон звонить.
Приоритет
2(«emergency») повторяет уведомление, пока оно не будет подтверждено. DumbMonit тогда автоматически добавляетretryиexpire, без которых Pushover отклонил бы сообщение.
Pushbullet
Заголовок раздела «Pushbullet»На https://www.pushbullet.com/#settings/account нажмите Create Access Token.
- Настройки —
device_iden(необязательно; без него уведомляются все ваши устройства) - Секреты —
token
Bark (iOS)
Заголовок раздела «Bark (iOS)»Откройте приложение Bark на iPhone: оно показывает URL, содержащий ваш ключ устройства — длинную строку символов после доменного имени.
- Настройки —
server_url(необязательно, по умолчаниюhttps://api.day.app),group(необязательно),level(необязательно),sound(необязательно) - Секреты —
token(ключ устройства)
Без настройки level DumbMonit выбирает: passive для advisory, active для
warning, timeSensitive для критического оповещения. Уровень critical,
пробивающий «Не беспокоить», никогда не выбирается автоматически — задайте его
явно, если он вам нужен.
Web Push
Заголовок раздела «Web Push»Нативные уведомления на ваших телефонах и компьютерах прямо от вашего собственного DumbMonit, без установки приложений и сторонних учётных записей: браузер (установленный как приложение или нет) получает оповещения даже при закрытых вкладках.
- На каждом телефоне или компьютере откройте DumbMonit и перейдите в Settings → Push notifications → Enable on this device, затем Send a test. На iPhone и iPad сначала добавьте DumbMonit на экран «Домой». Пошаговое руководство находится в Push-уведомления (PWA).
- Создайте здесь канал Web Push. У него нет секрета: его получатели — устройства, подписанные на шаге 1.
- Настройки —
users(необязательно; одна учётная запись на строку, пусто: каждое подписанное устройство каждой учётной записи),urgency(по умолчаниюhigh,normalилиlow),ttl(секунды, в течение которых push-сервис хранит сообщение для выключенного устройства, по умолчанию86400),contact(необязательный адресmailto:илиhttps:, передаваемый push-сервисам; пусто:DUMBMONIT_PUBLIC_URL, если он HTTPS, иначе страница проекта) - Секреты — нет. Пара ключей VAPID сервера создаётся при первом запуске и хранится в зашифрованном виде; закрытый ключ никогда не покидает сервер.
Заголовок уведомления — это важность и монитор (Critical · nas01), тело —
краткое резюме; нажатие открывает страницу Alerts. DumbMonit нужен исходящий
HTTPS к push-сервисам (fcm.googleapis.com, *.notify.windows.com,
updates.push.services.mozilla.com, *.push.apple.com); сообщения шифруются
сквозным образом, эти сервисы не могут их прочитать. Подписка, о которой
push-сервис сообщает как об исчезнувшей (HTTP 404 или 410, например после
удаления приложения), удаляется автоматически.
Apprise
Заголовок раздела «Apprise»Apprise — это шлюз: с единственной конфигурацией он даёт доступ к десяткам
сервисов, которые DumbMonit не реализует сам. Разверните контейнер
caronc/apprise, затем выберите один из двух режимов.
Рекомендуемый режим — конфигурация хранится в Apprise. Создайте конфигурацию в интерфейсе Apprise, запишите её ключ и больше ничего здесь не указывайте.
- Настройки —
server_url,config_key
Прямой режим — адреса назначения предоставляет DumbMonit. URL Apprise часто
содержат пароль (mailto://user:password@…): поэтому они идут в секреты.
- Настройки —
server_url - Секреты —
urls(один или несколько URL Apprise через запятую)
Необязательные общие настройки: tag (чтобы направлять только часть адресов
назначения конфигурации) и format (по умолчанию text, либо markdown).
Если тест отвечает “Apprise has no configuration under this config_key”, ключ ничему не соответствует. DumbMonit сообщает об этом вместо того, чтобы делать вид, что сообщение отправлено.
Home Assistant
Заголовок раздела «Home Assistant»- В Home Assistant: ваш профиль → Security → Long-lived access tokens → Create token. Скопируйте его, он больше не будет показан.
- Выберите вызываемый сервис. По умолчанию DumbMonit создаёт постоянное уведомление на панели.
- Настройки —
server_url(напримерhttp://homeassistant.local:8123),service(необязательно, по умолчаниюpersistent_notification.create),target(необязательно),data(необязательно, объект, объединяемый с вызовом) - Секреты —
token
Несколько полезных сервисов:
service | Эффект |
|---|---|
persistent_notification.create | Баннер в интерфейсе Home Assistant |
notify.notify | Все настроенные цели уведомлений |
notify.mobile_app_<device> | Мобильное приложение одного конкретного устройства |
light.turn_on | Включает свет — используйте data для сущности и цвета |
Настройка data объединяется последней: поэтому она может переопределить
заголовок или сообщение, подготовленные DumbMonit.
Email (SMTP)
Заголовок раздела «Email (SMTP)»Единственный канал, не зависящий ни от какого стороннего сервиса.
- Настройки —
host,from,to(список адресов),security(по умолчаниюstarttls, либоtls, либоnone),port(выводится изsecurity: 587, 465 или 25),username(необязательно) - Секреты —
password
С Gmail пароль учётной записи не работает: создайте пароль приложения в настройках безопасности вашей учётной записи Google.
Работает через экземпляр
signal-cli-rest-api,
который вы размещаете сами и в котором сначала регистрируете свой номер.
- Настройки —
server_url(напримерhttp://signal.home:8080),number(зарегистрированный номер отправителя),recipients(список номеров или идентификаторов групп),username(необязательно) - Секреты —
password(необязательно, если ваш экземпляр защищён)
Все номера записываются в международном формате, +33612345678.
SMS via Twilio
Заголовок раздела «SMS via Twilio»В консоли Twilio на главной странице показаны ваш Account SID и ваш Auth Token. Затем купите номер, способный отправлять SMS.
- Настройки —
account_sid,from(ваш номер Twilio) илиmessaging_service_sid,to(список получателей) - Секреты —
token(Auth Token)
Тело SMS обрезается до 300 символов: сверх этого Twilio делит его на сегменты, оплачиваемые отдельно.
На пробной учётной записи Twilio отправляет только на проверенные вами номера.
PagerDuty
Заголовок раздела «PagerDuty»В PagerDuty: Services → ваш сервис → Integrations → Add integration и выберите Events API v2. Скопируйте Integration Key.
- Настройки —
region(eu, если ваша учётная запись размещена в Европе),source(необязательно, по умолчаниюdumbmonit) - Секреты —
token(Integration Key)
Оповещение открывает инцидент; его разрешение закрывает его автоматически.
Сопоставление выполняется по fingerprint оповещения с префиксом dumbmonit-,
поэтому напоминание никогда не открывает второй инцидент.
Ключ другого типа (“Events API v1”, “REST API”) получает краткий отказ. Проверьте, что интеграция действительно типа Events API v2.
Opsgenie
Заголовок раздела «Opsgenie»Teams → ваша команда → Integrations → Add integration → API. Скопируйте ключ API.
- Настройки —
region(euдля европейской учётной записи),responders(список названий команд, необязательно),tags(список, необязательно) - Секреты —
api_key
Как и в PagerDuty, разрешение закрывает оповещение, определяемое по его alias.
Atlassian назначила окончание поддержки Opsgenie на 5 апреля 2027 года. Этот канал остаётся для существующих установок; для новой предпочтите PagerDuty или пользовательский канал, указывающий на Jira Service Management.
Custom webhook
Заголовок раздела «Custom webhook»См. Пользовательский канал выше.
Устранение неполадок
Заголовок раздела «Устранение неполадок»Тест сразу завершается ошибкой с “missing setting …”. Обязательное поле пусто. Сообщение называет точную настройку.
Тест завершается ошибкой с “no answer within 15 s”. Целевой сервер недоступен из DumbMonit. Если это сервис в вашей локальной сети, проверьте, что контейнер DumbMonit может до него дотянуться — это часто проблема сети Docker, а не конфигурации канала.
Тест завершается ошибкой сертификата. Ваш сервер использует самоподписанный сертификат или сертификат частного удостоверяющего центра. См. Самоподписанные сертификаты.
Тест проходит успешно, но я ничего не получаю. Сервис принял сообщение и отправил его в другое место: не тот канал, не та тема ntfy, не то устройство Pushbullet. Проверьте настройку назначения.
Сообщение об ошибке содержит ***.
Так задумано: ваш токен был удалён из сообщения до его записи. Ни один секрет
никогда не попадает в журналы, в столбец «последняя ошибка» или в ответ API.
Где посмотреть последнюю ошибку канала? В списке каналов: каждая строка показывает дату последней успешной доставки и, если есть, ошибку последнего сбоя.