写在前面
RSS的根本思想其实就是:把全部想看的信息聚合到一个平台上。
本文适合人群:(满足以下其一)
每天疲于辗转各个平台查看信息
希望自动获取自己关注的新信息(博主/公众号/up主等)
想要更快获取某项第一手消息(第一时间获取还请使用更专业的监控软件)
有个人vps,乐于折腾一些奇奇怪怪的事情
本文不适合人群:
坚定的豹子头,绝对不花一分钱
注意:只是本文不适合白嫖用户,毫无疑问,不付费也能把RSS用得很好。这里这样写原因很简单,市面上的rss平台,几乎都是付费,自建也需要有vps。此外,一些平台有严格的反爬措施,需要付费购买对应的服务。如果要长期使用下去,付费我认为是不可避免的,本文也不会教你如何去白嫖相关服务。
本文仅提供一种可以实现功能的方案,说是一文搞定RSS,但是如果你的需求和本文相差很大,那么可能需要自行更改部分步骤。如有其他比较好的方案欢迎讨论。
本文涉及大部分资源可从文末百度盘获取
尊重版权,引用请表明出处,如本文存在侵权行为,请立即通知作者
搭建
既然已经有了RSS需求,那么第一步必然是选择一个合适的RSS媒介。目前可选的媒介主要分为三种:商业网站、商业软件、自行搭建。
如果只是想付费就获得一个比较好的使用体验,那么我认为前两种比较适合。但是如果有更强的个性化和自定义功能,那么自行搭建比较适合你。本文更倾向于使用软件来解决问题,因此并未过多涉及商业网站服务。并且一些知名的服务国内都已经无法访问,故此处不再赘述。
商业软件
如果你使用RSS的平台限定在windows或macos,不追求跨平台功能,那么请直接使用irreader(有windows系统vps的也可以考虑):
http://irreader.fatecore.com/
不是广告,此软件作者本人买了三年的会员,虽然现在已经弃用,但是不可否认,此软件基本是一站式解决了RSS的所有问题。其独有的自建RSS订阅源功能简单好用,软件本身的推送做得也到位。可能唯一的缺点就是跨平台:不仅没有安卓端,而且不同windows之间的同步也做得很烂。
此外,因为irreader的推送做得很好,因此可以挂在windows系统的vps中,作为服务端,通过推送功能实现全平台同步。但是本文作者家境贫寒(vps要装windows基本要求2c4g),因此作罢。
自行搭建
目前可选择的软件有很多,此处挑选了主流的三款软件:tinytinyrss、freshrss、miniflux。首先不推荐tinytinyrss,主要有两个原因,一个是它虽然名字叫tinytinyrss,但是一点都不tiny;其次它对订阅源的要求令人费解,经常一言不合就订阅失败。剩下的两个各有优缺点。
miniflux的优点是不是用PHP写的、简洁、运行流畅、网页端体验就很好。但是有一个对很多人来说很致命的缺点,那就是不能手动给不同的订阅设置不同的更新时间。
freshrss的优点自然就是相对的,功能比miniflux强,可以给不同的订阅设置不同的更新时间,并且支持Xpath1.0的方式给不直接支持RSS的网站手动编写订阅。缺点自然就是运行效率不高。
在开始之前,请先准备好一台linux系统服务器。本文中,将以ubuntu系统演示搭建过程,为了简化操作,使用docker-compose方式。linux系统的远程链接、命令行控制、安装docker和docker-compose的具体教程网上资源很多,此处省略。
Miniflux搭建
创建一个新文件夹并进入:
mkdir miniflux && cd miniflux
在你的电脑上新建一个文本文档,编写docker-compose配置文件:(可在文末百度盘下载)
version: '3'
services:
miniflux:
image: miniflux/miniflux:latest #可以看github relase页面填写最新版本
ports:
- "port:8080" #port改为你自己的端口
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- FETCH_YOUTUBE_WATCH_TIME=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=root #初始账号密码,自己设置
- ADMIN_PASSWORD=password #初始账号密码,自己设置
- POLLING_FREQUENCY=60 #抓取的时间,可以自己设置。这里因为我要拉一些严格防抓的网站,并且我对信息的即时性要求不太高,所以设置为60分钟。
- POLLING_PARSING_ERROR_LIMIT=0 #拉取出错后不会停止拉取,还是会按计划继续拉
- BATCH_SIZE=100 #每次拉取的 feed 数量
- POLLING_SCHEDULER=entry_frequency #拉取类型,根据上周的平均更新周期来拉取
- SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL=120 #接上条,但也不会大于 120 分钟,建议和 POLLING_FREQUENCY 参数一起来看
- PROXY_OPTION=all #图片代理功能,Miniflux 先把源端的图片缓存到服务器上来,后续就不用客户端去源服务器拉了
- PROXY_PRIVATE_KEY=password # 使用客户端缓存过文章,然后某个时间重启了 docker 实例,那么会导致图片无法显示的情况,这是因为每次重启会随机生成 PROXY_PRIVATE_KEY,所以可以增加参数 PROXY_PRIVATE_KEY 固化 key ,便于解决更新、重启等场景下的图片显示问题。
- DATABASE_MAX_CONNS=50 #增加数据库连接数,对于多图片的 feed 非常有效,可以大幅提升加载和访问速度
- DATABASE_MIN_CONNS=5 # 同上
- WORKER_POOL_SIZE=10 #默认,或适当加大
#http代理,需要的可以设置 name和pass是代理用户名和密码,没有的可以和后面的@一起删了
#- HTTP_CLIENT_PROXY=http://name:pass@ip:port
restart: unless-stopped
db:
image: postgres:10.1
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
volumes:
miniflux-db:
将文件及后缀名改为:docker-compose.yml。使用宝塔面板等方式,找到之前新建的文件夹(路径可能为:/root/miniflux),将docker-compose配置文件(docker-compose.yml)复制进去。
在之前新建并进入的文件夹里运行:
docker-compose up -d
看到网络创建、miniflux本体以及数据库创建,即为成功。
miniflux创建成功截图
如果想要更改配置,则先cd进文件夹中:
# 关闭 Docker 容器们
docker-compose down
# ……
# 修改 docker-compose 配置文件
# ……
# 再次开启 Docker 服务
docker-compose up -d
根据不同服务商的方式,放行对应端口。之后,进入http://你的ip:你的端口/,如果成功,就能成功显示miniflux界面。
Freshrss搭建
开始的步骤类似,但在这里注意,根据freshrss官网的建议,我们分成三个,分别为:docker-compose.yml、docker-compose-db.yml、docker-compose-local.yml。(可在文末百度盘下载)
docker-compose.yml:
version: "2.4"
volumes:
data:
extensions:
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
restart: unless-stopped
logging:
options:
max-size: 10m
volumes:
- data:/var/www/FreshRSS/data
- extensions:/var/www/FreshRSS/extensions
ports:
- "port:80" #前面的port改为你自己的端口
environment:
TZ: Asia/Shanghai #时区,见http://php.net/timezones
CRON_MIN: '3,33' #Cron job to refresh feeds at specified minutes
FRESHRSS_ENV: development
docker-compose-db.yml:
version: "2.4"
volumes:
db:
services:
freshrss-db:
image: postgres:16
container_name: freshrss-db
hostname: freshrss-db
restart: unless-stopped
logging:
options:
max-size: 10m
volumes:
- db:/var/lib/postgresql/data
environment:
POSTGRES_DB: ${DB_BASE:-freshrss}
POSTGRES_USER: ${DB_USER:-freshrss}
POSTGRES_PASSWORD: ${DB_PASSWORD:-freshrss}
command:
# Examples of PostgreSQL tuning.
# https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
# When in doubt, skip and stick to default PostgreSQL settings.
- -c
- shared_buffers=1GB
- -c
- work_mem=32MB
docker-compose-local.yml:
version: "2.4"
services:
freshrss:
ports:
- "${PUBLISHED_PORT:-port}:${LISTEN:-80}" #前面的port改为你自己的端口
复制到对应路径后:
# 开启 Docker 服务
docker-compose -f docker-compose.yml -f docker-compose-db.yml -f docker-compose-local.yml up -d --remove-orphans
# 关闭 Docker 容器们
docker-compose -f docker-compose.yml -f docker-compose-db.yml -f docker-compose-local.yml down
根据不同服务商的方式,放行对应端口。之后,进入http://你的ip:你的端口/,如果成功,就能成功显示freshrss初次引导界面,跟随引导即可。
此外,关于反代及域名访问还请自行探索。
使用
服务端设置
安装好了服务端,第一件事当然是配置服务端。此处以miniflux做主要讲解。
miniflux:进入设置,根据自身需求修改语言和时区。
本文作者使用的语言和时区
没错,这就完了。miniflux的主要设置在docker配置文件中都进行了设置,此处无法修改(修改方法见前文),这点喜欢的人说他简洁,不喜欢的人说他简陋。本文作者认为这是可以接受的。
常规的添加订阅源此处不细讲。
freshrss的使用xpath自定义订阅源是特色功能,理论上所有网页都可以通过此方法创建订阅源,然而由于编写需要一定门槛,且后文有更好的解决方式,此处仅贴上其他大神的实践过程,如果你有兴趣,可以自行研究:
https://danq.me/2022/09/27/freshrss-xpath/
客户端
windows
推荐使用Fluent Reader,原生支持minifluxapi(不要使用miniflux的fever api费二遍手续体验也不好),如果使用FreshRSS,可以使用GReader api。官网:(可在文末百度盘下载)
https://hyliu.me/fluent-reader/
以miniflux为例,操作也非常简单。
进入你的miniflux网页端,点击设置-API密钥,即可看到
此处有两种登录方式,用户名密码登录以及密钥登录,点击下面的创建一个新的密钥,即可获得如图所示密钥。
下面红框中的API Endpoint后面是你的地址,localhost代表你的ip及端口号,所以需要将:http://你的ip:你的端口/v1/ 填写到fluent中。
打开fluent,点击右上角齿轮进入设置-服务,选择miniflux。
之后如图填写后点击确认即可。
安卓
支持FreshRSS、ttrss等软件的安装端比较好找,miniflux就不好找了。上文提到的fluent reader也有安卓端,但是只支持fever api,fever api缺点众多,几乎是不能日常使用。正当我苦苦寻觅的时候,猛然间看到一个支持miniflux的阅读器,它的名字就叫“新闻”。在我一段时间的日常使用后,没有发现其明显缺点,功能虽然少,但是我想要的基本都有了。github地址:(可在文末百度盘下载)
https://github.com/bubelov/news
具体的配置方法按照软件引导即可,此处不再赘述。如果有其他支持miniflux api和GReader api的安卓应用,欢迎推荐。
macos\ios
这两个系统本文作者使用较少,仅推荐:reeder 5。
RSS源获取——自建订阅源
常规RSS订阅链接可以在支持RSS的网页中获得,以及使用一些RSS嗅探辅助。此处主要说明不提供RSS订阅链接网站的RSS链接创建。
主流网站创建RSS——RSSHub
RSSHub是一个RSS生成器,它有一个服务端,有各路大神根据不同网站编写的不同订阅规则,在不同网站上根据这些规则,生成相应的订阅源。
辅助RSSHub使用的是RSSHub Radar。它是一款浏览器插件,可应用于Chrome等谷歌内核浏览器以及火狐浏览器中,在对应的插件商店中可以找到。用户在使用时,如果在支持的网站上,打开此插件,即可获得该网站提供的RSS订阅源,或者RSSHub。同时,它可以和主流的RSS软件(miniflux、tinytinyrss、freshrss、feedly)等进行联动,一键订阅到软件中。
如上所述,RSSHub需要一个服务端,自然,你可以使用官方服务端:https://rsshub.app。然而,在一些反爬严格的网站上,官方服务端常常失效,因此我们通常选择自建或使用其他大佬建好的服务端。在搜索引擎上搜索:Welcome to RSSHub!。就能获取一些暂时能用的RSSHub服务端。但是别人搭建的自然会有失效以及隐私问题,所以自建是一个好的选择。
RSSHub的自建就方便得多:
docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=7200 -e CACHE_CONTENT_EXPIRE=14400 -e ALLOW_USER_SUPPLY_UNSAFE_DOMAIN=true diygod/rsshub
以下是部分参数解释:
docker run -d --name rsshub \
-p 1200:1200 \ #端口,可将前面的1200改为自己喜欢的
-e CACHE_EXPIRE=300 -e CACHE_CONTENT_EXPIRE=3600 \ #路由缓存过期时间以及内容缓存过期时间,单位为秒,可自行更改
-e ALLOW_USER_SUPPLY_UNSAFE_DOMAIN=true \ #便于以后可能的自己用通用规则编写订阅
diygod/rsshub
更多参数请查看官方文档:
https://docs.rsshub.app/zh/install#%E9%85%8D%E7%BD%AE
之后,进入http://你的ip:你的端口/,如果成功,则能看到如下画面:
RSSHub搭建成功
将 http://你的ip:你的端口/ 填入RSSHub Radar中的“自定义RSSHub域名”中,即可使用。
关于上面提到的通用参数,指的是只使用RSSHub就初步定制一些RSS源,具体还请移步探索:
https://blog.xlab.app/p/1209a846/#%E5%B0%8F%E5%B7%A5%E5%85%B7
自建RSS订阅源——feedless
feedless是一个根据网页内容自动创建RSS订阅源并支持自定义修改的项目,它脱胎于rssproxy。他支持个人搭建的同时,也有一个官方服务。官方服务就已经满足我们的正常使用,网址:
https://feedless.org/
进入网址后登录,点击右上角的Creat即可创建新的订阅。
在上方的空白栏填入你想要订阅的网站,此处我以https://webdevbev.co.uk/blog.html为例演示操作:
点击下面的Feeds in HTML。
可以看到左边的3个可选项,是它自动获取的可能的订阅内容。当我选择了某项时,左边对应的部分被蓝色框起来。图中我选择的是第一项,其正好框选的就是一篇篇文章(我想要的),之后点击右下角next。
在这个页面,上面的Selectors中,可以微调部分元素的位置。左下角是过滤以及全文输出,按需填写,填好了继续next。
在这一页中填写description,即可save。之后,你就能在Feeds页面找到这个订阅。
点进去即可获得对应的RSS订阅链接
如果有兴趣,也可以尝试个人搭建,官方指南:
https://github.com/damoeb/feedless/blob/master/docs/self-hosting.md
但是这里的指南貌似已经过期了,我在dokerhub上也已经找不到其中使用的镜像,希望有大神能出完美搭建的教程。因此个人搭建我更推荐它的前身rssproxy,github地址:
https://github.com/damoeb/rss-proxy
在我看来,rssproxy在功能上已经足够使用。另外还有用huginn的方法,因为操作过于复杂,感兴趣的朋友还请自己尝试。
其他网站自建RSS——第三方服务
虽然我们已经有了以上各种手段获得RSS订阅,但是仍然有部分网站是没办法订阅的,比如twitter、微信公众号等。实际这里也是有各种手段能折腾的,如果不愿或者没条件折腾,就需要付费购买第三方服务。微博大神(id:刚门里拉出个电锯)的文章(各类信息的RSS获取、处理方法)中已经收集了一些网站的RSS第三方服务提供商,由于地址在微博上,此处不好贴上。
到此,你应该已经初步了解了RSS的使用方法,并能够创建个性化RSS源并聚合了,那么,享受阅读吧!
如果文章中有纰漏,欢迎朋友们指正。如果有更好的解决方法,欢迎朋友们提出。如果遇到问题,也欢迎朋友们交流(虽然本文作者大概率无法解决)
本文所用全部资源:
度盘:/s/1QAMWFb0ER_ZwYUcUYSqdwA?pwd=mori
提取码:mori
参考资料:
2023 年,我为什么选择 Miniflux 作为 RSS 主力工具:https://v2ex.com/t/963837#reply7
rss信息流打造过程 rsshub+miniflux+fluent reader lite 腾讯云服务器部署:https://zhuanlan.zhihu.com/p/541214571
【服务器能干什么】二十分钟搭建一个属于自己的RSS服务:https://blog.laoda.de/archives/tinytinyrss/
FreshRSS官方docker指南:https://github.com/FreshRSS/FreshRSS/tree/edge/Docker
RSSHub官方中文文档:https://docs.rsshub.app/zh/
News – 支持 Miniflux 和 Nextcloud 的 RSS 阅读器[Android]:https://www.appinn.com/co-appreactor-news