Содержание
Многие владельцы домашних медиасерверов 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 добавляет к этому механизм обнаружения совместного использования. Инструменты можно использовать одновременно — они не конфликтуют между собой.
| Функция | Tautulli | Jellystat | Tracearr |
|---|---|---|---|
| История просмотров | Да | Да | Да |
| Выявление совместного использования | Нет | Нет | Да |
| Оповещения о невозможных перемещениях | Нет | Нет | Да |
| Оценка доверия | Нет | Нет | Да |
| Поддержка Plex | Да | Нет | Да |
| Поддержка Jellyfin | Нет | Да | Да |
| Поддержка Emby | Нет | Да | Да |
| Мультисерверная поддержка | Нет | Нет | Да |
Другие инструменты начинают тормозить при загрузке больших объёмов данных. Кроме того, для нескольких серверов требуется несколько экземпляров приложения.
В Tracearr используется TimescaleDB, поскольку журнал сессий — это типичный временной ряд. Благодаря непрерывным агрегатам статистика на панели формируется заранее, а не при каждом запросе, что обеспечивает быструю работу даже при многолетней истории.
Plex-серверы передают обновления сессий через SSE (Server-Sent Events), что обеспечивает мгновенное обнаружение событий. Jellyfin и Emby пока используют опрос (polling), так как не поддерживают SSE, но механизм также работает надёжно.
Как начать работу
Существует образ «всё-в-одном», в котором объединены TimescaleDB и Redis в одном контейнере:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 уже испытан достаточно серьёзно, но другие платформы нуждаются в проверке в реальных условиях. Предложения по новым правилам обнаружения также приветствуются.
Читайте про умный дом:
🌐 Сайт
📱 Телеграм
📰 Дзен

