Многие владельцы домашних медиасерверов Plex начинают с семейного круга пользователей, но со временем «семья» превращается в друзей, затем в друзей друзей, а затем — в кого-то, с кем работает двоюродный брат. В таких случаях возникает вопрос: кто именно пользуется сервером и не передаются ли учётные данные посторонним.
Существующие инструменты показывают историю активности, но не сообщают, когда происходит нечто подозрительное. Именно поэтому был создан Tracearr. Разработка началась в декабре, и вскоре выяснилось, что у многих администраторов медиасерверов есть те же проблемы.
Что делает Tracearr
Tracearr — это аналитический инструмент для медиасерверов. Он отображает полную историю просмотров, статистику воспроизведения, активные сессии — все привычные функции. Каждая трансляция фиксируется с геолокацией по IP: город, регион, страна, а также информация об устройстве.
Система обнаружения совместного использования учётных записей работает по пяти типам правил:
- Невозможное путешествие (Impossible Travel) — если пользователь заходит из Нью-Йорка, а через 30 минут из Лондона. Используется формула гаверсинуса для вычисления расстояния. Если «скорость перемещения» превышает 1000 км/ч, включается тревога. При этом VPN-прыжки моментально становятся заметны.
- Одновременные локации — одна учётная запись ведёт трансляции из двух городов одновременно. В таком случае поступает мгновенное уведомление.
- Скорость смены устройств (Device velocity) — слишком много уникальных IP-адресов за короткий период. Обычно это говорит о совместном использовании данных для входа.
- Параллельные трансляции (Concurrent streams) — позволяет задавать лимиты на количество одновременных потоков для каждого пользователя. Простое, но эффективное средство выявления нарушений.
- Географические ограничения (Geo restrictions) — возможность блокировать доступ из целых стран.
Уровень доверия пользователей автоматически снижается при нарушении правил: «невозможное путешествие» снижает рейтинг сильнее, чем превышение лимита потоков. Оповещения можно получать в Discord, ntfy или через собственные webhook-и.
Также доступна интерактивная карта потоков, на которой отображаются текущие и исторические места воспроизведения. Это не только полезно, но и просто интересно наблюдать.
Поддержка нескольких серверов позволяет объединить Plex, Jellyfin и Emby в одной панели управления. Можно завершать потоки прямо из интерфейса. Если уже используется Tautulli или Jellystat, можно импортировать историю просмотров, чтобы не начинать с нуля. Реализация импорта заняла много времени, но теперь она работает стабильно.
Что показал собственный сервер
После запуска Tracearr стали заметны некоторые закономерности:
- Один «член семьи» выходил в сеть из Бостона и Детройта в один день.
- Одна учётная запись использовалась как минимум тремя людьми из двух разных стран.
- Нечто вроде «путешественника», сменившего 15 уникальных IP-адресов за месяц.
Эти данные уже были в Tautulli, но ни один инструмент не анализировал поведение для выявления шаблонов. Именно поэтому возникла идея поделиться разработкой. Ведь, вероятно, не только одному администратору приходилось смотреть в логи и задаваться вопросом, кто же это стримит из Кучека, Казахстан.
Tautulli и Jellystat предоставляют историю просмотров, статистику и мониторинг сессий. Tracearr добавляет к этому механизм обнаружения совместного использования. Инструменты можно использовать одновременно — они не конфликтуют между собой.
ФункцияTautulliJellystatTracearrИстория просмотровДаДаДаВыявление совместного использованияНетНетДаОповещения о невозможных перемещенияхНетНетДаОценка доверияНетНетДаПоддержка PlexДаНетДаПоддержка JellyfinНетДаДаПоддержка EmbyНетДаДаМультисерверная поддержкаНетНетДа
Другие инструменты начинают тормозить при загрузке больших объёмов данных. Кроме того, для нескольких серверов требуется несколько экземпляров приложения.
В Tracearr используется TimescaleDB, поскольку журнал сессий — это типичный временной ряд. Благодаря непрерывным агрегатам статистика на панели формируется заранее, а не при каждом запросе, что обеспечивает быструю работу даже при многолетней истории.
Plex-серверы передают обновления сессий через SSE (Server-Sent Events), что обеспечивает мгновенное обнаружение событий. Jellyfin и Emby пока используют опрос (polling), так как не поддерживают SSE, но механизм также работает надёжно.
Как начать работу
- Внимание:
Дзен не умеет корректно отображать скрипты. Для сохранения структуры скрипта рекомендуем читать оригинал статьи на сайте:
https://gendom.ru/home-server/инструмент-для-безопасного-совместн/
Существует образ «всё-в-одном», в котором объединены TimescaleDB и Redis в одном контейнере:
Default
services:
tracearr:
image: ghcr.io/connorgallopo/tracearr:supervised
container_name: tracearr
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- tracearr-data:/data
volumes:
tracearr-data:
При желании можно использовать собственные инстансы базы данных и Redis — для этого предусмотрены стандартные образы.
В разработке
Автоматическое завершение потоков по правилам пока недоступно — пока это можно делать вручную через интерфейс. Планируется добавить уведомления по Email и Telegram; уже работают Discord и вебхуки.
Существует мобильное приложение, но пока оно находится в бета-версии.
Проект полностью автономный: без облачных сервисов, без телеметрии, без исходящих соединений.
Заключение
Tracearr начался как личный проект для решения собственных проблем, но вскоре выяснилось, что он востребован у многих. Сообщество Discord активно тестирует инструмент и помогает развивать его — половина функций появилась именно благодаря пользователям.
Репозиторий на GitHub доступен для всех. Если инструмент оказался полезным — добавьте звезду. Активное сообщество Discord поможет при возникновении вопросов или просто для общения.
Если сервер работает на Jellyfin или Emby, разработчик просит сообщить о результатах тестирования. Plex уже испытан достаточно серьёзно, но другие платформы нуждаются в проверке в реальных условиях. Предложения по новым правилам обнаружения также приветствуются.
Читайте про умный дом:
🌐 Сайт
📱 Телеграм
📰 Дзен