Tautulli
Tautulli is the best web application to monitor, view analytics, and receive notifications about your Plex Media Server.
我们分两步走:先在群晖上通过 Docker 完美部署 Tautulli,然后进行“带海报图”的 Telegram 通知高级配置。
第一部分:在群晖 NAS 上部署 Tautulli (Docker Compose)
群晖 DSM 7.2 及以上版本即使有了 Container Manager,本质上还是支持 Docker Compose 的。这是最规范的部署方式。
1. 准备文件夹
打开群晖 File Station。
进入
docker共享文件夹。新建文件夹
tautulli。在
tautulli里面再建一个子文件夹config。路径结构应为:
/volume1/docker/tautulli/config
2. 创建容器 (使用 Container Manager / Docker)
推荐使用群晖 Container Manager 的“项目 (Project)”功能(即 Docker Compose),方便日后更新。
打开 Container Manager -> 项目 -> 新增。
项目名称:
tautulli。路径:选择刚才创建的
/docker/tautulli文件夹。来源:选择“创建 docker-compose.yml”。
在文本框中粘贴以下内容(请根据你的实际情况微调):
YAML
version: '3'
services:
tautulli:
image: ghcr.io/tautulli/tautulli
container_name: tautulli
restart: unless-stopped
volumes:
- ./config:/config
# (可选) 如果你想看 Plex 日志,需要映射 Plex 的日志路径。
# 如果你的 Plex 也是 Docker 版,指向 Plex 的 config/Library/.../Logs
# 如果是群晖套件版,通常在 /volume1/Plex/Library/... 比较难找,可以先不填,不影响通知功能。
environment:
- PUID=1026 # (重要) 建议改为你群晖当前用户的 ID,SSH 输入 id 命令可查看,或者直接尝试默认
- PGID=100
- TZ=Asia/Shanghai
# 新增下面这两行(请把 IP 和端口换成你自己的代理地址)
- HTTP_PROXY=http://192.168.xx.x:7890
- HTTPS_PROXY=http://192.168.xx.x:7890
ports:
- 8181:8181
点击“下一步”直到完成,等待容器启动显示为绿色。
3. 初始化 Tautulli
浏览器访问:
http://群晖内网IP:8181按照向导操作:
登录你的 Plex 账号。
Plex IP: 填群晖的内网 IP(例如
192.168.xx.xxx)。Port:
32400。Verify: 点击验证,确保显示 "Server found"。
完成向导进入主界面。
第二部分:配置“带海报”的漂亮 Telegram 通知
Telegram 想要显示图片,原理是 Tautulli 将海报上传到一个图床(如 Imgur),然后把链接发给 TG,TG 自动抓取预览。
步骤 1:开启图片上传服务 (关键步骤)
Tautulli 默认生成的图片链接是本地的,TG 服务器访问不到,所以必须开启图床代理。
在 Tautulli 中,点击右上角齿轮 ⚙️ -> Settings。
左侧菜单选择 3rd Party APIs。
找到 Imgur 部分。
勾选
Upload Images to Imgur。(注:Imgur 在国内可能访问受限。如果你的网络环境(NAS)无法访问 Imgur,图片可能发不出来。如果失效,可以尝试申请 Cloudinary 免费账号填入下方,那个国内访问稍好一些)。
点击底部的 Save。
步骤 2:添加 Telegram 通知代理
左侧菜单选择 Notification Agents。
点击 Add a new notification agent -> Telegram。
Configuration 标签页:
Telegram Bot Token: 找 @BotFather 获取的 Token。
Chat ID: 你的用户 ID 或群组 ID。
点击 Test Telegram,确保手机收到一条测试消息。
步骤 3:配置漂亮的排版 (Text 标签页)
这是实现“海报 + 详细信息”的核心。Telegram 支持 Markdown 语法。我们将利用 Markdown 的“隐形链接”特性来显示海报。
切换到 Text 标签页。
找到 Playback Start (播放开始) 这一栏。
点击右侧的灰色文字框(Subject 和 Body),填入以下我为你写好的模板:
Subject (标题):
Plaintext
▶️ 正在播放Body (内容 - 核心部分):
请直接复制粘贴下面的代码。注意第一行代码是把海报链接藏在一个空格里,这样 TG 会把图预览出来,但不会显示长长的 URL。
Markdown
📺 *{title}*
👤 *用户:* `{user}`
📝 *剧集:* {show_name} S{season_num00}E{episode_num00}
⏱ *时长:* {duration} 分钟
⭐️ *评分:* {rating}
💿 *画质:* {video_resolution} ({video_codec})
📡 *设备:* {player} ({ip_address})
📜 *简介:*
{summary}
如果是电影,Tautulli 会智能判断。
点击底部的 Save。
步骤 4:设置触发器
切换到 Triggers 标签页。
勾选 Playback Start。
(可选) 勾选 Playback Resume (恢复播放)。
点击 Save。
测试效果
现在,去你的 Plex 客户端随便播放一个视频。
你的 Telegram 应该会立刻收到一条消息:
最上方:是一张大大的电影 / 剧集海报。
下方:是排版整齐的文字信息(片名加粗,带 emoji 图标)。
常见问题
如果不显示图片:
检查 NAS 网络是否能访问 Imgur。
如果不能,可以在
Settings -> 3rd Party APIs里改用 Cloudinary(注册个免费号,填入 API Key)。或者最简单的“穷人版”图片:Tautulli 获取不到公网图床时,TG 消息依然会发,只是没有预览图,文字内容还在。
测试通知发送成功了,但是实际播放却没有通知
既然“测试通知”成功了,说明网络和代理配置完全没问题。
现在的状况是:Tautulli 能发信,但不知道该什么时候发。 或者 Tautulli 根本没检测到你在播放。
请按照以下顺序(从最常见的原因开始)排查:
第一步:检查“触发器”是否勾选(最常见原因)
你可能在配置 Telegram 时只填了 Token,忘了告诉它“什么时候发”。
回到 Settings -> Notification Agents。
点击 Telegram 前面的 编辑(铃铛图标)。
关键步骤:点击上方的 Triggers(触发器)标签页。
请确保 Playback Start(开始播放)前面的复选框是打钩的。
点底部的 Save。
(如果不勾选这个,Tautulli 就只会发测试消息,不会发播放通知。)
第二步:检查 Tautulli 是否“看”到了播放
这是为了区分是 通知设置问题 还是 监控连接问题。
用你的手机或电脑打开 Plex 播放一个视频。
保持视频播放,同时打开 Tautulli 的首页(Dashboard)。
看网页中间的 Activity 区域:
情况 A:显示正在播放的内容
说明监控正常。问题出在通知设置(可能是设置了延迟或过滤)。
解决:尝试播放超过 1-2 分钟。Tautulli 默认为了防误触,可能设置了“短时间播放不通知”的缓冲期。
情况 B:显示 "Nothing is currently being played"(没有任何播放)
说明监控失效了。Tautulli 根本不知道 Plex 在放视频,自然不会发通知。
解决:这是典型的 Websocket 连接问题。请看第三步。
第三步:解决监控失效(如果是情况 B)
如果 Plex 在放,但 Tautulli 首页没反应,通常是因为 Docker 容器里的 Websocket 没连上。
进入 Settings -> Connectivity(连接性)。
找到 Monitoring 部分。
勾选 Use Websocket。
同时,检查 Plex IP Address 是否填的内网 IP(例如
192.168.31.x),千万不要填127.0.0.1或localhost(因为 Docker 里的 localhost 是容器自己)。保存后,重启一下 Tautulli 容器。
第四步:检查是否设置了过滤条件 (Conditions)
如果你以前乱点过设置,可能设置了“白名单”。
回到 Notification Agents -> Telegram -> Conditions 标签页。
确保里面是空的。
如果你在这里设置了比如
User is xxx,那么只有那个用户播放时才会通知,其他人播放都不会通知。
总结:
90% 的概率是你完成了代理设置和 Token 填写,但是忘了在 Triggers 标签页勾选 Playback Start。快去检查一下那里!
音乐播放
最完美的方法是把“视频通知”和“音乐通知”分开。
我们需要利用 Tautulli 的 Conditions (条件过滤) 功能。请跟着我做,几分钟就能搞定:
第一步:把现有的通知限制为“仅视频”
我们要把你刚才设置好的那个漂亮的通知,限制为只在播放电影和剧集时发送,避免它去干扰音乐。
打开 Tautulli -> Settings -> Notification Agents。
找到你已经设置好的那个 Telegram 代理,点击编辑(铃铛图标)。
点击 Conditions (条件) 标签页。
添加一条规则:
Parameter (参数): 选择
Media TypeOperator (操作符): 选择
is not(不是)Value (值): 输入 track
(这句话的意思是:只有当播放的内容不是“单曲”时,才发送这个通知)
点击 Save。
第二步:新建一个专门的“音乐通知”
现在我们需要创建一个专门用来发音乐通知的代理。
在 Notification Agents 页面,点击 Add a new notification agent -> Telegram。
Configuration (配置) 标签页:
填入和之前一样的 Bot Token 和 Chat ID。
(重要) Description (描述) 可以填:
Telegram - Music(方便你区分)。
Triggers (触发器) 标签页:
勾选 Playback Start (开始播放)。
(建议不要勾选 Stop,因为听歌切歌很频繁,通知太多会很烦)。
Conditions (条件) 标签页:
添加一条规则:
Parameter:
Media TypeOperator:
isValue: track
(这句话的意思是:只有播放“单曲”时,才启用这个通知)
第三步:填入专属的“音乐模板”
现在我们可以为音乐设置一套完全独立的、清爽的模板了。
切换到 Text 标签页。
找到 Playback Start,填入以下音乐专用模板:
Subject (标题):
Plaintext
🎵 正在听歌Body (内容):
(这个模板去掉了海报,专注于歌手和专辑信息,非常整洁)
Markdown
🎵 **{title}** 🎤 *歌手:* {artist_name} 💿 *专辑:* {album_name} 📅 *年份:* {year} 👤 *用户:* {user} 📡 *设备:* {player}
点击 Save。
最终效果
现在你的 Tautulli 变聪明了:
看电影 / 剧集时:触发第一个代理,发送带海报、评分、时长的详细海报卡片。
听歌时:触发第二个代理,发送小巧精致的纯文字歌单信息,没有乱七八糟的空代码。
快去放首歌试试看!
我已经设置好啦,为什么还没有海报?前面没有分开设置的时候是有海报的啊
因为电影和音乐的封面机制不同:
电影 / 剧集:Plex 很多时候直接使用 TMDB 等网站的公网图片链接,Tautulli 就算不配置图床,有时候也能直接把这个公网链接发给 Telegram,所以你有时候能看到电影海报。
音乐:音乐的封面通常嵌在你的音频文件里,或者存在你 NAS 的本地。Telegram 的服务器无法访问你家里的 NAS。因此,必须依靠 Cloudinary 把本地图片“搬运”到公网,Telegram 才能看到。
解决方法(请务必按顺序检查)
虽然你说“已经设置好了”,但空括号 () 铁证如山地表明 Cloudinary 的连接是不通的。
第一步:检查“启用”开关 (最容易漏)
打开 Tautulli -> Settings -> 3rd Party APIs。
找到 Cloudinary 区域。
关键检查:请确认
Upload Images to Cloudinary这个复选框是打钩的。很多时候填了 API Key 但忘了打钩。
第二步:点击“验证”按钮 (决定性步骤)
在 Cloudinary 设置区域,点击那个 Verify Cloudinary (验证 / 测试) 按钮。
如果弹出红色报错:说明你的 API Key/Secret 填错了,或者 Cloud Name 填错了(注意 Cloud Name 不是邮箱,是 Dashboard 里的那个名字)。
如果弹出绿色 Success:说明连接通了。
第三步:重启 Tautulli (如果验证通过但依然不行)
如果你刚配置好 Cloudinary,有时候旧的缓存还在。
保存设置 (Save)。
在 Docker 管理器里重启 Tautulli 容器。
第四步:备用变量测试 (如果以上都完美)
极少数情况下,某些音乐文件没有 Poster 只有 Thumb。你可以尝试修改你的音乐通知模板,把第一行改成备用变量试试:
将 []({poster_url}) 改为 []({thumb_url})
(但通常只要 Cloudinary 通了,poster_url 也是有图的)。
总结
现在的现象是 Tautulli 无法把本地音乐封面上传到公网。只要你去 3rd Party APIs 里点一下 Verify,通常就能发现问题所在(多半是 Key 填错了或者忘了打钩)。搞定这个,音乐海报就会立刻出现!




