
Go · SQLite · Docker · Android · PWA · Web Push
ChimePort — открытый self-hosted сервис уведомлений для собственных серверов, приложений и систем автоматизации. Он объединяет сообщения из разных источников в одном месте и доставляет их через веб-интерфейс, браузерные Web Push-уведомления и Android-приложение.
Проект появился из практической задачи: заменить множество отдельных Telegram-ботов единым сервисом, который можно развернуть на своём сервере и использовать для любых систем, умеющих отправлять HTTP-запросы.
Возможности
Каналы и источники
Уведомления распределяются по каналам. Например, можно создать отдельные каналы для серверного мониторинга, Home Assistant, резервного копирования и других приложений.
Каждый источник получает собственные API-токены. Для них можно ограничить права доступа к конкретным каналам, а при необходимости отозвать токен, не затрагивая остальные интеграции.
Веб-панель
Веб-интерфейс позволяет просматривать историю сообщений, отслеживать прочитанные и непрочитанные события, управлять каналами, пользователями, источниками и токенами.
Предусмотрены три темы оформления — Ocean, Paper и Control.
Android-приложение
Отдельный Android-клиент поддерживает подключение к нескольким серверам ChimePort, системные уведомления, настройку каналов, звуков и вибрации.
Можно установить тихие часы, в течение которых обычные события не будут беспокоить пользователя. Срочные уведомления способны обходить эти ограничения.
PWA и Web Push
Веб-панель может работать как устанавливаемое приложение PWA. Пользователь может разрешить браузерные уведомления и получать новые сообщения даже после закрытия вкладки, если браузер и операционная система поддерживают такую доставку.
Web Push использует стандартную инфраструктуру браузеров и шифрование содержимого. При этом доставка зависит от внешних push-шлюзов и не гарантируется для каждого устройства или состояния системы.
История сообщений
Сообщения сохраняются на сервере до отправки уведомлений клиентам. Если телефон или браузер временно недоступен, события остаются в истории и синхронизируются при следующем подключении.
Поддерживаются приоритеты сообщений, отметки о прочтении и просмотр истории по каналам.
Архитектура
Серверная часть ChimePort написана на Go. Для хранения пользователей, каналов, токенов и сообщений используется SQLite.
Веб-интерфейс и API входят в один серверный контейнер. Обновления веб-клиентам передаются через SSE, а браузерные системные уведомления — через Web Push с использованием VAPID.
Для управления доступом используются пользовательские сессии и отдельные токены источников с ограниченными правами.
Публичной самостоятельной регистрации нет: пользователей создаёт администратор.
ChimePort не требует центрального облачного сервиса или отдельного аккаунта у разработчика. Сервер, база сообщений и настройки находятся на инфраструктуре владельца.
Развёртывание и обслуживание
ChimePort предназначен для установки на собственном сервере через Docker Compose или Portainer.
Для работы требуются Docker, постоянный том для хранения данных и HTTPS reverse proxy при доступе через Интернет. Отдельные серверы PostgreSQL, Redis или брокеры сообщений не нужны.
Предусмотрены процедуры резервного копирования, проверки архивов и восстановления. Вместе с базой сохраняются ключи, необходимые для корректной работы токенов и браузерных подписок.
Готовые Docker-образы публикуются для архитектур amd64 и arm64.
Состояние разработки
Проект находится в активной разработке.
Серверная часть и веб-панель доступны в версии v0.1.4. Реализованы API, управление пользователями, каналами и источниками, история уведомлений, PWA и Web Push.
Android-приложение находится на стадии alpha, но уже поддерживает основные сценарии получения и управления уведомлениями.
В дальнейшем планируется развитие интеграций, улучшение Android-клиента и расширение проверки совместимости браузеров.
Исходный код и документация
ChimePort распространяется с открытым исходным кодом под лицензией AGPL-3.0-only.
- GitHub: https://github.com/mirivlad/ChimePort
- Релизы: https://github.com/mirivlad/ChimePort/releases
- Инструкция по установке: https://github.com/mirivlad/ChimePort/blob/main/docs/11-PORTAINER-QUICKSTART.md
- Документация API: https://github.com/mirivlad/ChimePort/blob/main/docs/03-API.md
- Сообщения об ошибках: https://github.com/mirivlad/ChimePort/issues
Проект ориентирован на тех, кто предпочитает самостоятельно управлять своей инфраструктурой, хранить данные на собственном сервере и не привязывать системные уведомления исключительно к сторонним мессенджерам.