# Apprise как шлюз нотификаций - Дата: 2026-04-04 ## Контекст В первую очередь нужны были нотификации о бэкапах — знать, что ночной прогон отработал и не сломался. Уведомления слались напрямую в конкретный канал, привязка была зашита в каждом источнике. Хотелось единый слой, который абстрагирует каналы доставки — чтобы добавлять или менять канал в одном месте, а не править каждый источник. ## Рассмотренные варианты - **Прямая интеграция per-канал** (как было). Каждый источник знает про конкретный канал; смена канала — правки во многих местах. - **Apprise** (выбран). Смотрел разные self-hosted шлюзы нотификаций; apprise выиграл зрелостью и числом готовых интеграций (десятки каналов из коробки). ## Решение Подняли apprise отдельным сервисом-шлюзом: источники шлют уведомление по HTTP в apprise, а он разводит его по настроенным каналам (коммиты `a0543e1`, `5f619ea`, `6bfb362`). Под ограниченную память сервера apprise запущен в один воркер (`5e6df11`). ## Последствия - `+` Каналы доставки абстрагированы за единым шлюзом — добавить или сменить канал можно в одном месте, не трогая источники. - `+` Доступ к десяткам интеграций apprise без отдельного кода под каждую. - `-` Ещё один сервис в обслуживании (контейнер, память). - Окупилось при переезде в Timeweb: провайдер заблокировал Telegram, и переключение нотификаций (сейчас почта, в планах Matrix) локализовано в шлюзе ([ADR-2026-05-23](ADR-2026-05-23-migrate-to-timeweb.md)).