ChimePort

← Все публичные проекты

ChimePort

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.

Проект ориентирован на тех, кто предпочитает самостоятельно управлять своей инфраструктурой, хранить данные на собственном сервере и не привязывать системные уведомления исключительно к сторонним мессенджерам.