RSS 服务搭建
编辑前言
RSS 是一种古老的消息来源格式规范,用以聚合经常发布更新资料的网站。就我个人而言,RSS 的优点有:
信息聚合:可以通过一个阅读器阅读所有订阅的内容;
没有广告:有着较好的阅读体验;
没有推荐:XXX是怎样一种体验,某小伙XXX。
然而就是因为以上优点不利于网站的盈利,如今除了一些资讯网站,大部分都是没有 RSS 订阅源的。
偶然间发现了 DIYgod 的 RSSHub 项目,简直是给年迈的 RSS 注入了新的生命力,真正做到了万物皆可 RSS。
服务介绍
RSSHub
RSSHub 的原理很简单:RSSHub 请求你想要的源站数据,然后把它们以 RSS 格式输出。
比如想要订阅哔哩哔哩上的某位 UP 主的动态,查阅 RSSHub 的路由文档,路由为 /bilibili/user/dynamic/:uid
,把 :uid
替换为该 UP 主的 uid
,再加上 RSSHub 的域名 rsshub.app
,一个订阅源 rsshub.app/bilibili/user/dynamic/uid
就生成了。
此外 RSSHub 还支持很多实用的参数,比如内容过滤、全文输出等,可以在通用参数文档了解具体使用方法。
手动编辑订阅源非常麻烦,可以使用 Chrome 扩展 RSSHub Radar 快速发现和订阅当前网站 RSS 和 RSSHub。
但是 RSSHub 的本质其实是一个爬虫的集合,官方的 rsshub.app
用的人多了就会触发某些网站的反爬机制,如知乎、微博等,所以最好自建来提高稳定性。
FreshRSS
有了 RSSHub 后还缺少一个云服务来进行同步和刷新。
同步:在不同客户端之间同步文章的星标、已读等状态;
刷新:RSS 的输出数量是有限的,比如某个网站的 RSS 的输出数量是 10 条,但是它一小时更新了 50 条,没有及时刷新就会漏消息。需要一个云服务进行定期刷新。
其中比较有名的是 Feedly 和 Inoreader ,好用但是需要付费和科学上网。既然 RSSHub 都自建了,索性也自建一个 RSS 云服务吧。在体验了不同的自建方案后,最后选择了 FreshRSS。
Reeder
网页端 FreshRSS 的体验已经很好了,但是在手机端的显示效果并不好。
iOS 可以使用老牌 RSS 阅读器 Reeder 国区下架配合 FreshRSS 的 API 获得非常完美的体验。
创建服务
Docker Compose 配置文件
所有服务都使用 Docker 部署,使用 Docker Compose 管理。
version: "3"
networks:
bridge_254:
ipam:
config:
- subnet: 192.168.254.0/24
services:
caddy:
image: caddy
container_name: caddy
restart: unless-stopped
networks:
bridge_254:
ports:
- 80:80/tcp
- 443:443/tcp
volumes:
- ./caddy/config:/config
- ./caddy/data:/data
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
rsshub:
image: diygod/rsshub
container_name: rsshub
restart: unless-stopped
networks:
bridge_254:
# ports:
# - 1200:1200/tcp
environment:
- DEBUG_INFO=false
freshrss:
image: freshrss/freshrss
container_name: freshrss
restart: unless-stopped
networks:
bridge_254:
# ports:
# - 80:80/tcp
volumes:
- ./freshrss/data:/var/www/FreshRSS/data
- ./freshrss/extensions:/var/www/FreshRSS/extensions
environment:
- TZ=Asia/Shanghai
- CRON_MIN=*/1
depends_on:
- caddy
- rsshub
Caddy 配置文件
Web 服务器使用 Caddy 反向代理。
rsshub.t1m2h0u.com {
encode gzip
reverse_proxy * rsshub:1200 {
header_up X-Real-IP {remote_host}
}
}
freshrss.t1m2h0u.com {
encode gzip
reverse_proxy * freshrss:80 {
header_up X-Real-IP {remote_host}
}
}
启动服务
创建并启动所有容器。
$ docker-compose up -d
等待所有容器初始化完成,即可直接访问 FreshRSS 的 Web 界面进行设置。
后记
到此所有服务都正常的启动了,试用了一段时间,体验非常的不错。
但是仔细一想,RSS 这种只关注自己感兴趣内容的方式,是不是更容易加重信息茧房?
- 0
-
分享