前言
什么是 RSS?
RSS 是一种形容和同步网站内容的格局,是应用最宽泛的 XML 利用。RSS 搭建了信息迅速流传的一个技术平台,使得每个人都成为潜在的信息提供者。公布一个 RSS 文件后,这个 RSS Feed 中蕴含的信息就能间接被其余站点调用,而且因为这些数据都是规范的 XML 格局,所以也能在其余的终端和服务中应用,是一种形容和同步网站内容的格局。
RSS 宽泛用于网上新闻频道,blog 和 wiki。应用 RSS 订阅能更快地获取信息,网站提供 RSS 输入,有利于让用户获取网站内容的最新更新。网络用户能够在客户端借助于反对 RSS 的聚合工具软件,在不关上网站内容页面的状况下浏览反对 RSS 输入的网站内容。
为什么我还是须要 RSS?
两个目标:
- 通过 RSS 和 RSS 阅读器作为高效率的 Feed 汇合器,免去每日浏览各个网站搜查信息的工夫,发现优质内容,进步浏览效率。
- 通过 RSS Feed, 获取低频但重要的信息,如重要软件更新,预报预警等。
Tiny Tiny RSS 简介
Tiny Tiny RSS 是一款基于 PHP 的收费开源 RSS 聚合阅读器。须要自行托管和部署,为基于网页的 RSS 阅读器。
RssHub 简介
RSSHub 主页
RSSHub 是一个开源、简略易用、易于扩大的 RSS 生成器,能够给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量疾速倒退中,目前已适配数百家网站的上千项内容
次要目标:
- 将非 rss 格局转换为 rss 以便订阅;正如其 slogan 所言:「🍰 万物皆可 RSS」
- 发现更多乏味的订阅源。
比方我通过 RssHub 订阅的内容有:
- 哔哩哔哩
- InfoQ 热门话题
- 本地宝焦点资讯
- 豆瓣 – 正在上映的高分电影
- 所在城区停电通知
- N 卡驱动更新
- …
它是作为一个有聚合了很多内容 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
能够替换为你 自部署 的域名
另外,如果须要订阅一些特定的内容,比方:
- bilibili 用户(我本人)关注的内容
- 微博 集体工夫线
等就须要将 RssHub 独自部署并进行配置。
部署架构
Overview
Tiny Tiny RSS 有一个公网 HTTPS 域名(如:https://ttrss.ewhisper.cn), 我间接登录该域名来进行 RSS 浏览;
Tiny Tiny RSS 订阅源能够来自:
- 反对 RSS 的网站,比方:OpenShift 博客 的对应 RSS 地址为:https://cloud.redhat.com/blog…
- 我本人部署的 RssHub, 公网 HTTPS 域名为:https://rss.ewhisper.cn
Tiny Tiny RSS
- Tiny Tiny RSS 部署在 K8S 集群的
rss
ns 里; -
基于 Awesome-TTRSS/docker-compose.yml at main · HenryQW/Awesome-TTRSS (github.com), 须要部署的组件有:
- tiny tiny rss, 须要有一个 PVC 存储,用于寄存 icon
- tiny tiny rss 的 数据库 – postgresql 13, 须要有一个 PVC 存储,用于寄存数据库数据。
- 组件都是单节点部署,不思考高可用;
- Tiny Tiny RSS 通过 Ingress + SVC 对外公布域名;
RssHub
- RssHub 部署在 K8S 集群的
rss
ns 里; -
基于 RSSHub/docker-compose.yml at master · DIYgod/RSSHub (github.com) , 须要部署的组件有:
- rsshub
- browserless chrome
- redis, 须要有一个 PVC 存储,用于寄存缓存数据。
- 组件都是单节点部署,不思考高可用;
- RssHub 通过 Ingress + SVC 对外公布域名;
前提条件
-
须要有属于本人的域名,如:
ewhisper.cn
, 具体的域名为:ttrss.ewhisper.cn
rss.ewhisper.cn
- 且该域名曾经在国内备案,80 和 443 端口能够失常应用;
- 该域名托管在 DNSPod 或相似的 DNS 供应商,能够不便地批改 DNS Record;
- 须要有对应域名的证书,本次须要有:
ttrss.ewhisper.cn
和rss.ewhisper.cn
的证书,能够是单域名证书,也能够是泛域名证书。 - 曾经搭建好 K8S 集群
- K8S 集群有 Ingress Controller
- K8S 集群有 StorageClass 或能够提供 PV 存储。(本文 K8S 集群默认提供
local-path
storageclass) - 本次 2 个域名通过 K8S Traefik 的 IngressRoute 进行配置,配置 Ingress 和 证书;
- 已装置:K8S 实用工具之五 -kompose – 东风微鸣技术博客 (ewhisper.cn), 该工具用于将
docker-compose.yml
疾速转换为 K8S yaml
📚️ Reference:
能够通过 cert-manager 为 dnspod 在 Letsencrypt 上申请收费证书:
- 应用 cert-manager 为 dnspod 的域名签发收费证书 | 作者 roc
施行
Tiny Tiny RSS 搭建
其 docker-compose.yml
在这里:
Awesome-TTRSS/docker-compose.yml at main · HenryQW/Awesome-TTRSS (github.com),
1. 批改 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)
2. 应用 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).
-
Tiny Tiny Rss
- Deployment:
service-rss-deployment.yaml
(🐾这里还须要增加一个 ENV: DB_HOST, 以通过 DB SVC 拜访 DB) - Service:
service.rss-service.yaml
(用于对接 Ingress, 对外提供服务) - IngressRoute:
ingress-rss-service.yaml
- Deployment:
-
DB – PostgreSQL
- Deployment:
database-postgres-deployment.yaml
- SVC:
database.postgres-service.yaml
(Tiny Tiny Rss 通过该 SVC 连贯到 DB) - PVC:
database-postgres-claim0-persistentvolumeclaim.yaml
(申请长久化存储)
- Deployment:
-
其余服务 – opencc
- Deployment:
service-opencc-deployment.yaml
- Service:
service-opencc-deployment.yaml
- Deployment:
-
其余服务 – mercury
- Deployment:
service-mercury-deployment.yaml
- Service:
service.mercury-service.yaml
- Deployment:
具体的 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)》
3. 部署
应用 kubectl
部署:
kubectl -n rss create -f ./k8s/
4. 配置 DNS Record
在 DNS 提供商控制台(本例为 DNSPod) 配置对应域名 <ttrss.ewhisper.cn> 的 DNS Record:
- ttrss, A 记录,指向 K8S 集群 Ingress 对应的公网地址
5. 拜访验证
拜访首页:https://ttrss.ewhisper.cn/ , 默认账户:admin
明码:password
,请第一工夫更改。
成果如下:
RssHub 搭建
RssHub 搭建的步骤简直和 Tiny Tiny RSS 一样。具体如下:
1. 批改 docker-compose
应用 kompose
转换,转换前,须要在 docker-compose.yml
补充相干信息以保障转换 k8s service 胜利,具体为在各个 docker compose 的 service 里加上 ports
字段。
2. 应用 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:
rsshub-deployment.yaml
- Service:
rsshub-service.yaml
(用于对接 Ingress, 对外提供服务) - IngressRoute:
rsshub-ingress.yaml
- Deployment:
-
Browserless – Chrome
- Deployment:
browserless-deployment.yaml
- SVC:
browserless-service.yaml
(RssHub 通过该 SVC 连贯到 Browserless)
- Deployment:
-
Redis
- Deployment:
redis-deployment.yaml
- Service:
redis-service.yaml
- PVC:
redis-data-persistentvolumeclaim.yaml
- Deployment:
具体的 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)》
3. 部署
应用 kubectl
部署:
kubectl -n rss create -f ./k8s/
4. 配置 DNS Record
在 DNS 提供商控制台(本例为 DNSPod) 配置对应域名 <rss.ewhisper.cn> 的 DNS Record:
- rss, A 记录,指向 K8S 集群 Ingress 对应的公网地址
5. 拜访验证
如果看到这个页面,证实曾经部署胜利:
能够通过 TTRss 的页面订阅 RssHub 的源来验证 RssHub 是否失常运行,如下图:
点击订阅后胜利,如下图:
证实 RssHub 曾经失常运行。
🎉🎉🎉
总结
通过如上的配置,咱们能够通过本人的基于浏览器的 Tiny Tiny RSS 阅读器来订阅并浏览音讯,并能够通过 RssHub 来将各种各样的信息转换为可订阅的 Rss 路由。
参考资料
- rss(繁难信息聚合)_百度百科 (baidu.com)
- 介绍 | RSSHub
- 🐋 Awesome TTRSS | 🐋 Awesome TTRSS (henry.wang)
三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.