Files
pet-project-server/docs/adr/ADR-2026-04-04-apprise-notifications.md
av 21ccc7ac8c
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
Fix style in ADR
2026-05-24 15:56:53 +03:00

2.4 KiB

Apprise как шлюз уведомлений

  • Дата: 2026-04-04

Контекст

В первую очередь нужны были уведомления о бэкапах — знать, что ночной прогон отработал и не сломался. Уведомления слались напрямую в конкретный канал, привязка была зашита в каждом источнике. Хотелось единый слой, который абстрагирует каналы доставки — чтобы добавлять или менять канал в одном месте, а не править каждый источник.

Рассмотренные варианты

  • Прямая интеграция с каждым каналом (как было). Каждый источник знает про конкретный канал; смена канала — правки во многих местах.
  • Apprise (выбран). Смотрел разные self-hosted шлюзы уведомлений; apprise выиграл зрелостью и числом готовых интеграций (десятки каналов из коробки).

Решение

Подняли apprise отдельным сервисом-шлюзом: источники шлют уведомление по HTTP в apprise, а он разводит его по настроенным каналам (коммиты a0543e1, 5f619ea, 6bfb362). Под ограниченную память сервера apprise запущен в один воркер (5e6df11).

Последствия

  • + Каналы доставки абстрагированы за единым шлюзом — добавить или сменить канал можно в одном месте, не трогая источники.
  • + Доступ к десяткам интеграций apprise без отдельного кода под каждую.
  • - Ещё один сервис в обслуживании (контейнер, память).
  • Окупилось при переезде в Timeweb: провайдер заблокировал Telegram, и переключение уведомлений (сейчас почта, в планах Matrix) локализовано в шлюзе (ADR-2026-05-23).