Разместить ntfy, ничего не устанавливая
Одна строка curl в скрипте — и телефон звонит: без учётной записи у издателя, без установки библиотеки, без запроса ключа API.
От 2,99 €/месяц
Обзор
ntfy — установка, обновления и резервные копии на нас, на машине во Франции. Отправляйте себе уведомления на телефон из любого скрипта простым HTTP-запросом. Приложения для Android и iOS, без учётной записи и стороннего сервиса. Вы ничего не устанавливаете и не настраиваете сервер: приложение появляется в сети через несколько минут после заказа и оформлено на вас.
Ему подходит тариф «Приложение Стартовое» за 2,99 €/месяц с налогом — 1 ГБ памяти. ntfy — единственная программа на Go с небольшой базой SQLite, которая хранит сообщения, пока выключенный телефон их не заберёт: это самое лёгкое приложение в каталоге, занимающее при использовании несколько десятков мегабайт. Что занимает немного места — это открытые соединения для мгновенной доставки и вложения, прикреплённые к сообщению. Остальная память служит системе и избавляет от вопроса, дойдёт ли оповещение.
Здесь заменяют Pushover, Pushbullet или привычку отправлять письма самому себе, которые в итоге перестают читать. Публикация не требует никакой библиотеки: достаточно HTTP-запроса по адресу темы из shell-скрипта, cron, таблицы, промышленного автомата или бизнес-приложения. На стороне получения — приложения Android — в Play Store и на F-Droid — и iOS, плюс веб-интерфейс. А ntfy умеет ещё одно: служить распространителем UnifiedPush для приложений, которые это принимают, что позволяет телефону без сервисов Google всё равно получать свои уведомления.
Что меняет управляемое размещение
Публикация умещается в одну строку
Вызов curl с текстом сообщения по адресу вашей темы — и готово. Не нужно согласовывать токен, устанавливать зависимость, обязательный формат JSON: всё, что умеет отправлять HTTP-запрос, умеет вас уведомить, включая старый скрипт, найденный в crontab.
Уведомления, несущие свой контекст
Пять уровней приоритета — самый высокий звонит даже в беззвучном режиме, — заголовок, метки, адрес, открываемый одним жестом, кнопки действий, вызывающие другой URL, и вложение. Оповещение о резервном копировании может таким образом содержать ссылку на свой отчёт.
Отложенно, по расписанию, и ничего не теряется
Сообщение можно датировать так, чтобы оно ушло через тридцать минут или завтра в девять. А поскольку сообщения какое-то время остаются в кэше сервера, выключенный или offline телефон получает их при повторном подключении, а не пропускает.
Темы, которые принадлежат вам
На собственном экземпляре учётные записи и списки доступа решают, кто может читать и кто может писать в каждую тему. Вы резервируете имя, даёте право записи одному серверу, а право чтения — двум телефонам, чего не позволяет общий публичный сервис.
Почему доверить это нам, а не устанавливать самим
Бэкап, сообщающий, что он сделал
Одна строка в конце скрипта, и телефон показывает «сохранено 42 ГБ за 18 минут» со ссылкой на журнал. Больше не нужно заглядывать в файл журнала, чтобы узнать, прошла ли ночь спокойно.
Техническое помещение, которое греется
Датчик превышает порог, сообщение уходит с максимальным приоритетом и звонит, даже если телефон в беззвучном режиме. Это тот вид оповещения, который должен будить, и приоритет существует именно для этого.
Магазин, предупреждающий о заказе
Сайт обращается к адресу темы при каждом подтверждённом заказе, с суммой в заголовке. Продавец знает, что нужно готовить, ещё до того, как включит компьютер.
Дом, который говорит
Оставленные открытыми ворота, закончившая работу стиральная машина, отключение электричества: домашние автоматы и инструменты автоматизации умеют вызывать URL, а значит, умеют вас уведомлять.
Телефон без сервисов Google
На системе без Google уведомления совместимых с UnifiedPush приложений проходят через ваш экземпляр ntfy. Сообщения приходят, минуя инфраструктуру гиганта.
Размещено во Франции
Уведомление часто содержит больше информации, чем кажется: имя клиента, сумму, адрес сервера. Ваше проходит через наш датацентр в Новой Аквитании, которым мы управляем сами.
Частые вопросы
Вы выбираете название темы, подписываетесь на неё из мобильного приложения, затем отправляете HTTP-запрос с текстом сообщения по адресу вашего экземпляра, за которым следует это название. В shell это вызов curl; в Python, PHP или PowerShell — та функция HTTP-запроса, которой вы уже пользуетесь. Параметры — заголовок, приоритет, метки, ссылка для открытия — передаются в заголовках запроса, так что учить ничего нового не нужно.
Да, существует приложение для iOS, с нюансом, который лучше знать заранее: Apple требует, чтобы мгновенные уведомления проходили через её собственный сервис доставки. Поэтому размещённый на своём сервере экземпляр нужно настроить на ретрансляцию через сервис проекта ntfy, чтобы iPhone просыпался; настройка предусмотрена именно для этого. На Android приложение подключается напрямую к вашему экземпляру, без посредника.
На Android мгновенная доставка держит соединение открытым, что немного заметно на батарее; можно предпочесть периодический опрос. Сообщения не шифруются от конца до конца: экземпляр видит их содержимое — именно поэтому интересно, чтобы он был вашим. Телефонные каналы вроде голосового звонка или SMS зависят от платного стороннего аккаунта. А ntfy ничего не отслеживает: он передаёт. Чтобы узнать, что сервис упал, нужен монитор выше по цепочке, который с ним разговаривает.
«Приложение Стартовое», за 2,99 €/месяц с налогом. Он даёт 1 ГБ памяти там, где приложение требует минимум 256 МБ: запас нужен системе, а не для красоты. Сменить тариф можно и позже, без переустановки.
На сервере — ничего: экземпляр готов. На телефоне — приложение ntfy из Play Store, F-Droid или App Store, в котором указывают адрес вашего экземпляра перед подпиской на тему.