ntfyv2.30.0
Приемник алертов и уведомлений: события из скриптов, мониторинга и бэкапов приходят пушем на телефон, подписка по темам, публикация одной командой - замена Pushover и Firebase.
Ntfy превращает сервер в личный приемник уведомлений: любая система, умеющая отправить HTTP-запрос, шлет сообщение в тему, и оно приходит пушем на телефон или в браузер. Тексты алертов остаются на вашем сервере, а не проходят через чужой сервис уведомлений; публикация - одной командой, без SDK и регистрации приложений. Приоритеты, теги, кнопки, вложения и отложенная доставка оформляют событие, а темы дают разным источникам свои каналы.
После создания сервера ntfy разворачивается сам: рецепт поднимает сервер и Caddy с автоматическим TLS, заводит администратора паролем сервера и закрывает сервер от посторонних, адрес формируется из IP. Вручную настраивать ничего не нужно; первый старт занимает около минуты.
Что внутри
- ntfy 2.30.0
- сервер уведомлений, REST API и веб-интерфейс в одном процессе (Go), слушает только
127.0.0.1:2586. - SQLite
- кеш сообщений и база пользователей в каталогах
/opt/ntfy/cacheи/opt/ntfy/lib. - Caddy
- reverse-proxy и авто-TLS (Let's Encrypt), наружу открыты только
80и443.
Безопасность
- Сервер закрыт по умолчаниюбез учетной записи ни читать, ни писать нельзя (
auth-default-access: deny-all); открытый сервер уведомлений за несколько дней находят посторонние и начинают слать через него спам. - Администратор заведен установкойвход паролем сервера, регистрация новых пользователей выключена.
- fail2ban на SSHбанит IP после серии неудачных попыток входа по SSH.
- HTTPS с автопродлениемLet's Encrypt на адрес сервера или ваш домен; сам ntfy наружу порт не открывает.
- Закрепленная версия образарецепт ставит конкретный тег
v2.30.0, а неlatest.
Как войти
Адрес формируется из IP сервера: замените точки на дефисы и добавьте
.fatmetal.net. Пример: IP45.15.159.10->https://45-15-159-10.fatmetal.net/.Сервер закрыт по умолчанию: администратор
adminзаведен установкой, пароль - тот же, что для входа по SSH (пароль сервера). Регистрация новых пользователей выключена.Публикация:
curl -u admin:<пароль> -H "Title: Тест" -H "Priority: 4" -d "привет" https://ВАШ-АДРЕС/server-alerts.Подписка: откройте адрес в браузере (веб-интерфейс) или добавьте тему в мобильном приложении ntfy (iOS/Android), войдите под
admin.Нужна тема без пароля для анонимных curl-скриптов - разрешите ее явно:
ntfy access everyone server-alerts read-write(полная команда - в файле кредов).
Важно
Имя темы - латиница, цифры, дефис и подчеркивание: кириллицу сервер не принимает (ответ 404). Тему придумываете сами, это часть адреса.
Получатель на iPhone получает уведомления с задержкой до нескольких часов: iOS не разрешает приложению держать постоянное соединение. Мгновенная доставка возможна только пересылкой через публичный ntfy.sh (upstream-base-url), это компромисс между приватностью и скоростью.
Данные лежат в SQLite в каталогах /opt/ntfy/cache и /opt/ntfy/lib - бэкапьте оба.
Свой домен
- Направьте
A-запись своего домена на IP этого сервера. - Убедитесь, что домен указывает на сервер:
ping ваш-доменпоказывает IP сервера. Пока не показывает - подождите: DNS обновляется от нескольких минут до часа. - В
/etc/ntfy-mp/params.envзадайтеDOMAIN=ваш-домени выполнитеbash /opt/ntfy/install.sh- Caddy перевыпустит сертификат под ваш домен. - Откройте
https://ваш-домени войдите как раньше:adminи пароль сервера не меняются.
Требования
Тариф CPU2-RAM4-DISK50: в простое весь стек держит около 24 МиБ, сам ntfy - около 12 МиБ, запас по памяти больше чем стократный. Упирается продукт не в память, а в диск: растут только кеш сообщений и вложения, у обоих настраиваемый срок хранения.