SaturdayClub

SaturdayClub

生产力 | 使用TTRSS和RSSHub打造个人RSS阅读器的详细步骤

242
2023-03-10
生产力 | 使用TTRSS和RSSHub打造个人RSS阅读器的详细步骤

前言

最近重新部署博客的时候,把之前的ttrss服务也重装了一下,想着也用了这么长时间,重新记录一下它和rsshub的结合使用。


一、什么是RSS

如果你是一个不喜欢在各平台间辗转腾挪、或是不喜欢一味地只看被推荐的内容,那你大概率会接触到 RSS

所谓的 RSS(Really Simple Syndication) 实际是一种用于Web内容发布和分发的XML格式标准。它的主要作用是帮助用户通过订阅RSS源来获取他们感兴趣的网站的最新内容更新,无需手动浏览多个网站。

最早在1997年, Dave Winer 开发了一种称为“网站摘要”(weblog syndication)的技术,可以帮助博客作者将其内容发布到多个网站上。

到2002年,Rael Dornfest 和 Aaron Swartz 共同开发了 RSS 2.0,对RSS做了进一步的标准化,增加了RSS的扩展性和互操作性。

这种协议的出现是门户网站时代的潮流,RSS协议的支持可以帮助各类web网站或者博客进行更好地内容分发。如果你的网站支持RSS,用户或者其他大型平台就可以通过一个链接直接订阅,当你发布后续内容,订阅的用户或平台就可以直接获得相对应的内容,让你的内容不会轻易被错过。对应的,用户也会需要一些产品帮助他们订阅不同的RSS源,实现在一个地方阅读不同来源的内容,这就RSS阅读器和聚合器。

随着社交媒体和移动应用的普及,互联网内容的生态越来越中心化,RSS的应用范围逐渐减少。不过一些新的博客和新闻网站还仍然提供着RSS源,许多RSS阅读器和聚合器仍在活跃,如 Feedly、Inoreader 和 Flipboard 等。


二、TTRSS和RSSHub

2.1 RSSHub——万物皆可RSS

上文也提到了,移动互联网时代内容中心化比较严重,除了一些博客和新闻还有RSS之外,一些常用的资讯媒体、社交动态等内容缺少RSS协议,无法进行订阅,这就使得习惯使用RSS的用户,必须在集中场景阅读或更多感兴趣的内容间二选一。

RSSHub 就是用被打造来解决这个问题的,它可以将一些不支持RSS的平台内容,生成RSS订阅源。

RSSHub 的实现方式类似于一个中间件,它连接了各种网站和用户,通过提供标准的RSS或Atom格式数据,使得用户可以方便地获取各种网站的内容更新。

当然互联网各类平台千姿百态,不存在一种系统直接连接不同平台并处理不同格式的内容。

RSSHub 无法支持所有内容平台,它能够订阅的平台依托于社区的维护,你可以依据 RSSHub 规范,来自己设计并开发支持其他平台内容的RSS源生成规则,并将它提交到社区,其他用户通过升级 RSSHub 服务便可获得新的规则。

通过这种社区共建的方式,RSSHub 已经支持了市面上多种常见的社区、论坛、政务系统等互联网平台。

2.2 TTRSS——属于你的RSS聚合器

RSSHub解决了RSS订阅源缺失的问题,此时你离加入RSS大军的脚步就只剩一款心仪的,阅!读!器!

RSS阅读器和聚合器经常被一起提起,二者稍微有点区别,主要在于它们的聚合范围和使用方式。RSS阅读器更注重单个用户对于不同订阅源的管理和阅读,而RSS聚合器更注重对于多个用户对于多种订阅源的汇总和统一管理。在商业产品里,这二者基本被结合在一起。

现在商业比较成熟的RSS阅读器有 Feedly、Inoreader 和 Flipboard 等,它们经过多年打磨,相对来说界面友好、功能丰富,大都可以订阅各种RSS源、博客和社交媒体,支持Web、移动应用和浏览器扩展等多端,支持离线阅读和同步。

唯一的缺点是:免费版功能有限,付费订阅费用较高。(贫穷是我的原罪)

TTRSS(TinyTinyRSS)就是解决我等贫穷人民的平价替代品,它是一款基于PHP的免费开源的RSS聚合阅读器,有完整的web前后台,支持多账户,有较为完整的订阅、管理、阅读和同步功能,既可以通过网页直接浏览订阅的内容,也可以同步到其他移动端阅读器进行多端阅读。


三、完整的服务框架

总的来说,你可以使用 RSSHub 来为没有RSS订阅源的网站生成订阅源,通过 TTRSS 聚合和管理这些订阅源的内容,并通过一些插件来实现在多端阅读,享受完整的自有信息阅读。


四、服务部署

首先准备台服务器,如果你需要比较完全的访问,最好有个域名。

这里需要注意一下,如果你需要通过 RSSHub 获取境外的一些内容,那么建议最好使用香港或是其他境外服务器来部署 RSSHub 服务,否则使用境内的服务器可能需要进行复杂的代理设置才能正常通过 RSSHub 连接到相关内容。

此外你也要了解一下你使用服务器的系统常用的指令,比如我的是 Debian10,如果你的系统是 Ubunt 或 CentOS 等,可能在部署的时候某些指令会存在一些差异。

由于这两个产品都是比较成熟的开源项目,项目文档也很详细,这里只简单介绍一下我的部署流程。

4.1 Docker Compose的安装

我个人习惯使用 docker compose 进行服务的部署,一方面运维的技能有限,docker compose 的配置和调整相对方便,另一方面,docker compose 的指令简单完善,有啥错误移除服务非常方便……

在这里就不详细介绍 docker 和 docker compose 了,仅简要记录一下如何安装 docker compose。

安装docker

  • 使用官方提供的安装脚本可以一键安装 docker

curl -fsSL https://get.docker.com/ | sh

如果安装较慢时可以使用国内的 daocloud 的一键安装脚本:

curl -sSL https://get.daocloud.io/docker | sh
  • 启动docker

sudo systemctl start docker	
  • 查看docker状态

sudo systemctl status docker

如果出现如下结果说明服务正常运行:

安装 docker compose

  • 使用一键脚本安装 docker compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

将 docker compose 安装完成后,基础的准备就结束了。后面就可以通过 docker compose 服务快速安装 RSSHub 和 TTRSS 服务。

4.2 部署RSSHub服务

详细的部署和配置在官方文档里,我这里也只是简单说明一下如何通过 docker-compose 配置。

  • 首先创建个文件夹,我一般放在opt里

mkdir /opt/rsshub && cd /opt/rsshub
  • 然后通过外链下载官方的 docker-compose 文件

wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml

下载完成后就会在文件夹里看到yml文件,通过vim或其他方式打开基本如下。需要记住的是默认端口为1200,后续使用ip直接访问,或进行反代都需要它。

  • 创建数据卷&启动服务

docker volume create redis-data
docker-compose up -d

等待拉取和部署完成,使用 docker ps 指令查看一下 docker 服务,如下,rsshub跑起来了就ok。

  • 访问

此时,rsshub 的服务已经跑起来,通过浏览器使用 ip:端口号 就能直接访问,一般会出现一个项目介绍页。

如果需要域名反代的话,可以通过 nginx,但相对比较麻烦,我推荐使用更简单的 caddy,可以参考我的另一篇文章 使用Caddy进行域名反代并自动申请ssl》。

此时,通过 RSSHub 就可以根据社区的路由配置获取想要的内容rss链接了,具体的操作方式在后文介绍,我们先来看一下TTRSS的部署。

4.3 部署 TTRSS

TTRSS原版安装起来相对复杂,相对而言,一些大佬将其进行「容器化」改造,支持一站式部署和管理,这就是 Awesome TTRSS !

在这里还是一样使用 docker-compose 部署 Awesome TTRSS。

  • 首先创建个文件夹

mkdir /opt/ttrss && cd /opt/ttrss
  • 然后通过外链下载官方的 docker-compose 文件

wget docker-compose.yml https://raw.githubusercontent.com/HenryQW/Awesome-TTRSS/main/docker-compose.yml
  • 部署配置。打开文件,可以看见内部有四个镜像,需要调整的主要在TTRSS和PostgreSQL数据库。

    • 默认的端口是5432,可以自定义需要的;

    • 需要确保第7和23行两处的数据库密码相同;

    • 如果你想通过域名访问,后续也可以设置反代,需要设置 第18行,SELF_URL_PATH 为自己的域名;

    • 为了保持数据的持久化,建议第9行的挂载目录,把 ~/postgres 改为 ./postgres ,数据就一直保持保存在ttrss文件夹里了。

  • 保存文件修改后,启动服务。查看服务状态还是一样 docker ps

docker-compose up -d
  • 浏览器使用域名或者 ip:端口 访问,页面展示登录入口就是正常的。

初始账户和密码分别是 adminpassword ,进入网站后可以在偏好设置里修改。

至此 RSSHub 和 TTRSS 的部署结束,后面我们来聊聊具体的使用方法。


五、食用教程

5.1 使用 RSSHub 获取订阅源

RSSHub 的社区文档的「路由」板块详细记录了支持的订阅源,以及具体的组织方式。

以 bilibili 番剧为例,个人的订阅源是你部署服务的域名(或ip+端口)+路由,比如官方的服务域名是 https://rsshub.app ,路由是 /bilibili/bangumi/media/:mediaid ,那么拼在一块 https://rsshub.app/bilibili/bangumi/media/9192/ 就是官方RSSHub服务生成的订阅源,访问链接可以得到具体的内容,如下:

不同的信息源可能需要不同的路由配置,具体参考社区文档中的说明。官方服务本身就可以订阅使用,但因为访问人数较多,经常出现部分路由被内容来源完整封禁的问题,建议有能力的还是自己部署服务。

5.2 TTRSS内容管理和阅读

进入 TTRSS,点击右上角更多选项,选择「订阅信息源」:

将需要的订阅源粘贴进输入框,保存并解析后就可以获得订阅内容:

这里推荐将界面布局调整显示为 Switch to combined viewDisable widescreen mode 在网页上分屏显示标题和内容,浏览体验非常不错:

对 TTRSS 的阅读界面、信息源分类、账户信息等设置,都在「偏好设置」里,可以自己按需调整试试。如果需要在移动端阅读,这里安卓推荐使用FeedMe,是一款免费开源的RSS阅读器,支持TTRSS账号同步,使用前记得在偏好设置里开启【启用API】,并配置好Fever Emulation,详情就不赘述了,请尽情探索和享用RSS的乐趣吧!