本地优先的内容聚合工具 Tangentry:用 Docker 在 NAS 搭私人阅读服务器

简介

什么是 Tangentry ?

Tangentry 是一个开源的本地优先的多平台内容聚合、阅读与笔记工具。它把 B站、YouTube、小红书、抖音、小宇宙播客、RSS 与网页文章收进同一个阅读器,看视频时可以读字幕、截帧做笔记、一键转录与翻译,所有数据都留在自己的电脑上。

主要特点

  • 多平台内容聚合:一个入口订阅和浏览 B站 UP 主、YouTube 频道、小宇宙播客、RSS / Atom / JSON Feed、linux.do 话题以及小红书、抖音内容,支持分组、收件箱、已读状态、定时刷新与 OPML 导入导出
  • 阅读优先:视频和播客也可以”读”——字幕跟随高亮、点击跳转、字幕内搜索、播放进度记忆;网页正文自动提取(Readability),PDF 也能在同一阅读器中打开
  • 笔记即资产:时间戳笔记、原文划线笔记、PDF 锚点、截帧附图、字幕引用、嵌套标签、全文搜索;可导出 Markdown ZIP(含 Obsidian frontmatter)
  • 转录与 AI 能力:本机转录支持 whisper.cpp / faster-whisper / Qwen3-ASR,云端支持 Groq、SiliconFlow、Cloudflare Workers AI 等;AI 助手接入任意 OpenAI 兼容接口,实现摘要、字幕与正文翻译
  • 下载能力:内置 yt-dlp + FFmpeg,支持音视频下载、队列与超时控制,Docker 镜像开箱即用
  • 本地优先与隐私:SQLite 存储在本机,无遥测、无云端账号,平台 Cookie 与 API Key 只保存在数据目录,抓取网页时拒绝访问内网地址(防 SSRF)
  • 多端运行:原生桌面应用(macOS / Windows / Linux)或 Docker 自托管,浏览器访问
  • 开源免费:基于 MIT 协议开源,可免费使用和修改

应用场景

  • 个人知识管理:把各平台的收藏、课程、讲座统一沉淀为一个可搜索、可长期留存的本地资料库,配合 Obsidian 形成第二大脑
  • 学生学习与研究者:看课程视频时用字幕阅读器逐句学习,做时间戳笔记;论文 PDF 划线批注,AI 生成摘要
  • 播客听众:小宇宙单集自动生成可阅读、可跳转的文字稿,没有文字稿的播客可一键转录
  • 家庭 NAS 用户:通过 Docker 部署在群晖等 NAS 上,全家人共用一台”内容服务器”,数据完全掌握在自己手里
  • RSS 重度用户:支持 OPML 从其他阅读器迁移,订阅分组与收件箱管理,定时自动刷新

Tangentry 是一个把”刷内容”变成”读内容、记内容”的本地优先工具,适合希望把散落各平台的内容聚合沉淀、又不愿意把数据交给云服务的用户。目前还处于早期阶段。

安装

在群晖上以 Docker 方式安装。

官方没有提供镜像,所以本文使用了第三方镜像 muzileee/tangentry,支持 linux/amd64 与 linux/arm64 多架构。

在注册表中搜索 tangentry,选择 muzileee/tangentry,版本选择 latest。

本文写作时,latest 版本对应为 v0.0.2。

反向代理

如果使用 http://<群晖IP>:7380 访问,在播放视频页面,可能会显示

所以需要通过反代,实现 https 协议访问

域名 局域网地址 备注
tgt.laosu.tech http://192.168.0.197:7380 Tangentry 的访问地址

老苏现在的架构是三层:

浏览器 → https://tgt.laosu.tech (Cloudflare) → cloudflared → http://192.168.0.197:2080 (NPM) → http://192.168.0.197:7380 (Tangentry)

还需要在 Advanced –> Custom Nginx Configuration 中增加一句

1
proxy_set_header Host $host; 

否则访问时可能会显示下面的错误

1
forbidden origin

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新建文件夹 tangentry 和 子目录
mkdir -p /volume1/docker/tangentry/data

# 进入 tangentry 目录
cd /volume1/docker/tangentry

# 修改目录权限
chmod a+rw data

# 运行容器
docker run -d \
--name=tangentry \
--restart=unless-stopped \
-p 7380:7380 \
-v $(pwd)/data:/data \
-e TZ=Asia/Shanghai \
-e TANGENTRY_PASSWORD=change-me \
muzileee/tangentry:latest

环境变量说明:TANGENTRY_PASSWORD 为服务端登录密码,不设置时首次启动会自动生成并写入容器日志与 /data/admin-password 文件;建议主动设置一个自己的密码。

docker-compose 安装

将下面的内容保存为 docker-compose.yml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
services:
tangentry:
image: muzileee/tangentry:latest
container_name: tangentry
restart: unless-stopped
ports:
- "7380:7380"
volumes:
- ./data:/data # 数据目录:SQLite、设置、凭据、缓存、下载
environment:
- TZ=Asia/Shanghai
- TANGENTRY_PASSWORD=change-me # 不设置则自动生成,见 docker logs

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 tangentry 和 子目录
mkdir -p /volume1/docker/tangentry/data

# 进入 tangentry 目录
cd /volume1/docker/tangentry

# 修改目录权限
chmod a+rw data

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker compose up -d

运行

在浏览器中访问反代后的域名 https://tgt.laosu.tech 即可进入 Web 界面。

获取登录密码:

  • 查看容器日志(docker logs tangentry,搜索 password),或读取数据目录下的 /data/admin-password 文件;
  • 如果部署时设置了 TANGENTRY_PASSWORD,直接用设置的密码

登录成功后的主界面,建议按「设置 → 添加内容 → 阅读 → 笔记」的顺序走一遍

在「设置」中完成初始配置:

  • 账号:扫码登录 B站,可获得关注动态、收藏夹同步和更高清晰度

Cookie 只保存在本机数据目录

  • AI:填写 OpenAI 兼容接口的 Base URL、Model 和 API Key(如 OpenAI、DeepSeek、硅基流动、本地 Ollama 等)

以硅基流动为例

  • 接口地址: https://api.siliconflow.cn/v1
  • API 密钥: 你在硅基流动申请的 API Key

目前硅基流动(SiliconFlow)注册就送 16 元的代金券的活动还在继续中

注册地址:

https://cloud.siliconflow.cn/i/NkUiXVhQ

  • 转录:选择本机模型(首次会下载)或填入云端转录服务的 API Key

  • 工具:yt-dlp / FFmpeg 在 Docker 镜像中已内置,可直接查看状态

通过「添加内容」粘贴 B站 / YouTube / 小红书 / 小宇宙 / 网页链接或 RSS 地址

开始阅读与记笔记

提示:B站内嵌播放器无法直接读取播放时间,如需字幕跟随与时间戳笔记精确同步,可安装项目提供的用户脚本 bilibili-sync.user.js(Tampermonkey / Violentmonkey)。

注意事项

  1. 镜像来源说明:muzileee/tangentry 并非官方 CI 自动发布。官方仓库的 docker-compose.yml 中镜像地址为占位符,需替换后才能使用
  2. 数据持久化:所有数据(SQLite 数据库、设置、凭据、缓存、下载)都保存在 /data 卷中,务必挂载;备份该目录即可完整迁移库、笔记与设置
  3. 公网暴露必须加 HTTPS:服务端模式只有一个共享密码,暴露到公网前务必在前面加 HTTPS 反向代理(Caddy / Nginx / Traefik)
  4. 升级方式:Docker 服务端不提供应用内自更新,升级时拉取新镜像并重新创建容器即可,数据卷会保留(docker compose pull && docker compose up -d)
  5. 端口冲突:7380 端口如被占用,更换左侧宿主端口即可,容器端口保持 7380 不变
  6. 早期版本风险:项目处于 0.x 阶段,接口和数据结构仍可能变化(数据库会自动迁移),生产环境使用请注意备份
  7. 平台解析失败:YouTube / B站接口经常变化,遇到无法解析或下载时,先在「设置 → 工具」中更新 yt-dlp;B站高清晰度和部分内容需要登录账号
  8. 合规提醒:工具仅供个人学习与研究使用,获取的内容版权归原平台及作者所有,请遵守各平台服务条款,不要用于批量抓取、再分发或商业用途

参考文档

mu-zi-lee/Tangentry: 沿着好奇心继续发现 —— 本地优先的多平台内容聚合、阅读与笔记工具
地址:https://github.com/mu-zi-lee/Tangentry

muzileee/tangentry - Docker 镜像 | Docker Hub
地址:https://hub.docker.com/r/muzileee/tangentry

Tangentry 环境变量参考(.env.example)
地址:https://github.com/mu-zi-lee/Tangentry/blob/main/.env.example