本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。
自建 RSSHub 与 Miniflux,并且导入到阅读器中。
请看我的这篇文章:
RSS: 是什么?为什么?怎么用? | Yunfi’s Blog
使用 RSS,主要要解决两个问题:订阅源和阅读器。
订阅源是一个链接,其中包括了文章信息,一些网站已经提供了 RSS 链接,比如 我的博客的 RSS 地址,而对于没有提供 RSS 订阅源得网站,就需要 RSSHub 来生成订阅源。
对于阅读器,现在大部分的 RSS 客户端都提供直接订阅 RSS 链接,或者可以直接使用 inoreader 这类一站式解决方案(如果你的需求免费方案即可满足,或者买得起 $9.9/月 的 Pro 套餐),如果你既有一些高级需求(如按正则过滤),又不想花太多钱,就可以选择自建方案,如本文要搭建的 miniflux。
如果还未购买云服务器,且对中国大陆的访问速度没有极高的要求,强烈不推荐购买位于中国大陆的服务器
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容
—— RSSHub 文档
RSSHub 的部署文档地址:部署 | RSSHub
可以直接用官方示例实例 rsshub.app,不过反爬严格的路由肯定是用不了了
或者 RSSHub 提供了大量云服务的安装方法,具体参见文档。
我比较推荐的是 部署到 Vercel,因为 Railway 和 Heroku 现在不付费的体验很不好,其他的服务我也不熟悉。(2024-8-27 更新:目前 RSSHub 对 Vercel 的支持显示“修复中”,请点击链接查看是否有更新)
这种办法的缺点就是云服务的 ip 可能比较脏,部分反爬严格的路由可能会用不了
Tip
如果你跟着 文档 走的话,记得去 docker-compose.yml 里看一眼,按照注释进行修改,或者直接用我提供的 docker-compose.yml
确定已经安装好了 docker 和 docker-compose,并且安装了一个反向代理工具(比如 Caddy 或者 Nginx)。参考文章:Caddy —— 轻松换掉你的 Nginx 和 【Docker系列】一个反向代理神器——Nginx Proxy Manager
切换到 root 用户,进入一个你喜欢的目录,比如 /root/data/docker_data/rsshub
编辑一个 docker-compose.yml
填入以下内容(这是一个最小的配置)
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:
创建 volume 持久化 Redis 缓存 docker volume create redis-data
检查一下 1200 端口有没有被占用,没有的话继续,有的话把上面文件里的前一个 1200 改成一个没被占用的端口
docker compose up -d
然后浏览器访问 http://你的服务器ip:1200
,出现以下页面即为成功 a
做一下反向代理
Tip
> 如果想要使用 WARP 来代理以使用一些自建也被反爬的服务,可以参考我的另一篇文章来配置 RSSHub:两种方式,让 RSSHub 用上 WARP 不再推荐这种方式。
Miniflux is a minimalist and opinionated feed reader.
轻量!轻量!轻量!
主要的竞品是 Tiny Tiny RSS 和 FreshRSS
产品 | 优点 | 缺点 |
---|---|---|
Tiny Tiny RSS | 功能和插件最丰富 | 资源占用多,更新缓慢 |
FreshRSS | 支持 XPath 抓取不支持 RSS 的网站 | 资源占用也不小 |
Miniflux | 资源占用小,功能够用 | 无法为每个源自定义抓取间隔 |
Note
注:都是我自己用下来的感觉,不一定准确 如果你要使用 TTRSS,不建议使用官方原版,用 🐋 Awesome TTRSS
Note
切换到 root 用户,进入一个你喜欢的目录,比如 /root/data/docker_data/miniflux
新增一个如下的 docker-compose.yml
services:
miniflux:
image: ${MINIFLUX_IMAGE:-miniflux/miniflux:latest}
container_name: miniflux
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=chris
- ADMIN_PASSWORD=adminadmin
- BASE_URL=https://mf.yfi.moe
- POLLING_FREQUENCY=60 #每个 feed 的刷新间隔
- POLLING_PARSING_ERROR_LIMIT=0 #拉取出错后不会停止拉去,还是会按计划继续拉
- BATCH_SIZE=100 #每次拉取的 feed 数量
- POLLING_SCHEDULER=entry_frequency #拉取类型,根据上周的平均更新周期来拉取
- SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL=180 #接上条,但也不会大于 30 分钟,建议和 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 #默认,或适当加大
restart: unless-stopped
ports:
- "8880:8080"
db:
image: postgres:15
container_name: postgres
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
restart: unless-stopped
Note
更多的环境变量参见:Configuration Parameters
此 docker-compose.yml
修改自 https://v2ex.com/t/963837
检查一下 8880 端口有没有被占用,没有的话继续,有的话把上面文件里的 8880 改成一个没被占用的端口
启动容器
docker compose up -d
即可docker ps -a
中,miniflux 的状态 Exited),可能是因为启动顺序的问题,可以依次启动,即可解决docker compose up -d db
docker compose up -d miniflux
浏览器访问 <http://你的服务器 ip:8880>, 应该可以看到登陆页面
做一下反向代理
Tip
在设置 -> 设置中可以把语言改为中文,并且打开深色模式自动切换
直接用网页看就行!Miniflux 的网页版是支持 PWA 和移动版的,除了简陋了一点,体验很不错
可以试试 Fluent Reader,支持三种 API,建议直接使用 Miniflux
在 Miniflux 中,转到 设置 ->API 密钥,可以直接使用默认提供的账号密码的,也可以新建一个
打开 Fluent Reader 的设置 ->服务,选择 Miniflux
端点即为网页上的 API Endpoint,剩下的填好即可
因为在 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 做演示
在 Miniflux 中,转到 设置 ->集成,打开 启用 Google Reader API
,并且设置一个专用的用户名/密码,点击更新以保存
在 Reeder 中,点击右上角加号以新增账号,选择 Reader
Server 中输入 Google Reader API 端点
,用户名/密码使用刚刚设置的
不太了解,ReadYou 还有 feedme 好像不错
至此,一个完全由自己掌握的 RSS 系统就搭完了,但是其实 RSSHub 和 Miniflux 还有很多本文不曾提到的实用功能,大概会在之后的文章里在写吧,自己翻翻 RSSHub 的文档和 Miniflux 的设置应该就能发现一些
本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。