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. 准备文件夹

  1. 打开群晖 File Station

  2. 进入 docker 共享文件夹。

  3. 新建文件夹 tautulli

  4. tautulli 里面再建一个子文件夹 config

    • 路径结构应为:/volume1/docker/tautulli/config

2. 创建容器 (使用 Container Manager / Docker)

推荐使用群晖 Container Manager 的“项目 (Project)”功能(即 Docker Compose),方便日后更新。

  1. 打开 Container Manager -> 项目 -> 新增

  2. 项目名称tautulli

  3. 路径:选择刚才创建的 /docker/tautulli 文件夹。

  4. 来源:选择“创建 docker-compose.yml”。

  5. 在文本框中粘贴以下内容(请根据你的实际情况微调):

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
  1. 点击“下一步”直到完成,等待容器启动显示为绿色。

3. 初始化 Tautulli

  1. 浏览器访问:http://群晖内网IP:8181

  2. 按照向导操作:

    • 登录你的 Plex 账号。

    • Plex IP: 填群晖的内网 IP(例如 192.168.xx.xxx)。

    • Port: 32400

    • Verify: 点击验证,确保显示 "Server found"。

  3. 完成向导进入主界面。


第二部分:配置“带海报”的漂亮 Telegram 通知

Telegram 想要显示图片,原理是 Tautulli 将海报上传到一个图床(如 Imgur),然后把链接发给 TG,TG 自动抓取预览。

步骤 1:开启图片上传服务 (关键步骤)

Tautulli 默认生成的图片链接是本地的,TG 服务器访问不到,所以必须开启图床代理。

  1. 在 Tautulli 中,点击右上角齿轮 ⚙️ -> Settings

  2. 左侧菜单选择 3rd Party APIs

  3. 找到 Imgur 部分。

  4. 勾选 Upload Images to Imgur

    • (注:Imgur 在国内可能访问受限。如果你的网络环境(NAS)无法访问 Imgur,图片可能发不出来。如果失效,可以尝试申请 Cloudinary 免费账号填入下方,那个国内访问稍好一些)

  5. 点击底部的 Save

步骤 2:添加 Telegram 通知代理

  1. 左侧菜单选择 Notification Agents

  2. 点击 Add a new notification agent -> Telegram

  3. Configuration 标签页

    • Telegram Bot Token: 找 @BotFather 获取的 Token。

    • Chat ID: 你的用户 ID 或群组 ID。

    • 点击 Test Telegram,确保手机收到一条测试消息。

步骤 3:配置漂亮的排版 (Text 标签页)

这是实现“海报 + 详细信息”的核心。Telegram 支持 Markdown 语法。我们将利用 Markdown 的“隐形链接”特性来显示海报。

  1. 切换到 Text 标签页。

  2. 找到 Playback Start (播放开始) 这一栏。

  3. 点击右侧的灰色文字框(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 会智能判断。

  1. 点击底部的 Save

步骤 4:设置触发器

  1. 切换到 Triggers 标签页。

  2. 勾选 Playback Start

  3. (可选) 勾选 Playback Resume (恢复播放)。

  4. 点击 Save


测试效果

现在,去你的 Plex 客户端随便播放一个视频。

你的 Telegram 应该会立刻收到一条消息:

  • 最上方:是一张大大的电影 / 剧集海报。

  • 下方:是排版整齐的文字信息(片名加粗,带 emoji 图标)。

常见问题

  • 如果不显示图片

    1. 检查 NAS 网络是否能访问 Imgur。

    2. 如果不能,可以在 Settings -> 3rd Party APIs 里改用 Cloudinary(注册个免费号,填入 API Key)。

    3. 或者最简单的“穷人版”图片:Tautulli 获取不到公网图床时,TG 消息依然会发,只是没有预览图,文字内容还在。

  • 测试通知发送成功了,但是实际播放却没有通知

既然“测试通知”成功了,说明网络和代理配置完全没问题

现在的状况是:Tautulli 能发信,但不知道该什么时候发。 或者 Tautulli 根本没检测到你在播放。

请按照以下顺序(从最常见的原因开始)排查:

第一步:检查“触发器”是否勾选(最常见原因)

你可能在配置 Telegram 时只填了 Token,忘了告诉它“什么时候发”。

  1. 回到 Settings -> Notification Agents

  2. 点击 Telegram 前面的 编辑(铃铛图标)

  3. 关键步骤:点击上方的 Triggers(触发器)标签页。

  4. 请确保 Playback Start(开始播放)前面的复选框是打钩的。

  5. 点底部的 Save

(如果不勾选这个,Tautulli 就只会发测试消息,不会发播放通知。)

第二步:检查 Tautulli 是否“看”到了播放

这是为了区分是 通知设置问题 还是 监控连接问题

  1. 用你的手机或电脑打开 Plex 播放一个视频。

  2. 保持视频播放,同时打开 Tautulli 的首页(Dashboard)

  3. 看网页中间的 Activity 区域:

    • 情况 A:显示正在播放的内容

      • 说明监控正常。问题出在通知设置(可能是设置了延迟或过滤)。

      • 解决:尝试播放超过 1-2 分钟。Tautulli 默认为了防误触,可能设置了“短时间播放不通知”的缓冲期。

    • 情况 B:显示 "Nothing is currently being played"(没有任何播放)

      • 说明监控失效了。Tautulli 根本不知道 Plex 在放视频,自然不会发通知。

      • 解决:这是典型的 Websocket 连接问题。请看第三步。

第三步:解决监控失效(如果是情况 B)

如果 Plex 在放,但 Tautulli 首页没反应,通常是因为 Docker 容器里的 Websocket 没连上。

  1. 进入 Settings -> Connectivity(连接性)。

  2. 找到 Monitoring 部分。

  3. 勾选 Use Websocket

  4. 同时,检查 Plex IP Address 是否填的内网 IP(例如 192.168.31.x),千万不要填 127.0.0.1localhost(因为 Docker 里的 localhost 是容器自己)。

  5. 保存后,重启一下 Tautulli 容器。

第四步:检查是否设置了过滤条件 (Conditions)

如果你以前乱点过设置,可能设置了“白名单”。

  1. 回到 Notification Agents -> Telegram -> Conditions 标签页。

  2. 确保里面是的。

  3. 如果你在这里设置了比如 User is xxx,那么只有那个用户播放时才会通知,其他人播放都不会通知。


总结:

90% 的概率是你完成了代理设置和 Token 填写,但是忘了在 Triggers 标签页勾选 Playback Start。快去检查一下那里!

音乐播放

最完美的方法是把“视频通知”和“音乐通知”分开

我们需要利用 Tautulli 的 Conditions (条件过滤) 功能。请跟着我做,几分钟就能搞定:


第一步:把现有的通知限制为“仅视频”

我们要把你刚才设置好的那个漂亮的通知,限制为只在播放电影和剧集时发送,避免它去干扰音乐。

  1. 打开 Tautulli -> Settings -> Notification Agents

  2. 找到你已经设置好的那个 Telegram 代理,点击编辑(铃铛图标)。

  3. 点击 Conditions (条件) 标签页。

  4. 添加一条规则:

    • Parameter (参数): 选择 Media Type

    • Operator (操作符): 选择 is not (不是)

    • Value (值): 输入 track

      (这句话的意思是:只有当播放的内容不是“单曲”时,才发送这个通知)

  5. 点击 Save


第二步:新建一个专门的“音乐通知”

现在我们需要创建一个专门用来发音乐通知的代理。

  1. Notification Agents 页面,点击 Add a new notification agent -> Telegram

  2. Configuration (配置) 标签页:

    • 填入和之前一样的 Bot TokenChat ID

    • (重要) Description (描述) 可以填:Telegram - Music (方便你区分)。

  3. Triggers (触发器) 标签页:

    • 勾选 Playback Start (开始播放)。

    • (建议不要勾选 Stop,因为听歌切歌很频繁,通知太多会很烦)

  4. Conditions (条件) 标签页:

    • 添加一条规则:

    • Parameter: Media Type

    • Operator: is

    • Value: track

      (这句话的意思是:只有播放“单曲”时,才启用这个通知)


第三步:填入专属的“音乐模板”

现在我们可以为音乐设置一套完全独立的、清爽的模板了。

  1. 切换到 Text 标签页。

  2. 找到 Playback Start,填入以下音乐专用模板

  • Subject (标题):

    Plaintext

    🎵 正在听歌
    
  • Body (内容):

    (这个模板去掉了海报,专注于歌手和专辑信息,非常整洁)

    Markdown

    🎵 **{title}**
    
    🎤 *歌手:* {artist_name}
    💿 *专辑:* {album_name}
    📅 *年份:* {year}
    👤 *用户:* {user}
    📡 *设备:* {player}
    
  1. 点击 Save


最终效果

现在你的 Tautulli 变聪明了:

  • 看电影 / 剧集时:触发第一个代理,发送带海报、评分、时长的详细海报卡片。

  • 听歌时:触发第二个代理,发送小巧精致的纯文字歌单信息,没有乱七八糟的空代码。

快去放首歌试试看!

我已经设置好啦,为什么还没有海报?前面没有分开设置的时候是有海报的啊

因为电影音乐的封面机制不同:

  • 电影 / 剧集:Plex 很多时候直接使用 TMDB 等网站的公网图片链接,Tautulli 就算不配置图床,有时候也能直接把这个公网链接发给 Telegram,所以你有时候能看到电影海报。

  • 音乐:音乐的封面通常嵌在你的音频文件里,或者存在你 NAS 的本地。Telegram 的服务器无法访问你家里的 NAS。因此,必须依靠 Cloudinary 把本地图片“搬运”到公网,Telegram 才能看到。


解决方法(请务必按顺序检查)

虽然你说“已经设置好了”,但空括号 () 铁证如山地表明 Cloudinary 的连接是不通的

第一步:检查“启用”开关 (最容易漏)

  1. 打开 Tautulli -> Settings -> 3rd Party APIs

  2. 找到 Cloudinary 区域。

  3. 关键检查:请确认 Upload Images to Cloudinary 这个复选框是打钩的。

    • 很多时候填了 API Key 但忘了打钩。

第二步:点击“验证”按钮 (决定性步骤)

  1. 在 Cloudinary 设置区域,点击那个 Verify Cloudinary (验证 / 测试) 按钮。

    • 如果弹出红色报错:说明你的 API Key/Secret 填错了,或者 Cloud Name 填错了(注意 Cloud Name 不是邮箱,是 Dashboard 里的那个名字)。

    • 如果弹出绿色 Success:说明连接通了。

第三步:重启 Tautulli (如果验证通过但依然不行)

如果你刚配置好 Cloudinary,有时候旧的缓存还在。

  1. 保存设置 (Save)。

  2. 在 Docker 管理器里重启 Tautulli 容器

第四步:备用变量测试 (如果以上都完美)

极少数情况下,某些音乐文件没有 Poster 只有 Thumb。你可以尝试修改你的音乐通知模板,把第一行改成备用变量试试:

将 []({poster_url}) 改为 []({thumb_url})

(但通常只要 Cloudinary 通了,poster_url 也是有图的)。

总结

现在的现象是 Tautulli 无法把本地音乐封面上传到公网。只要你去 3rd Party APIs 里点一下 Verify,通常就能发现问题所在(多半是 Key 填错了或者忘了打钩)。搞定这个,音乐海报就会立刻出现!

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息