РелизВерсия v2.36.0
ntfy 2.36.0: общие суточные лимиты для серверов с PostgreSQL
31 октября 2026 года вышел стабильный ntfy 2.36.0. Главные изменения — хранение суточного расхода в базе и общий учёт между серверами с PostgreSQL, с отдельным временем сброса для каждого посетителя.
Что меняется в учёте лимитов
Суточные счётчики сообщений, писем и звонков перенесены в базу пользователей: SQLite хранит их для одного сервера, а PostgreSQL позволяет обмениваться расходом между узлами. Без базы пользователей учёт по-прежнему остаётся в памяти. Вместо общего сброса в полночь UTC каждый посетитель получает свой 24-часовой период; время следующего сброса показывается в аккаунте и поле stats.reset_at ответа /v1/account.
Общий счётчик не означает мгновенную строгую квоту на весь кластер. По описанию PR #2131 узлы синхронизируют расход примерно каждые пять секунд, поэтому между обменами возможен перерасход. Сообщения анонимных посетителей и пользователей без тарифа начинают сохраняться после достижения 10% дневного лимита; ниже порога счётчик локален и теряется при перезапуске. Счётчики писем и звонков сохраняются с первой единицы. При недоступности БД ограничения продолжают применяться по локальной памяти узла, а таймаут записи PostgreSQL может привести к недоучёту. Ограничители частоты запросов остаются локальными.
Условия обновления
При переходе на эту версию прежний суточный расход обнуляется: старые столбцы stats_* больше не используются. Разработчики требуют синхронизировать часы серверов, работающих с общей БД: периоды и обмен счётчиками зависят от времени самих узлов. Для посетителей без тарифа возвращён дневной лимит писем, вычисляемый из visitor-email-limit-replenish; документация уточняет, что при интервале пополнения больше суток отдельного дневного ограничения нет.
Изменена и проверка конфигурации. Если задан base-url либо лимит message-size-limit превышает 4 КБ, полная валидация снова выполняется. Поэтому некорректная конфигурация, с которой сервер раньше запускался, теперь может остановить запуск.
Экспериментальный административный сокет
Параметр experimental-listen-admin-unix включает локальный Unix-сокет административного API; по умолчанию он выключен. Пароль или токен на этом интерфейсе не требуются — полномочия определяются возможностью открыть файл сокета. Документация указывает права 0660 для сокета и 0750 для каталога; доступ получают пользователь ntfy, его группа и root. Функция требует настроенного контроля доступа, недоступна в Windows и пока не используется обычными командами управления пользователями, токенами и тарифами. Это экспериментальный интерфейс, а не новый публичный API без авторизации.
В web-приложении повторная выдача сообщений после опроса или переподключения больше не должна возвращать удалённые уведомления, сбрасывать отметку прочтения или вызывать повторное оповещение. Для PostgreSQL также добавлена метрика ntfy_db_up по пулам соединений и проверка основного узла наряду с репликами.