Apprise API¶
Apprise - это библиотека позволяющая унифицировать и мультиплексировать отправку уведомлений.
Схема работы проста - вы отправляете уведомление в Apprise, а оно разлетается в Telegram, Discord, ntfy.sh и так далее.
Apprise API - небольшое веб приложение, которое позволяет управлять конфигурациями схем уведомлений и отправлять через него или его API уведомления.
Установка и запуск через docker-compose¶
Я использую образ от linuxserver.io, подробнее про него можно почитать здесь.
- Заранее создаем папочку config, в котором будут храниться наши конфиги -
mkdir config
- Вводим
id <ваш пользователь>
. Запоминаем группу и id пользователя. Это нужно для правильной работы с файлами из контейнера. - Заполняем docker-compose.yml
docker-compose.yml
services:
apprise-api:
image: lscr.io/linuxserver/apprise-api:latest
container_name: apprise-api
environment:
- TZ=Europe/Moscow
- APPRISE_STATEFUL_MODE=simple # указываем, что мы хотим хранить конфиги на диске
- PUID=1000 # сюда указываем ID пользователя
- PGID=1000 # сюда указываем ID группы
volumes:
- ./config:/config
ports:
- 8010:8000 # 8010 - наш порт, по которому мы сможем получить доступ к приложению
restart: unless-stopped
- Запускаем:
docker compose up -d
Прячем за nginx и ограничиваем доступ¶
Не обязательный пункт, но лучше спрятать его за nginx и запретить менять/создавать конфиги кому попало. Мой конфиг выглядит как-то так:
/etc/nginx/conf.d/apprise.conf
upstream apprise {
server localhost:8010;
}
server {
server_name apprise.kiriha.ru;
listen 443 ssl http2;
include /etc/nginx/snippets/ssl.conf; # тут мой инклуд с ssl сертификатами
# Переопределяем robots.txt, в нём запрещаем индексирование
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
location @apprise {
proxy_set_header Host apprise.kiriha.ru; # сетим хедер, нужен для корректного отображения имени хоста в панели
add_header X-Robots-Tag "noindex, follow" always; # на всякий добавляем заголовок с запретом на индексирование
proxy_pass http://apprise;
}
location / {
allow 192.168.73.129; # Ваша подсеть/ip с которого необходим доступ в панель, если не нужен - убирайте
deny all; # если хотите оставить доступ для всех - убирайте
try_files $uri @apprise;
location ~ /notify/(.*)$ {
allow all; # доступ к отправке нотификаций разрешаем для всех, иначе прописываем руками подсети/адреса которым разрешено отправлять уведомления
try_files $uri @apprise;
}
}
}
Как с этим работать¶
Самая важная сущность здесь - это KEY.
Вот этот KEY вы должны НИКОМУ НЕ ПОКАЗЫВАТЬ, ибо через него мы как раз и отправляем уведомления, так как авторизации никакой нету (но если очень хочется, можно настроить basic-авторизацию).
Создание базовой конфигурации¶
Рассмотрю создание базовой конфигурации (она покрывает почти 90% кейсов), более сложные варианты с поддержкой тегов ищите в документации.
Заходим по адресу нашей панели нажимаем кнопку "New Configuration" и попадаем на страницу управления конфигурации.
Всё что дальше https://ВАШ_ИНСТАНС/cfg/
это и есть ваш KEY, запомните его.
Можно вставить своё значение и обновить страницу - так ключи будет проще запоминать.
Нажимаем "Configuration" и описываем куда мы будем посылать алерты.
Как настраивать для того или иного провайдера - читать здесь. Находим нужного нам провайдера, формируем URI и сохраняем.
Например, я хочу отправлять уведомления в Телеграм и Дискорд. Мой конфиг будет выглядеть вот так:
Сохраняем конфигурацию.
Отправка уведомления через cURL¶
После создания и сохранения конфигурации, мы можем отправить уведомление, сделаем это через curl:
Если всё настроили правильно - то вы сможете увидеть свои уведомления, а в терминале будет выведен лог отправки.