Miniflux 自建 RSS 阅读器:Docker 部署打造个人信息流
痛点:信息太多,被算法推送绑架了
刷今天的信息流——微博、抖音、公众号——每个平台都在用算法告诉你「该看什么」。
- 想看的创作者内容可能根本刷不到
- 广告和推荐内容占了大半屏幕
- 关注的博客、技术网站更新了也不知道
- Feedly / Inoreader 免费版限制订阅数,还要登录第三方账户
有没有一个方案:自己搭 RSS 服务器,订阅自己想看的内容,没有任何算法和广告?
Miniflux 就是答案。
Miniflux 是什么?
Miniflux 是一个用 Go 编写的极简 RSS/Atom 阅读器。它的核心理念是简单——单文件部署,一个二进制包含全部功能。
核心指标:
| 指标 | 数据 |
|---|---|
| ⭐ GitHub Stars | 9.4k |
| 🐹 语言 | Go(100%) |
| 📦 最新版 | v3.0(2026-07 活跃开发中) |
| 📄 许可证 | Apache-2.0 |
| 🐳 Docker 镜像 | miniflux/miniflux |
为什么选 Miniflux?
| 特性 | Miniflux | Feedly | Inoreader | FreshRSS |
|---|---|---|---|---|
| 部署方式 | 单文件 🏆 | SaaS | SaaS | PHP+MySQL |
| 免费订阅数 | 无限制 🏆 | 100 个 | 150 个 | 无限制 |
| 数据库 | PostgreSQL | 云端 | 云端 | MySQL/PostgreSQL |
| 广告 | 无 🏆 | 有(免费版) | 有(免费版) | 无 |
| API 支持 | ✅ 完整 REST API | ✅ | ✅ | ✅ Fever/Google Reader |
| 第三方客户端 | ✅ Reeder/Netscape等 | ✅ | ✅ | ✅ |
| 自定过滤规则 | ✅ 关键词+正则 🏆 | ❌ | ❌ | ✅ |
| 全文抓取 | ✅ | ✅(付费) | ✅(付费) | 插件 |
| 开源 | ✅ Apache-2.0 🏆 | ❌ | ❌ | ✅ AGPL |
结论: Miniflux = 无限制订阅 + 纯净阅读 + 高性能 + 极低资源占用。
Docker 部署 Miniflux
前置依赖:PostgreSQL
Miniflux 需要 PostgreSQL 作为数据库。
version: "3.8"
services: postgres: image: postgres:16-alpine container_name: miniflux-db environment: - POSTGRES_USER=miniflux - POSTGRES_PASSWORD=your-strong-password - POSTGRES_DB=miniflux volumes: - ./pgdata:/var/lib/postgresql/data restart: unless-stopped
miniflux: image: miniflux/miniflux:latest container_name: miniflux ports: - "8080:8080" environment: - DATABASE_URL=postgres://miniflux:your-strong-password@postgres/miniflux?sslmode=disable - RUN_MIGRATIONS=1 # 首次启动自动建表 - CREATE_ADMIN=1 # 创建管理员账号 - ADMIN_USERNAME=admin - ADMIN_PASSWORD=your-admin-password - POLLING_FREQUENCY=15 # 每 15 分钟检查更新 - BATCH_SIZE=10 # 每次并行检查 10 个订阅 - FETCH_ODYSEE=1 # 抓取 Odysssee(可选) - FETCH_YOUTUBE_WATCH_TIME=1 depends_on: - postgres restart: unless-stopped启动:
docker compose up -d首次启动后,Miniflux 会自动创建数据库表和管理员账号。访问 http://你的服务器IP:8080 即可登录。
单容器快速测试
如果只想快速试试:
docker run -d --name miniflux \ -p 8080:8080 \ -e DATABASE_URL=postgres://miniflux:password@host.docker.internal/miniflux?sslmode=disable \ -e RUN_MIGRATIONS=1 \ -e CREATE_ADMIN=1 \ -e ADMIN_USERNAME=admin \ -e ADMIN_PASSWORD=test123 \ miniflux/miniflux:latestPostgreSQL 需提前在宿主机或另一容器中运行。
使用 Miniflux
基本操作
登录后可以看到极简风格的界面,左侧分类树,右侧文章列表:
- 添加订阅 — 点击右上角「Add」,输入 RSS/Atom 链接
- 分类管理 — 默认有「Unread」,可创建科技/博客/新闻等分类
- 阅读模式 — 默认网页视图,可切换原文视图
- 快捷键 —
j/k上下、v打开原文、s星标、m标记已读
添加订阅源
Miniflux 内置了发现功能,输入网站 URL 即可自动检测 RSS 地址:
https://news.ycombinator.com/→ 自动发现 https://news.ycombinator.com/rss手动添加:
https://blog.golang.org/feed.atomhttps://github.blog/feed/https://www.reddit.com/r/selfhosted/.rsshttps://xkcd.com/rss.xml过滤规则(高级功能)
Miniflux 支持关键字和正则表达式过滤:
# 只看标题包含「Docker」或「Go」的文章Type: Title containsKeyword: Docker
# 屏蔽关键词Type: Title does not containKeyword: "Sponsored"
# 正则过滤Type: Title matches regexKeyword: \b(Golang|Rust|Python)\b过滤规则的作用:
- 标记为已读 — 不感兴趣的自动跳过
- 星标 — 自动标记感兴趣的内容
- 保持未读 — 不匹配规则的文章保持未读状态
与第三方客户端配合
Miniflux 提供完整的 REST API + Fever API 兼容层,几乎所有 RSS 客户端都支持:
| 客户端 | 平台 | 支持方式 |
|---|---|---|
| Reeder | macOS/iOS | Fever API |
| NetNewsWire | macOS/iOS | Fever API |
| NewsFlash | Linux | Fever API |
| Fluent Reader | Windows/Linux | Fever API |
| Fiery Feeds | iOS | Fever API |
| Unread | iOS | Fever API |
Fever API 配置参数:
服务器地址: https://miniflux.yourdomain.com/fever/用户名: admin密码: 你在 Miniflux 的密码用 Nginx/Caddy 反代 + HTTPS
Nginx
server { listen 443 ssl; server_name rss.yourdomain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}Caddy
rss.yourdomain.com { reverse_proxy miniflux:8080}常用 API 操作
Miniflux 的 REST API 非常完整,可以完全通过 API 管理订阅:
# 获取 API Token# 在 Miniflux 设置 → API Keys 中创建
# 列出所有订阅源curl -u "admin:your-api-token" \ http://localhost:8080/v1/feeds | jq
# 导出 OPMLcurl -u "admin:your-api-token" \ http://localhost:8080/v1/feeds/export > feeds.opml
# 批量导入 OPMLcurl -u "admin:your-api-token" \ -X POST \ -H "Content-Type: application/xml" \ --data-binary @feeds.opml \ http://localhost:8080/v1/feeds/import
# 获取未读文章数curl -s -u "admin:your-api-token" \ http://localhost:8080/v1/entries?status=unread&limit=1 | jq '.total'FAQ
Q:为什么要 PostgreSQL?不能用 SQLite 吗?
A:Miniflux 从 v2.0 起只支持 PostgreSQL。原因包括:全文搜索、并行连接处理、数据完整性保证。PostgreSQL 16 的 Docker 镜像仅 100MB,可以接受。
Q:Miniflux 资源占用高吗?
A:极低。Miniflux 本身约 15MB 内存,PostgreSQL 约 50MB。总共不到 100MB。
Q:可以多人共用吗?
A:可以。Miniflux 内置多用户支持,每个用户有独立的订阅源、分类和阅读状态。管理员可以在设置中添加用户。
Q:支持主题/深色模式吗?
A:支持。Miniflux 内置简洁的深色主题,在设置中切换。
Q:怎么迁移从 Feedly/Inoreader?
A:在旧服务中导出 OPML 文件,然后在 Miniflux 中导入即可。Feedly 和 Inoreader 都支持 OPML 导出。
Q:能抓取需要登录的网站吗?
A:Miniflux 支持自定义 HTTP 请求头,可以添加 Cookie 或 Token。在编辑订阅源时设置「Custom headers」。
Q:有中文界面吗?
A:Miniflux 的界面支持多语言,包括简体中文。在用户设置中切换语言。
总结
Miniflux 是最纯粹的 RSS 阅读方案:
- ✅ 极简主义——干净到只有文章和文字,没有任何多余元素
- ✅ 高性能——Go 单文件 15MB 内存,PostgreSQL 持久化,每秒处理大量订阅
- ✅ API 优先——完美对接 Reeder / NetNewsWire 等高品质客户端
- ✅ 自定过滤——用正则和关键词精准控制想看的内容
- ✅ 开源可控——Apache-2.0 许可证,数据永远属于你
放弃算法推荐,用 RSS 把信息主动权夺回来——自建 Miniflux,只订阅你真正想看的。
本文由小啪撰写,基于 Miniflux v3.0。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!