TIM'S BLOG

TIM'S BLOG

RSS 服务搭建

166
2023-01-03

前言

RSS 是一种古老的消息来源格式规范,用以聚合经常发布更新资料的网站。就我个人而言,RSS 的优点有:

  • 信息聚合:可以通过一个阅读器阅读所有订阅的内容;

  • 没有广告:有着较好的阅读体验;

  • 没有推荐:XXX是怎样一种体验,某小伙XXX。

然而就是因为以上优点不利于网站的盈利,如今除了一些资讯网站,大部分都是没有 RSS 订阅源的。

偶然间发现了 DIYgodRSSHub 项目,简直是给年迈的 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