1687 字
8 分钟

Tracearr 部署教程:一站式媒体服务器监控平台

众所周知,我有一个 Emby 服。之前一段时间没怎么关注客户端使用情况。虽然一开始就声明过不要使用网页播放,也不要随意共享账号,但实际运行下来还是有不少人这么用。结果就是很多人直接在网页端播放触发转码,服务器 CPU 长时间被大量占用。因为当时也没有精力去逐个排查和管理用户,这件事就一直拖着。

过去如果想做这类监控,通常需要依赖像 Tautulli(只支持 Plex)或 Jellystat(只支持 Jellyfin)这样的工具。而今天要介绍的 Tracearr,则是一款同时支持三个媒体服务器平台的统一监控解决方案。

connorgallopo
/
tracearr
Waiting for api.github.com...
00K
0K
0K
Waiting...

什么是 Tracearr?#

Tracearr 是一个开源的媒体服务器实时监控平台,支持同时监控 Plex、Jellyfin 和 Emby。它可以实时跟踪流媒体播放情况,深入分析播放数据,并在账户共享失控之前发现并解决这些问题。

image-20260312101127620

NOTE

事先声明,我不会主动收集记录服里人播放和历史记录也不用担心我公开,数据仅仅用于排查违规账户。

主要功能#

NOTE

有个缺点,目前中文是支持的,但是是繁体中文,挺变扭。而且不支持旧,只能从新数据开始查起。

实时监控面板#

  • 多服务器仪表盘:在一个界面查看所有媒体服务器状态
  • 实时会话追踪:WebSocket 推送,延迟极低
  • 交互式世界地图:直观展示观众地理位置分布
  • 服务器资源监控:CPU、内存、转码器使用率

账号分享检测#

Tracearr 提供六种智能检测规则,协助异常使用行为:

检测规则说明
不可能旅行短时间内出现在地理位置相距过远的两个地方
同时多地点登录同一账号在多个不同地点同时活跃
设备速度异常设备在物理上不可能的速度移动
并发流过多超出正常个人使用范围的并发观看
地理限制违规来自被限制地区的访问
账号长期不活跃识别僵尸账号或被遗忘的分享

信任评分系统#

基于用户行为自动计算信任分数,违规行为会降低评分,帮助你快速识别高风险账号。

数据分析#

  • 观看历史记录与统计
  • 流媒体分析(转码 vs 直推、带宽使用、编码格式分布)
  • 媒体库分析(内容概览、质量分布、存储统计、观看热度)

通知系统#

  • Discord Webhook 集成
  • Apprise 支持(覆盖 80+ 通知服务)
  • 完全可自定义的通知模板

数据迁移#

支持从 TautulliJellystat 导入历史数据。

技术栈#

层级技术
前端React 19 + TypeScript + Tailwind CSS + shadcn/ui
后端Node.js + Fastify
数据库TimescaleDB(PostgreSQL 时序扩展)
缓存Redis
实时通信Socket.io
图表Highcharts
地图Leaflet

部署方式#

Tracearr 提供三种 Docker 镜像标签:

  • supervised:All-in-one 版本,内置数据库(最简单,适合新手)
  • latest:标准版本,需要外部 TimescaleDB 和 Redis(推荐生产环境)
  • nightly:每日构建版,包含最新功能但可能不稳定

下面介绍两种部署方式:Dokploy 模板部署(推荐)和 Docker Compose 部署


方式一:Dokploy 模板部署(推荐)#

Dokploy 是一个开源的 PaaS 平台,类似 Vercel 和 Heroku 的替代品,支持自托管。我封装了模板可以直接导入使用。

模板导入步骤#

Base64 模板
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHRyYWNlYXJyOlxuICAgIGltYWdlOiBnaGNyLmlvL2Nvbm5vcmdhbGxvcG8vdHJhY2VhcnI6bGF0ZXN0XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1BPU1RHUkVTX1VTRVJ9OiR7UE9TVEdSRVNfUEFTU1dPUkR9QHRpbWVzY2FsZTo1NDMyLyR7UE9TVEdSRVNfREJ9XG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovLzoke1JFRElTX1BBU1NXT1JEfUByZWRpczo2Mzc5LzBcbiAgICAgIC0gSldUX1NFQ1JFVD0ke0pXVF9TRUNSRVR9XG4gICAgICAtIENPT0tJRV9TRUNSRVQ9JHtDT09LSUVfU0VDUkVUfVxuICAgICAgLSBORVhUX1BVQkxJQ19VUkw9aHR0cHM6Ly8ke0RPTUFJTn1cbiAgICAgIC0gTk9ERV9FTlY9cHJvZHVjdGlvblxuICAgIHZvbHVtZXM6XG4gICAgICAtIHRyYWNlYXJyLWRhdGE6L2FwcC9kYXRhXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHRpbWVzY2FsZTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIHJlZGlzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZFxuXG4gIHRpbWVzY2FsZTpcbiAgICBpbWFnZTogdGltZXNjYWxlL3RpbWVzY2FsZWRiLWhhOnBnMThcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBQT1NUR1JFU19VU0VSPSR7UE9TVEdSRVNfVVNFUn1cbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQn1cbiAgICB2b2x1bWVzOlxuICAgICAgLSB0aW1lc2NhbGUtZGF0YTovaG9tZS9wb3N0Z3Jlcy9wZ2RhdGEvZGF0YVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01ELVNIRUxMXCIsIFwicGdfaXNyZWFkeSAtVSAke1BPU1RHUkVTX1VTRVJ9IC1kICR7UE9TVEdSRVNfREJ9XCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczo3LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgY29tbWFuZDogcmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgJHtSRURJU19QQVNTV09SRH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpcy1kYXRhOi9kYXRhXG5cbnZvbHVtZXM6XG4gIHRyYWNlYXJyLWRhdGE6IHt9XG4gIHRpbWVzY2FsZS1kYXRhOiB7fVxuICByZWRpcy1kYXRhOiB7fVxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmRiX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjE2fVwiXG5yZWRpc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDoxNn1cIlxuand0X3NlY3JldCA9IFwiJHtwYXNzd29yZDozMn1cIlxuY29va2llX3NlY3JldCA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bY29uZmlnXVxubW91bnRzID0gW11cbmVudiA9IFtcbiAgXCJET01BSU49JHttYWluX2RvbWFpbn1cIixcbiAgXCJQT1NUR1JFU19VU0VSPXRyYWNlYXJyXCIsXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtkYl9wYXNzd29yZH1cIixcbiAgXCJQT1NUR1JFU19EQj10cmFjZWFyclwiLFxuICBcIlJFRElTX1BBU1NXT1JEPSR7cmVkaXNfcGFzc3dvcmR9XCIsXG4gIFwiSldUX1NFQ1JFVD0ke2p3dF9zZWNyZXR9XCIsXG4gIFwiQ09PS0lFX1NFQ1JFVD0ke2Nvb2tpZV9zZWNyZXR9XCJcbl1cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwidHJhY2VhcnJcIlxucG9ydCA9IDMwMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbiIKfQ==
  1. 填写配置参数:

    • Domain:你的域名(如 tracearr.example.com
    • 其他密码字段留空,系统会自动生成强密码
  2. 点击 Deploy,等待约 2-3 分钟完成部署

  3. 访问填写的域名,注册管理员账号即可开始使用

image-20260312101754497


方式二:官方docker compose 部署#

deploy.sh
# 创建目录
mkdir -p tracearr && cd tracearr
# 下载官方示例配置
curl -O https://raw.githubusercontent.com/connorgallopo/Tracearr/main/docker/examples/docker-compose.pg18.yml
# 生成随机密钥
echo "JWT_SECRET=$(openssl rand -hex 32)" > .env
echo "COOKIE_SECRET=$(openssl rand -hex 32)" >> .env
# 启动服务
docker compose -f docker-compose.pg18.yml up -d
echo "Tracearr 已启动,访问 http://localhost:3000"

初始配置#

首次访问 Tracearr 时,系统会引导你完成初始化:

1. 创建管理员账号#

填写邮箱和密码注册第一个管理员账号。

2. 添加媒体服务器#

Tracearr 支持同时添加多个 Plex / Jellyfin / Emby 服务器:

平台连接方式
PlexToken 认证(从 Plex 设置中获取)
JellyfinAPI Key + 服务器地址
EmbyAPI Key + 服务器地址

image-20260311161357191

点击 Sync 开始同步数据 image-20260311161426432

3. 导入历史数据(可选)#

如果你之前使用 Tautulli 或 Jellystat:

  1. 进入 SettingsImport
  2. 选择数据来源
  3. 上传备份文件或连接原数据库
  4. 等待导入完成

image-20260312102138977


使用指南#

仪表盘概览#

主界面分为几个区域:

  • 顶部统计:当前在线用户、今日播放量、总用户数
  • 世界地图:实时显示观众分布
  • 活动会话:当前正在播放的内容、进度、码率、转码状态
  • 服务器状态:CPU、内存、网络、转码器使用情况

image-20260312101127620

image-20260312102305962

image-20260312102610283

image-20260312102339238

用户管理#

Users 页面可以:

  • 查看所有用户的信任评分
  • 查看用户观看历史
  • 标记可疑账号
  • 查看账号违规记录

image-20260312102513677

数据分析#

Analytics 菜单提供多维度统计:

  • 观看统计:时段分布、内容类型偏好、设备分布
  • 流媒体分析:转码 vs 直推比例、平均码率、编码格式
  • 媒体库分析:存储使用、内容质量分布、热门内容

image-20260312102437916

image-20260312102902338

违规规则设定以及分析#

image-20260312102739241

API 使用#

Tracearr 提供完整的 REST API,文档位于 /api-docs

Terminal window
# 获取当前会话
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://tracearr.example.com/api/sessions/active
# 获取用户列表
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://tracearr.example.com/api/users
# 获取统计数据
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://tracearr.example.com/api/analytics/overview

与 Tautulli / Jellystat 对比#

功能TracearrTautulliJellystat
Plex 支持
Jellyfin 支持
Emby 支持
多服务器统一
分享检测✅ 高级✅ 基础
信任评分
实时地图
开源协议AGPL-3.0GPL-3.0GPL-3.0

Tracearr 的优势在于统一管理和高级的账号分享检测,适合同时运行多个媒体服务器的用户。


总结#

Tracearr 作为新兴的媒体服务器监控工具,凭借其多平台支持智能分享检测功能,填补了 Tautulli 和 Jellystat 的空白。对于同时运行 Plex、Jellyfin 或 Emby 的用户来说,这是一个值得尝试的一站式解决方案。

项目仍在积极开发中,未来计划包括更多通知渠道、移动端 App、以及更丰富的数据分析功能。

相关链接:


Tracearr 部署教程:一站式媒体服务器监控平台
https://catcat.blog/2026/03/tracearr-deployment-guide
作者
猫猫博客
发布于
2026-03-12
许可协议
CC BY-NC-SA 4.0