RSS 是一种描述和同步网站内容的格式,是使用最广泛的 XML 应用。RSS 搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个 RSS 文件后,这个 RSS Feed 中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的 XML 格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。
RSS 广泛用于网上新闻频道,blog 和 wiki。使用 RSS 订阅能更快地获取信息,网站提供 RSS 输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持 RSS 的聚合工具软件,在不打开网站内容页面的情况下阅读支持 RSS 输出的网站内容。
两个目的:
Tiny Tiny RSS 是一款基于 PHP 的免费开源 RSS 聚合阅读器。需要自行托管和部署,为基于网页的 RSS 阅读器。
RSSHub 主页
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容
主要目的:
将非 rss 格式转换为 rss 以便订阅;正如其 slogan 所言:「🍰 万物皆可 RSS」
发现更多有趣的订阅源。
比如我通过 RssHub 订阅的内容有:
它是作为一个有聚合了很多内容 RSS 源的仓库来使用。
📚️ Reference:
比如我希望订阅 Twitter 上一个名为 DIYgod 的用户的时间线
根据 Twitter 用户时间线路由 的文档,路由为
/twitter/user/:id
,把:id
替换为用户名,得到路径为/twitter/user/DIYgod
,再加上域名https://rsshub.app
,一个订阅源就生成了:https://rsshub.app/twitter/user/DIYgod(opens new window)然后我们可以把 https://rsshub.app/twitter/user/DIYgod 添加到任意 RSS 阅读器(当然也可以是 Tiny Tiny RSS) 里来使用
其中域名
https://rsshub.app
可以替换为你 自部署 的域名
另外,如果需要订阅一些特定的内容,比如:
等就需要将 RssHub 单独部署并进行配置。
Tiny Tiny RSS 有一个公网 HTTPS 域名(如:https://ttrss.ewhisper.cn), 我直接登录该域名来进行 RSS 阅读;
Tiny Tiny RSS 订阅源可以来自:
rss
ns 里;rss
ns 里;ewhisper.cn
, 具体的域名为:
ttrss.ewhisper.cn
rss.ewhisper.cn
ttrss.ewhisper.cn
和 rss.ewhisper.cn
的证书,可以是单域名证书,也可以是泛域名证书。local-path
storageclass)docker-compose.yml
快速转换为 K8S yaml📚️ Reference:
可以通过 cert-manager 为 dnspod 在 Letsencrypt 上申请免费证书:
- 使用 cert-manager 为 dnspod 的域名签发免费证书 | 作者 roc
其 docker-compose.yml
在这里:
Awesome-TTRSS/docker-compose.yml at main · HenryQW/Awesome-TTRSS (github.com),
docker-compose
有 2 个地方需要修改:
SELF_URL_PATH=https://ttrss.ewhisper.cn/
(你自己的域名)DB_PASS=changeit
(postgresql 数据库密码)kompose
转换,转换前,需要在 docker-compose.yml
补充相关信息以保证转换 k8s service 成功,具体为在各个 docker compose 的 service 里加上 ports
字段。docker-compose.yml
修改的内容见这里:version: "3" services: service.rss: environment: - SELF_URL_PATH=https://ttrss.ewhisper.cn/ # please change to your own domain - DB_PASS=changeit # use the same password defined in `database.postgres` ... service.mercury: ports: - 3000:3000 ... service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page ports: - 3000:3000 ... database.postgres: environment: - POSTGRES_PASSWORD=changeit ports: - 5432:5432
为方便查看,相关的 yaml 文件都放在这里了:east4ming/rsshub-ttrss-k8s-deploy (gitee.com)
修改后的 docker-compose.yml
在这里查看:ttrss/docker-compose.yml · east4ming/rsshub-ttrss-k8s-deploy - 码云 - 开源中国 (gitee.com)
kompose
转换命令如下:
在 docker-compose.yml
所在目录下执行:
kompose convert -o ./k8s/ --pvc-request-size 2Gi
📝 Note:
--pvc-request-size 2Gi
按需调整。
转换后,目录结构如下:(转换后还会生成 NetWorkPolicy 文件,个人认为没必要,就删除掉了相关文件和 label; 另外,生成的文件中有的 字段包含 .
, 以防万一,都替换为了 -
):
└── ttrss ├── docker-compose.yml └── k8s ├── database-postgres-claim0-persistentvolumeclaim.yaml ├── database-postgres-deployment.yaml ├── database.postgres-service.yaml ├── feed-icons-persistentvolumeclaim.yaml ├── service-mercury-deployment.yaml ├── service-opencc-deployment.yaml ├── service-rss-deployment.yaml ├── service.mercury-service.yaml ├── service.opencc-service.yaml └── service.rss-service.yaml
除此之外还需要手动创建一个 ingress, 用于对外暴露服务(这里用的是 Traefik CRD - IngressRoute).
service-rss-deployment.yaml
(🐾这里还需要添加一个 ENV: DB_HOST, 以通过 DB SVC 访问 DB)service.rss-service.yaml
(用于对接 Ingress, 对外提供服务)ingress-rss-service.yaml
database-postgres-deployment.yaml
database.postgres-service.yaml
(Tiny Tiny Rss 通过该 SVC 连接到 DB)database-postgres-claim0-persistentvolumeclaim.yaml
(申请持久化存储)service-opencc-deployment.yaml
service-opencc-deployment.yaml
service-mercury-deployment.yaml
service.mercury-service.yaml
具体的 K8S yaml 内容见这里:ttrss/k8s · east4ming/rsshub-ttrss-k8s-deploy - 码云 - 开源中国 (gitee.com)
📝 Note:
ttrss/k8s/ingress-rss-service.yaml · east4ming/rsshub-ttrss-k8s-deploy - 码云 - 开源中国 (gitee.com) 的配置沿袭于我的另一篇文章:《基于 Traefik 的激进 TLS 安全配置实践 - 东风微鸣技术博客 (ewhisper.cn)》
使用 kubectl
部署:
kubectl -n rss create -f ./k8s/
在 DNS 提供商控制台(本例为 DNSPod) 配置对应域名 <ttrss.ewhisper.cn> 的 DNS Record:
访问首页:https://ttrss.ewhisper.cn/ , 默认账户:admin
密码:password
,请第一时间更改。
效果如下:
RssHub 搭建的步骤几乎和 Tiny Tiny RSS 一样。具体如下:
docker-compose
使用 kompose
转换,转换前,需要在 docker-compose.yml
补充相关信息以保证转换 k8s service 成功,具体为在各个 docker compose 的 service 里加上 ports
字段。
kompose
转换命令如下:
在 docker-compose.yml
所在目录下执行:
kompose convert -o ./k8s/ --pvc-request-size 2Gi
📝 Note:
--pvc-request-size 2Gi
按需调整。
转换后,目录结构如下:
. ├── docker-compose.yml └── k8s ├── browserless-deployment.yaml ├── browserless-service.yaml ├── redis-data-persistentvolumeclaim.yaml ├── redis-deployment.yaml ├── redis-service.yaml ├── rsshub-deployment.yaml └── rsshub-service.yaml 1 directory, 8 files
除此之外还需要手动创建一个 ingress, 用于对外暴露服务(这里用的是 Traefik CRD - IngressRoute).
rsshub-deployment.yaml
rsshub-service.yaml
(用于对接 Ingress, 对外提供服务)rsshub-ingress.yaml
browserless-deployment.yaml
browserless-service.yaml
(RssHub 通过该 SVC 连接到 Browserless )redis-deployment.yaml
redis-service.yaml
redis-data-persistentvolumeclaim.yaml
具体的 K8S yaml 内容见这里:rsshub/k8s · east4ming/rsshub-ttrss-k8s-deploy - 码云 - 开源中国 (gitee.com)
📝 Note:
rsshub/k8s/rsshub-ingress.yaml · east4ming/rsshub-ttrss-k8s-deploy - 码云 - 开源中国 (gitee.com) 的配置沿袭于我的另一篇文章:《基于 Traefik 的激进 TLS 安全配置实践 - 东风微鸣技术博客 (ewhisper.cn)》
使用 kubectl
部署:
kubectl -n rss create -f ./k8s/
在 DNS 提供商控制台(本例为 DNSPod) 配置对应域名 <rss.ewhisper.cn> 的 DNS Record:
如果看到这个页面,证明已经部署成功:
可以通过 TTRss 的页面订阅 RssHub 的源来验证 RssHub 是否正常运行,如下图:
点击订阅后成功,如下图:
证明 RssHub 已经正常运行。
🎉🎉🎉
通过如上的配置,我们可以通过自己的基于浏览器的 Tiny Tiny RSS 阅读器来订阅并阅读消息,并可以通过 RssHub 来将各种各样的信息转换为可订阅的 Rss 路由。
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.