Yunfi

Yunfi

tg_channel
github
email

完整的 RSS 解决方案:自建 RSSHub 与 Miniflux

前言#

什么是 RSS?#

来自 Wikipedia
RSS(英文全称:RDF Site Summary 或 Really Simple Syndication),中文译作简易信息聚合[3],也称聚合内容,是一种 消息来源 格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要信息,并选择性地点阅查看。

简单地说,就是把各种网站的更新聚合到一起查看。

为什么选择 RSS ?#

在关注多个网站的时候,如果想要检查网站有没有更新,一般需要打开每一个网站看一看。

RSS 便可以把这些信息聚合起来,在一处查看。
同时,部分网站也提供 RSS 用于监控某些变化,比如 GitHub 提供了仓库 commit 或者新 issue 等 RSS 源。

而且,在 RSSHub 这个项目的帮助下,我们可以给没有提供 RSS 的网站制作 RSS:意味着你可以用 RSS 订阅微博,B 站,知乎等社交媒体平台!

这篇文章所搭建的 RSS 系统是怎么样的?#

使用 RSS,主要要解决两个问题:订阅源阅读器

订阅源是一个链接,其中包括了文章信息,一些网站已经提供了 RSS 链接,比如 我的博客的 RSS 地址,而对于没有提供 RSS 订阅源得网站,就需要 RSSHub 来生成订阅源。

对于阅读器,现在大部分的 RSS 客户端都提供直接订阅 RSS 链接,或者可以直接使用 inoreader 这类一站式解决方案(如果你的需求免费方案即可满足,或者买得起 $9.9 / 月 的 Pro 套餐),如果你既有一些高级需求(如按正则过滤),又不想花太多钱,就可以选择自建方案,如本文要搭建的 miniflux。

安装#

前置要求#

{%note warning modern %}
如果你的服务器是中国大陆地区的,那么在没有备案的情况下,无法使用 80 或者 443 端口,也就是说不需要也不用做第二个需求。
如果还未购买云服务器,且对中国大陆的访问速度没有极高的要求,强烈不推荐购买位于中国大陆的服务器
{% endnote %}

自建 RSSHub#

什么是 RSSHub?#

RSSHub 文档:

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容

如果你没有云服务器...#

可以直接用官方示例实例 rsshub.app,不过反爬严格的路由肯定是用不了了

或者 RSSHub 提供了大量云服务的安装方法,具体参见文档。

我比较推荐的是 部署到 Vercel,因为 Railway 和 Heroku 现在不付费的体验很不好,其他的服务我也不熟悉。

这种办法的缺点就是云服务的 ip 可能比较脏,部分反爬严格的路由可能会用不了

如果不想搭建,可以直接使用我的实例:https://rsshub.yfi.moe

通过 docker-compose 部署#

如果你跟着 文档 走的话,记得去 docker-compose.yml 里看一眼,按照注释进行修改,或者直接用我提供的 docker-compose.yml

  1. 确定已经安装好了 docker 和 docker-compose,并且安装了一个反向代理工具(比如 nginx)。如果是新买的服务器,可以参考这篇文章 【Docker 系列】一个反向代理神器 ——Nginx Proxy Manager

  2. 切换到 root 用户,进入一个你喜欢的目录,比如 /root/data/docker_data/rsshub

  3. 编辑一个 docker-compose.yml 填入以下内容(这是一个最小的配置)

    version: '3'
    
    services:
        rsshub:
            image: diygod/rsshub:chromium-bundled
            restart: always
            ports:
                - '1200:1200'
            environment:
                NODE_ENV: production
                CACHE_TYPE: redis
                REDIS_URL: 'redis://redis:6379/'
            depends_on:
                - redis
    
        redis:
            image: redis:alpine
            restart: always
            volumes:
                - redis-data:/data
    
    volumes:
        redis-data:
    
  4. 创建 volume 持久化 Redis 缓存 docker volume create redis-data

  5. 检查一下 1200 端口有没有被占用,没有的话继续,有的话把上面文件里的前一个 1200 改成一个没被占用的端口

  6. docker compose up -d 然后浏览器访问 http://你的服务器ip:1200, 出现以下页面即为成功 a

    rsshub_demo

  7. 做一下反向代理

安装 Miniflux#

为什么选择 Miniflux?#

Miniflux is a minimalist and opinionated feed reader.

轻量!轻量!轻量!

主要的竞品是 Tiny Tiny RSSFreshRSS

产品优点缺点
Tiny Tiny RSS功能和插件最丰富资源占用多,更新缓慢
FreshRSS支持 XPath 抓取不支持 RSS 的网站资源占用也不小
Miniflux资源占用小,功能够用无法为每个源自定义抓取间隔

注:都是我自己用下来的感觉,不一定准确
如果你要使用 TTRSS,不建议使用官方原版,用 🐋 Awesome TTRSS

通过 docker-compose 部署 miniflux#

官方指南:Installation Instructions

  1. 切换到 root 用户,进入一个你喜欢的目录,比如 /root/data/docker_data/miniflux

  2. 新增一个如下的 docker-compose.yml

    version: '3.4'
    services:
      miniflux:
        image: miniflux/miniflux:latest
        container_name: miniflux
        ports:
          - "8880:8080"
        depends_on:
          - db
        environment:
          - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
          - POLLING_PARSING_ERROR_LIMIT=10 # 抓取失败多少次后暂时禁用源
          - POLLING_FREQUENCY=30 # 抓取间隔
          - RUN_MIGRATIONS=1
          - CREATE_ADMIN=1
          - ADMIN_USERNAME=yourname #管理员账户名称
          - ADMIN_PASSWORD=pleasechangeme #管理员密码,记得修改
          - BASE_URL=https://miniflux.yunfinibol.top
      db:
        image: postgres:15
        container_name: miniflux-db
        environment:
          - POSTGRES_USER=miniflux
          - POSTGRES_PASSWORD=secret
        volumes:
          - ./db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD", "pg_isready", "-U", "miniflux"]
          interval: 10s
          start_period: 30s
    

    更多的环境变量参见:Configuration Parameters

  3. 检查一下 8880 端口有没有被占用,没有的话继续,有的话把上面文件里的 8880 改成一个没被占用的端口

  4. 启动容器

    • 一般来说,直接 docker compose up -d 即可
    • 如果出现 miniflux 容器无法启动(docker ps -a 中,miniflux 的状态 Exited),可能是因为启动顺序的问题,可以依次启动,即可解决
    docker compose up -d db
    docker compose up -d miniflux
    
  5. 浏览器访问 http:// 你的服务器 ip:8880, 应该可以看到登陆页面

  6. 做一下反向代理

在设置 -> 设置中可以把语言改为中文,并且打开深色模式自动切换

使用#

订阅源从哪来?#

  1. 网站自带
  2. 有些人维护的 RSS (比如 feedx.net 就提供了很多新闻类的 RSS)
  3. RSSHub (看 文档

在哪看?#

如果不觉得 Miniflux 的网页简陋的话...#

直接用网页看就行!Miniflux 的网页版是支持 PWA 和移动版的,除了简陋了一点,体验很不错

其他阅读器#

Miniflux 提供多样的 API,供第三方软件使用,包括专有的 Miniflux API,以及通用的 Fever API 和 Google Reader API

Windows 平台#

可以试试 Fluent Reader,支持三种 API,建议直接使用 Miniflux

  1. 在 Miniflux 中,转到 设置 ->API 密钥,可以直接使用默认提供的账号密码的,也可以新建一个

    image-20230513001228635

  2. 打开 Fluent Reader 的设置 -> 服务,选择 Miniflux

    image-20230513000846604
  3. 端点即为网页上的 API Endpoint,剩下的填好即可

iOS 平台#

因为在 20 年初的时候 Inoreader 的推荐价值导向问题,导致大量 RSS 阅读器从国区下架,包括大量本身不提供任何内容的优秀 RSS 客户端。如果你没有外区商店账号,我推荐使用 Unread 或者 ReadKit,两者是国区商店里矮子里挑高个的佼佼者;如果你有外区账号,我强烈推荐使用 $4.99 的 Reeder 5,可以说是平衡了价格和功能的最佳选择(也有 macOS 版);如果你不仅有外区账号,还能内购付费,而且手头比较宽裕,直接用 $14.99/year 的 Fiery Feed 吧,除了贵,几乎没有缺点。

对于 ReadKit 和 Fiery Feed,它们直接支持了 Miniflux 的专有 API,设置方法和 Windows 端的 Fluent Reader 一样,剩下的可以通过 Fever API 或者 Google Reader API 阅读,设置方法大同小异,这边以 Google Reader API 配上 Reeder 做演示

  1. 在 Miniflux 中,转到 设置 -> 集成,打开 启用 Google Reader API,并且设置一个专用的用户名 / 密码,点击更新以保存

    image-20230513003215509

  2. 在 Reeder 中,点击右上角加号以新增账号,选择 Reader

    image
  3. Server 中输入 Google Reader API 端点, 用户名 / 密码使用刚刚设置的

Android 平台#

不太了解,ReadYou 还有 feedme 好像不错

尾声#

至此,一个完全由自己掌握的 RSS 系统就搭完了,但是其实 RSSHub 和 Miniflux 还有很多本文不曾提到的实用功能,大概会在之后的文章里在写吧,自己翻翻 RSSHub 的文档和 Miniflux 的设置应该就能发现一些

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。