距离上一篇2021 年,我为什么选择 Miniflux 作为 RSS 主力工具,已经过去两年了,依然在使用 Miniflux ,所以索性更新一下。
网上有很多 Miniflux docker 的教程,普遍比较简单,只是解决了“如何搭建”的有无问题,很多 Miniflux 的进阶玩法并没有深入去讲。今年我会结合我的配置文件,讲一下我所认识的 Miniflux ,旨在让更多的人了解并拥抱,提出更有想法的配置和建议。
Miniflux 的优点:
- 服务器自建(反代),相对 Feedly 和 Inoreader 的北美服务器,可以自由选择网络性能更为优异的线路,提高加载速度。
- 支持自定义刷新和拉取时间,避免打开 RSS 时浏览过时(半小时、几个小时前)的信息。同时还支持"entry_frequency"根据 feed 的历史更新情况动态调整拉取时间。
- 极简&纯粹,FreshRSS 、Tiny Tiny RSS 无论从界面还是功能,都太重了,而 Miniflux 恰恰是刚刚好。
- 支持图片代理,即服务器缓存图片,默认情况下,客户端是从 RSS 源头拉取的图片,这个有特殊的场景。跟第 1 点有点像。
- 支持 Google Reader/Fever API ,可以跨平台。
- 使用 WatchTower 实现 Miniflux docker 自动更新。
- Web 端支持快捷键。
- 支持全文,Miniflux 对全文的支持我觉得是最好的。
官方参考文档: https://miniflux.app/docs/configuration.html
至于客户端,智者见智,我个人使用 Reeder ,支持滑动标记已阅。另外 iOS 上的阅读器我基本都尝试过了,Reeder 首选,如果不介意”滑动标记已阅”功能,NetNewsWire 也是很好的选择,其他我就不推荐了。要么不支持 Google Reader API ,要么就是太卡,不信你试试。
体验过的平台包括不限于: 托管:Feedly 、Inoreader 、The Old Reader 、Feedbin 自建:Tiny Tiny Rss 、FreshRss
version: '3.4'
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=adminadmin //登录用户名
- ADMIN_PASSWORD=adminpassword //登录密码
- BASE_URL=https://rss.example.com //阅读器的域名
- POLLING_FREQUENCY=10 //每个 feed 的刷新间隔
- POLLING_PARSING_ERROR_LIMIT=0 //拉取出错后不会停止拉去,还是会按计划继续拉
- BATCH_SIZE=100 //每次拉取的 feed 数量
- POLLING_SCHEDULER=entry_frequency //拉取类型,根据上周的平均更新周期来拉取
- SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL=30 //接上条,但也不会大于 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:
- "127.0.0.1:8080:8080"
db:
image: postgres:15
container_name: postgres
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- /root/miniflux/root_miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
restart: unless-stopped