Plex 作为一款相对来说已经很成熟的个人媒体资料库软件,在功能上已经可以满足大部分的人的需求了。电影、电视剧、个人视频、音乐、电视直播等等,现在都可以在 Plex 里面很轻松的进行管理。
另外,通过 Webhook 还可以扩展出很多有趣的功能,比如说利用 trakt.tv 官方提供的功能来同步 Plex 播放记录;还比如说可以和智能家居联动,实现 Plex 开始播放时自动调节家中智能设备到预设的「影院状态」……。
但是(凡事都有一个「但是」),功能的扩展是没有上限的。对于喜欢折腾的人来说,Plex 的控制面板虽然完整,但不够丰富的,用互联网用语来说就是「颗粒度不够细腻」。
既然如此,有没有什么办法能够丰富 Plex 的使用体验呢?当然有,我目前主要用的有两个第三方的工具,一个是 Trakter,另一个就是本章要介绍的 Tautulli 了。
Tautulli 是一个基于 Python 制作的第三方程序,主要作用是对 Plex Media Server 进行监测、分析和通知的分发。相关链接:官网 / Github。




相较于 Plex 的后台面板来说,Tautulli 可以提供更多更细致的监控和分析,还有非常方便的通知功能(这个最后说)。对于爱折腾的人,尤其是数据控来说,Tautulli 可以说是 Plex 必不可少的一个软件了。
介绍完 Tautulli,下面开始来聊聊安装。
因为需要持续监控 Plex 的活动状态,所以它需要安装在一个能稳定运行的机器上,可以是通用的 VPS,也可以是自己的家庭服务器(比如 NAS)上,比较简单的当然就是直接安装在用来跑 Plex Media Server 的机器上。至于具体安装在哪里,全看个人意愿了,只要能保证稳定持久运行就可以,我自己的话是安装在 VPS 上的。
直接安装的话,需要本地有 Python 环境,最低版本要求 2.7.3。Windows 和 macOS 有直接的安装包,Ubuntu 可以使用 Snap 包管理器直接搜索安装,其他环境下安装的话步骤稍微多一点,方法可以参考官方的:安装指南。
因为我的 VPS 是运行在 Debian 上的,再加上「系统洁癖」的缘故,最后我是选择通过 Docker 来安装的。使用 Docker 安装的相关指令是:
docker run -d \
--name=tautulli \
--restart=unless-stopped
-v <path to data>:/config \
-e PUID=<uid> \
-e PGID=<gid> \
-e TZ=Asia/Hong_Kong \
-p 8181:8181 \
tautulli/tautulli
<path to data>
是用来保存 Tautulli 相关数据文件的路径,运行指令前需要提前创建好路径位置;<uid>
和 <gid>
填写自己用户编号和组编号,这两行是和用户权限相关的,删掉这两行不影响使用,权限默认使用的就是 root 了;
根据自己的情况适当修改一下指令,然后直接在命令行执行,Docker 会自动下载 Tautulli 镜像并安装运行。
等到指令走完后,就可以通过 http://ip:8181 来访问 Tautulli 的 Web 界面了。
Tautulli 安装好之后,需要做的有两件事情,一个是设置 Tautulli 的账户,另一个就是把自己的 Plex Media Server 和 Tautulli 关联起来。
1. 设置 Tautulli 用户和密码
点击 WebUI 的右上角的设置图标进入设置界面,然后在 Web Interface 下的 AUTHENTICATION 一项中设置用户名和密码。

Allow Plex Admin 是允许 Plex 的管理员直接通过 Plex 账户登录 Tautulli,一般是建议可以开启这项的,开启的同时可以删除上面的用户名和密码,仅通过 Plex 账户登录 Tautulli;
Allow Guest Access to Tautulli 是允许受分享资料库的用户通过他们的 Plex 账户登录 Tautulli,默认建议是不勾选的,或者根据自己的需求来做选择吧。
2. 关联 Plex Media Server 和 Tautulli
在 Web Interface 的下面一项就是 Plex Media Server,点击后进入相关的设置,先滑到最下面有一项 Plex.tv Account Token,点击输入框后面的 Fetch 按钮,验证 Plex 账户并获取到自己 Plex 的 Token,之后点击保存。
刷新一下当前页面,然后在顶部的 Plex IP Address or Hostname 下面那个输入框点一下,就会弹出下拉菜单让你选择自己 Plex Media Server 地址。
下拉框中会显示所有你的 Plex Meida Server 的地址,192.168 开头的就是本地的地址,Tautulli 如果是安装在本地环境下,选择这个;如果 Tautulli 不是在本地环境安装,就选择其他的选项。
根据自己的 Tautulli 安装的位置选择内网或者外网地址后,最后点击输入框后面的 Verify Server 验证服务器,验证成功后点击最下面的保存就行了。

注:如果 Plex Meida Server 是安装在家庭环境下,并通过运营商提供的公网 IP 提供外网访问,而 Tautulli 是安装在外网环境,需要通过公网 IP 关联 Plex,这种场景下建议在家里的路由器上通过 DDNS 给 Plex Media Server 配置一个域名地址,防止因为路由器重启或者重新拨号之类的问题导致宽带的公网 IP 变动,影响 Tautulli 获取 Plex 信息。
自动化的通知也是 Tautulli 的一个很重要的功能,它可以通过自定义实现不错的通知效果,比如我配置了两个通过 Telegram 发送的通知,一个是新添加媒体资源的时候自动发送媒体相关信息的通知,另一个是媒体播放的时候发送的相关通知:

通知的相关设置位置在 Tautulli 设置页面的 Notification Agents 中。进入设置界面后,点击 Add a new notification agent 添加新通知,然后根据提示操作就可以。
比如设置 Telegram 通知的步骤:
- 添加通知选择 Telegram
- 填入 Telegram Bot Token 和 用户/群组/频道 ID
- 点击 Test Notifications 选项,发送测试通知验证第 2 步设置是否有误
- 点击 Trigger 选项,勾选自己需要的触发器
- 点击 Text 选项,在对应的触发选项下填入想要发送的推送内容
- 保存
推送内容中的变量可以在 Text 选项里点击上面的几个 click me 查看,这边分享几个我自己用的推送内容,推送内容的效果就是像上面图片中的样子:
🍕 新增项目 🍕
-------------------------------
🍔 项目类型:<movie>电影/短片</movie><show>剧集/综艺</show><season>季度剧集/综艺</season><episode>单集剧集/综艺</episode>
📺 项目名称:{title}<season>
🧇 季度信息:{season_name}</season><episode>
ℹ️ 单集信息:S{season_num00}E{episode_num00> / }</episode>
🐢 额外信息:<movie>MOVIE / </movie><episode>SHOW / </episode>{air_date}
🐻 内容简介:
{summary}
--------------------------------
{⭐ 评分: <audience_rating>/100}
🍿 播放:<a href="{plex_url}">Plex Web Link</a>
🔗 外链:<a href="{themoviedb_url}">TMDB</a> / <a href="{imdb_url}">IMDB</a> / <a href="{trakt_url}">Trakt</a> / <a href="https://m.douban.com/search/?query=<movie>{title}</movie>{show_name}&type=movie">豆瓣</a>
▶️ 开始播放 ▶️ (#{transcode_decision!u})
-------------------------------
🍟 用户:{#<user> / }{stream_bandwidth>kbps}
🖥️ 设备:{player} ({platform})
🧇 项目:<movie>[MOVIE] </movie><episode>[SHOW] </episode>{title}
ℹ️ 详情:<episode>S{season_num00}E{episode_num00> / }</episode>{<air_date> / }{bitrate>kbps}
-------------------------------
💃 视频:{stream_video_resolution>P}{ / <stream_container!u}{ / <stream_video_codec!u}{ / <stream_video_bitrate>kbps}
🕺 音频:{stream_audio_language!u}{ / <stream_audio_codec!u}{ / <stream_audio_bitrate>kbps}
💬 字幕:{stream_subtitle_language!u}{ / <stream_subtitle_container!u}{ / #<subtitle_decision!u}
⏹ 停止播放 ⏹ {(<stream_duration>MIN)}
-------------------------------
🍟 用户:{#<user> / }{stream_bandwidth>kbps}
🖥️ 设备:{player} ({platform})
🧇 项目:<movie>[MOVIE] </movie><episode>[SHOW] </episode>{title}
ℹ️ 详情:<episode>S{season_num00}E{episode_num00> / }</episode>{<air_date> / }{bitrate>kbps}
其中,开始播放的推送中,第一行最后面的标签是显示「是否是转码播放」,用户后面的 kbps 是用户的带宽,用来对比媒体详情后面的比特率,验证是否是因为带宽问题导致的转码播放;停止播放后面的那个标签是显示这次播放的时间长度。
通知相关设置的标签特别多,也很强大,所以还是需要自己摸索一下,我这边只是提供一个简单的配置方便小白快速上手。