RSS Fever API 服务搭建避坑指南(FreshRSS + Fluent Reader, 2024年最新可用教程)

1. 适用人群

  1. 需要通过 RSS 主动获取来自订阅源的信息,并且希望在多个设备上实现订阅源共享;
  2. 拥有一台云服务器,并安装了 Linux 系统;
  3. 能够访问谷歌。

注意,这不是一篇非常详细的教程,对于教程中涉及的程序(如 FreshRSS),官方和用户分别提供了充足的配置资料和经验分享,我会避免直接搬运它们,但会提供资料的 URL 。我想观众跟我一样,配置自建 RSS 服务器的初衷是为了更直接地获取 “我想得到的” 信息,作为一个信息聚合工具,花费太多时间、踩太多坑没有必要,希望本文能够给你节约时间。

2. 最短路径(推荐)

非常推荐一款优秀的在线 RSS 阅读器:QiReader,它是免费的(邮件发送 PDF 进阶服务除外):

https://www.qireader.com
https://www.qireader.com.cn

作为一份避坑指南,直接使用 QiReader 是最快捷的方案,
这是一款渐进式Web应用程序(PWA),它能够在多端满足上述需求,安装步骤非常简单。

2.1 关于为什么我不使用 TTRSS (Tiny Tiny RSS, Awesome TTRSS)

我在使用 Fluent Reader 1.1.4 (文章发布时的最新版本)时,通过 Fever API 连接,报错日志如下:

附两个 issues 的链接:

https://github.com/HenryQW/Awesome-TTRSS/issues/442
https://github.com/DigitalDJ/tinytinyrss-fever-plugin/issues/30

目前我没能解决这个问题,如果你能解决,推荐使用 TTRSS 并移步至对应教程。同时,期待你的经验分享。

3. 在服务器上安装 FreshRSS

完整的 docker 和 FreshRSS 的安装步骤请移步官方文档:

https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/README.md

以下步骤节选自官网文档,也是我自己搭建的步骤:

  1. 安装 Docker
apt install docker-compose
  1. 快速启动
docker run -d --restart unless-stopped --log-opt max-size=10m \
  -p 8080:80 \
  -e TZ=Asia/Shanghai \
  -e 'CRON_MIN=1,31' \
  -v freshrss_data:/var/www/FreshRSS/data \
  -v freshrss_extensions:/var/www/FreshRSS/extensions \
  --name freshrss \
  freshrss/freshrss

可能需要修改的参数:

  • -p 映射在宿主机上的端口,也就是外部访问的端口,默认为 8080
  • -e TX=? 时区 ( 默认是 UTC,中国时间可以设置为 Asia/Shanghai,可以安装后在设置中修改)
  • -e 'CRON_MIN=?' 计划任务的参数,用来配置刷新订阅源(Refresh Feeds)的时间间隔,默认是1,31,表示在一个小时的第1分钟和第31分钟刷新(即间隔半个小时)。

由此,容器成功启动,转到 服务器IP:8080 进行网页端的 FreshRSS 阅读器配置。

3.1 问题:添加来自 RSSHub 的订阅源,订阅失败(超时)

比较可能的一种情况是你的服务器无法访问谷歌,可以参照 RSSHub 文档中的 “公共实例”:

https://docs.rsshub.app/zh/guide/instances

把订阅源链接中的 rsshub.app 替换成其他 URL,其中的一些 URL 是无需访问谷歌(对,谷歌)的。

你可能需要逐个试试。

4. 使能 Fever API

在 FreshRSS 网页端中,鼠标悬浮到右上角齿轮,找到 “管理” 一栏的 “认证” ,
勾选 “允许 API 访问”,提交。

接着,在左侧菜单栏 “账户” 下找到 “API 管理”,在此,你需要输入一个用于访问该 API 的密码,它与 FreshRSS 的用户登录密码是独立的。

提交密码后,点击下方的链接,即可在弹出页面中查看 Fever API 的地址。

接下来,在 RSS 阅读器(以 Fluent Reader 为例)中,打开 “设置” - “服务”,选择类型为 Fever API,在 “端点” 中填入上述的 Fever API Address,密码为刚才设置的 API 密码,即可完成配置。

问题:4.1 API 连接成功,但 Fluent Reader 没有按照分组导入订阅源

这是一个小问题,如下图点击导入分组即可。

5. 配置 FreshRSS 定时刷新

若你按照 3 中的步骤完成了 Docker 和 FreshRSS 的安装,并正确配置了CRON_MIN参数,通常来说是已经实现了定时抓取的。如果你发现没有自动刷新(我遇到了这个情况),则可能需要手动配置。

5.1 确保容器中的 cron 服务处于运行状态*

这是一个隐藏大坑,你可能完成了后续配置,但到最后才发现 cron 服务其实是没有运行的,请速进入 FreshRSS 容器确认其状态:

docker ps

找到 FreshRSS 的容器 id,进入容器,接下来的步骤默认都在容器中完成:

docker exec -it :CONTAINER_ID /bin/bash

在容器的 Debian 12 系统中,你应该这样查询 cron 的状态

service cron status

若返回的不是 cron is running.,重启 cron 服务

service cron restart

5.2 通过 cron 配置定时自动刷新计划(非必要)

如果你确认 cron 服务正常运行,但仍然没有自动刷新,那可能需要重新配置,
FreshRSS 提供了配置自动刷新 Feeds 的步骤,着急可以不看

https://freshrss.github.io/FreshRSS/en/users/09_refreshing_feeds.html#automatic-update-with-cron

可以如法炮制一条 cron 表达式 :

*/20 * * * * php /var/www/FreshRSS/app/actualize_script.php >> /var/log/cron.log 2>&1

它表示每 20 分钟执行一次后面的命令,为了确保路径无误,你可以先尝试执行一次命令:

php /var/www/FreshRSS/app/actualize_script.php

但是,不要把这条表达式直接输入到 bash 中执行,正确的做法是编辑 crontab 文件,将它插入到文件尾

crontab -e

我在执行这条命令后,以提示没有安装任何文本编辑器告终。
如果你也一样,请安装一个 nano 或者 vim。这时配置镜像能让下载速度更快:

https://mirrors.tuna.tsinghua.edu.cn/help/debian/

如果你不打算配置镜像,那么安装一个 nano 会更快

apt install nano

重新编辑 crontab 文件,选择 nano 作为编辑器,将刚刚的表达式插入到该文件,并保存

crontab -e

若是第一次修改该文件,可能需要命名,这里保持默认命名即可。
查看该 cron 任务是否被正确添加:

crontab -l

若回显了你插入的 crontab 表达式,即说明该计划任务配置完成。你可以在上述cron.log文件中查看执行的日志。

热门相关:绝宠小医妃:王爷,来一针   娇妻太甜:禁欲总裁,别太急   傲天弃少   美食萌后:皇上,喂不饱!   如意小郎君