用海外云服务器搭建Miniflux自建RSS阅读器(RSSHub订阅全网)完整教程(2026最新版)
Meta Description: 手把手教你用海外云服务器搭建Miniflux自建RSS阅读器,配合RSSHub把微博、B站、知乎等没有RSS的网站变成订阅源;含PostgreSQL安装、Docker Compose部署、Nginx反向代理、Let's Encrypt HTTPS、备份升级与常见问题,附服务器配置推荐与价格对比。
> 关键词:Miniflux搭建、自建RSS阅读器、RSSHub部署、海外云服务器、Docker Compose、PostgreSQL、Nginx反向代理、Let's Encrypt、RSS订阅教程、服务器实战搭建
前言
你有没有这种感觉:想看的公众号更新了却刷不到,收藏的技术博客要靠算法推荐才偶尔想起来,关注的 UP 主动态被信息流稀释得无影无踪。我们订阅了很多东西,但这些订阅关系其实并不掌握在自己手里——平台随时可以改算法、降权、关停接口,甚至把收费墙挪到你面前。
RSS(Really Simple Syndication)是互联网上最早、也最「干净」的订阅协议。它不推荐、不追踪、不插广告,只是老老实实告诉你「这个网站更新了一篇新文章」。而自建 RSS 阅读器,就是把这些订阅关系重新拿回自己手里:数据存在你自己的服务器上,界面由你决定,谁也不能替你决定什么该看、什么不该看。
本教程做的事很简单:
1. 用一台海外云服务器部署 Miniflux——一个极简、极快、用 Go 写的自建 RSS 阅读器; 2. 再部署 RSSHub——一个「什么都能变成 RSS」的转换器,把微博、B站、知乎、Telegram 频道这些本来没有 RSS 的内容,转换成标准订阅源; 3. 最后配上域名、Nginx 反向代理和 Let's Encrypt 免费 HTTPS,做成一个只属于你自己的信息入口。
Miniflux 当前稳定版为 2.3.3(2026-07-24 发布)。它有一个非常鲜明的特点:只支持 PostgreSQL 数据库,这是官方明确写死的设计,不是配置问题。理解这一点,后面的部署就顺理成章了。
> 🚀 还没有海外云服务器?通过 5.chengzicloud.cloud 选购阿里云/AWS/腾讯云国际版,享专属折扣和中文技术支持。
一、方案选型:自建 RSS 阅读器该怎么挑
在动手之前,先花两分钟把「自建 RSS 阅读器」这一类的几个主流方案分清楚。它们解决的问题相似,但前提条件差别很大,选错了会事倍功半。
| 方案 | 技术栈 | 数据库 | 界面风格 | 适合谁 | 代价 | |------|--------|--------|---------|--------|------| | Miniflux | Go 单二进制 | 仅 PostgreSQL | 极简、键盘优先、无花哨 | 只想要「读」、追求轻快省资源的人 | 功能刻意克制,没有插件系统 | | FreshRSS | PHP | SQLite/MySQL/PostgreSQL | 信息密度高、扩展多 | 想要丰富主题与插件、习惯 PHP 环境的人 | 需要 PHP-FPM,资源占用高于 Miniflux | | Tiny Tiny RSS | PHP | PostgreSQL/MySQL | 功能最全但界面偏旧 | 需要强大过滤规则与多用户的老用户 | 上手重、维护活跃度不如当年 | | Feedly / Inoreader | SaaS 托管 | 厂商托管 | 漂亮、多端同步 | 不想折腾、只想开箱即用的人 | 免费额度受限、数据在别人手里、可能被墙 |
选 Miniflux 的理由很直接:它只有几 MB 内存占用,即便是几百个订阅源,CPU 也几乎可以忽略;它用一个静态编译的 Go 二进制发布,部署和升级都干净利落;同时它内置了 Let's Encrypt 自动签证书、媒体代理防追踪、全文搜索(借助 PostgreSQL)等实用能力。对于「一个人、一台小服务器、想要一个能长期稳定跑的信息入口」这个场景,它就是最省心的答案。
需要特别提醒的两条边界,避免你误判它的能力:
- Miniflux 不是「稍后读」工具,也不是笔记工具。 它的「保存文章」是把条目推送到 Pinboard、Instapaper、Wallabag 这类第三方服务,而不是自己囤内容。想要「收藏并检索自己读过的东西」,那是文档管理/知识库的活,应该考虑 Paperless-ngx、Wiki.js 这类工具。 - Miniflux 没有插件系统,也不支持加载外部样式表。 官方在 FAQ 里把这条写得很清楚:主题是内嵌进二进制的,要加主题只能提 PR。这不是偷懒,而是它的「极简哲学」——功能有意保持少而精,所以它才能一直这么快、这么稳。
读懂这两条边界,你就不会拿它去干它不擅长的事。而它真正擅长的事——把一堆分散的信息源,变成每天早上打开就能安静读完的一页——后面几节会一步步搭出来。
> 📌 一句话边界:Miniflux 管「读」,RSSHub 管「源」,PostgreSQL 管「存」,Nginx 管「门面」。 四者各司其职,缺一不可。
二、服务器配置推荐与购买
Miniflux 本体非常轻,但整套「阅读器 + RSSHub」的信息入口,资源消耗会被两个东西拉高:
- RSSHub 需要 Node.js 运行时,比 Miniflux 重得多; - 部分 RSSHub 路由需要真实浏览器渲染(比如某些登录墙/JS 页面),这时要额外跑一个 Chromium 容器,内存占用会明显上升。
所以配置要按「你要不要 RSSHub、要不要浏览器渲染」分档:
| 使用场景 | CPU | 内存 | 硬盘 | 带宽 | 推荐系统 | 月费参考 | |---------|-----|------|------|------|---------|---------| | 只跑 Miniflux(几百个订阅源) | 1核 | 1GB | 25GB SSD | 1TB | Ubuntu 22.04 | $5-6/月 | | Miniflux + PostgreSQL(个人主力) | 1核 | 1GB | 25-50GB SSD | 1-2TB | Ubuntu 22.04 | $6-12/月 | | Miniflux + RSSHub + Redis(推荐) | 2核 | 2GB | 50GB SSD | 2TB | Ubuntu 22.04 | $12-18/月 | | 上浏览器渲染 + 多用户(重度) | 2核 | 4GB | 80GB SSD | 4TB | Ubuntu 22.04 | $24/月 |
海外云服务器价格对比(Linux,按月计费,价格为公开官网参考价):
| 服务商 | 入门档 | 推荐档(2核2G) | 进阶档(2核4G) | 数据中心 | 优点 | |--------|--------|----------------|----------------|---------|------| | DigitalOcean Droplet | $4(512MB/1vCPU/10GB/500GB) | $12(2GB/1vCPU/50GB/2TB) | $24(4GB/2vCPU/80GB/4TB) | 全球 14+ 区域 | 文档最完善、新手最友好 | | AWS Lightsail | $5(0.5GB/2vCPU/20GB/1TB) | $12(2GB/2vCPU/60GB/3TB) | $24(4GB/2vCPU/80GB/4TB) | 全球多区域(含亚太) | 固定月费、含静态 IP | | 阿里云国际版 ECS | 约 $4-6 | 约 $12-18 | 约 $20-30 | 香港/新加坡/硅谷 | 中文面板、国内支付、延迟低 | | 腾讯云国际版 CVM | 约 $4-6 | 约 $12-18 | 约 $20-30 | 香港/新加坡/东京 | 低延迟到国内、中文支持 |
> 声明:本文价格数据采集于 2026 年 10 月,仅为公开官网参考区间,实际以各厂商官网实时报价为准;金额单位均为美元(USD)。DigitalOcean 与 AWS Lightsail 为当日直读官价,阿里云国际版 / 腾讯云国际版为公开区间。
选购建议:
1. 先想清楚要不要 RSSHub。 只要 Miniflux 的,1核1G 甚至更小就够;一旦要跑 RSSHub 加浏览器渲染,直接上 2核2G 起步。 2. 系统一律选 Ubuntu 22.04 / 24.04 或 Debian 12。 Miniflux 官方 Debian 包要求 Debian ≥ 8 或 Ubuntu ≥ 16.04,但新系统在 Docker 和 PostgreSQL 上少踩坑。CentOS 7 已 EOL,除非有历史包袱,否则别在新机上用它。 3. 优先选离你近的亚太节点(香港/新加坡/东京/首尔),打开阅读器的速度会明显更快。
> 💡 新手建议:直接选香港或新加坡节点的 2核2G,既能跑 Miniflux 也能跑 RSSHub,延迟低、中文面板、价格实惠。通过 5.chengzicloud.cloud 购买可享额外折扣。
三、环境准备:系统初始化与 PostgreSQL 安装
买好服务器后,用 SSH 登录(把下面命令里的 your-server-ip 换成你的公网 IP):
`bash
ssh root@your-server-ip
`
第1步:更新系统并安装基础工具
`bash
// Ubuntu 22.04 / 24.04 / Debian 12
apt update && apt upgrade -y
apt install -y curl wget git vim ufw ca-certificates
// 设置时区(方便看日志)
timedatectl set-timezone Asia/Shanghai
`
配置基础防火墙,只放行 SSH、HTTP、HTTPS:
`bash
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
`
第2步:安装并初始化 PostgreSQL
这是整套方案里唯一不能省、也最容易被忽略的一步。官方在 Requirements 页面写得很死板:只支持 PostgreSQL >= 11。所以先把数据库装好。
`bash
apt install -y postgresql postgresql-contrib
systemctl enable --now postgresql
systemctl status postgresql
`
接着创建 Miniflux 专用的数据库和用户。不要图省事直接用默认的 postgres 超级用户跑 Miniflux,权限太大不安全:
`bash
// 切换到 postgres 用户
sudo -u postgres -i
// 创建专用用户(会提示你输入两遍密码) createuser -P miniflux
// 创建归属该用户的数据库 createdb -O miniflux miniflux2
// 验证一下 psql -l | grep miniflux
// 退出 postgres 用户
exit
`
到这里,你会得到一个连接串。请把它记下来,后面 Miniflux 要用:
`text
postgres://miniflux:你的密码@127.0.0.1:5432/miniflux2?sslmode=disable
`
> ⚠️ 一个官方文档里明写、却极多人踩的坑:如果你的数据库密码里含有 ^、@、# 这类特殊字符,并且使用 URL 形式(postgres://...)填写 DATABASE_URL,Go 语言从 1.10 起会做 URL 校验并直接报错 net/url: invalid userinfo。两种解法:要么把密码做 URL 编码,要么改用「键值对」形式而非 URL 形式,例如 user=miniflux password=... dbname=miniflux2 sslmode=disable。最省事的做法是——别在密码里用特殊字符。
四、部署 Miniflux:Docker Compose 是首选
Miniflux 提供三种安装方式:官方 Debian/RPM 包、预编译二进制、Docker 镜像。本教程主推 Docker Compose——它把 Miniflux 和 PostgreSQL 组合成一个可复现、可备份、可一键升级的栈,最适合实战。
第3步:安装 Docker 与 Compose 插件
`bash
// 官方一键脚本(Ubuntu/Debian)
curl -fsSL https://get.docker.com | sh
// 启用并设置开机自启 systemctl enable --now docker
// 验证(同时确认 compose 子命令可用)
docker --version
docker compose version
`
> 💡 Docker 的详细用法与可视化管理可以参考站内 Docker + Portainer 部署教程,两者可以无缝配合——用 Portainer 的图形界面管理这里的容器同样很方便。
第4步:编写 docker-compose.yml
新建目录并写入配置。这个文件同时定义了 Miniflux 应用和它依赖的 PostgreSQL:
`bash
mkdir -p /opt/miniflux && cd /opt/miniflux
vim docker-compose.yml
`
写入以下内容(注意把密码换成你自己的强密码):
`yaml
services:
miniflux:
image: miniflux/miniflux:2.3.3
restart: always
ports:
- "127.0.0.1:8080:8080"
depends_on:
db:
condition: service_healthy
environment:
- DATABASE_URL=postgres://miniflux:请改成强密码@db/miniflux2?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=请改成强密码
- BASE_URL=https://rss.example.com
- POLLING_FREQUENCY=60
- CLEANUP_ARCHIVE_READ_DAYS=60
healthcheck:
test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:18
restart: always
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=请改成强密码
- POSTGRES_DB=miniflux2
volumes:
# Postgres 18 用 /var/lib/postgresql;17 及更早用 /var/lib/postgresql/data
- miniflux-db:/var/lib/postgresql
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
`
几个必须理解的点:
- ports 绑定在 127.0.0.1:8080 而不是 0.0.0.0:8080。这是刻意的:让 Miniflux 只监听本机,外部一律通过后面的 Nginx 反向代理进来,避免应用端口直接暴露在公网。
- RUN_MIGRATIONS=1 是有意显式开启的。 官方 FAQ 专门解释了「为什么不自动执行 SQL 迁移」:因为只有一个进程应该同时操作数据库结构,多容器/编排场景下自动迁移会出问题。所以这是一个「需要你确认」的开关,不是遗漏。
- CREATE_ADMIN / ADMIN_USERNAME / ADMIN_PASSWORD 只在首次创建时生效。 首启后建议把这三行删掉——账号已经建好了,留在配置里没有意义,反而多一份泄露风险。
- PostgreSQL 卷路径要按版本区分:Postgres 18 的 PGDATA 是 /var/lib/postgresql,17 及更早是 /var/lib/postgresql/data。挂错路径会导致数据「看着没存进去」。
- BASE_URL 今天就填对。它同时决定 HTML 里的链接和 Cookie 的路径,填错会出现「登录后跳转异常」「邮件里的链接打不开」之类的问题。
第5步:启动并创建管理员
`bash
cd /opt/miniflux
docker compose up -d
// 查看启动日志,确认没有报错
docker compose logs -f miniflux
`
如果看到类似 Listening on 127.0.0.1:8080 且没有迁移错误,就说明起来了。本机验证一下:
`bash
curl -I http://127.0.0.1:8080/
`
返回 200 OK 或 302 都属正常(未登录时会重定向到登录页)。
> 📌 备用安装法(裸二进制 / Debian 包):如果你不想用 Docker,官方也提供 Debian 包与 RPM 包。用 apt 仓库安装时,配置写在 /etc/miniflux.conf(systemd 会从这里读环境变量),然后依次执行 miniflux -migrate -config-file /etc/miniflux.conf、miniflux -create-admin -config-file /etc/miniflux.conf,再 systemctl restart miniflux。注意:Debian 包要求 Debian ≥ 8 或 Ubuntu ≥ 16.04,且每次升级后都必须手动跑一次迁移。
关键配置参数速查
以下是实战中最常调的几个环境变量(完整清单见官方 Configuration 页面):
| 变量 | 默认值 | 作用 | 建议 |
|------|--------|------|------|
| LISTEN_ADDR | 127.0.0.1:8080 | 监听地址 | 反代后保持默认(仅本机) |
| BASE_URL | http://localhost | 生成链接与 Cookie 路径 | 必改为你的域名 |
| HTTPS | 关闭 | 强制 Cookie 带 Secure 并下发 HSTS | 反代走 HTTPS 时设为 1 |
| POLLING_FREQUENCY | 60(分钟) | 后台拉取一批源的时间间隔 | 源多可降到 30,但别太激进 |
| FORCE_REFRESH_INTERVAL | 30(分钟) | 手动刷新允许的最小间隔 | 保持默认即可 |
| CLEANUP_ARCHIVE_READ_DAYS | 60 | 已读条目归档天数 | 想永久保留设 -1 |
| CLEANUP_ARCHIVE_UNREAD_DAYS | 180 | 未读条目归档天数 | 同上 |
| MEDIA_PROXY_MODE | http-only | 媒体代理范围 | 保持默认,避免混合内容与追踪 |
| METRICS_COLLECTOR | 关闭 | 暴露 /metrics 给 Prometheus | 需要监控时设 1 |
| FETCH_BILIBILI_WATCH_TIME | 关闭 | 抓取 B 站视频时长显示为阅读时长 | B 站党设 1 |
其中 FETCH_BILIBILI_WATCH_TIME 值得单独说一句:Miniflux 内置了对 B 站、YouTube、Nebula 等视频站点的「观看时长抓取」,开启后会把它显示为条目的阅读时长——对一个以中文内容为主的用户来说,这个小细节相当贴心。
五、Nginx 反向代理 + Let's Encrypt 免费 HTTPS
Miniflux 现在只在本机 127.0.0.1:8080 上跑着,要让外网安全访问,还需要一层 Nginx 做反向代理并签发证书。这一步的完整原理可以参考站内 Nginx + SSL 证书配置教程,这里只讲针对 Miniflux 的关键处理。
第6步:解析域名并安装 Nginx
先在 DNS 服务商处把子域名(例如 rss.example.com)的 A 记录指向你的服务器公网 IP,然后:
`bash
apt install -y nginx
systemctl enable --now nginx
`
第7步:编写反向代理配置
新建 /etc/nginx/conf.d/miniflux.conf:
`nginx
server {
listen 80;
server_name rss.example.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;
}
}
`
检查并重载:
`bash
nginx -t && systemctl reload nginx
`
第8步:签发 Let's Encrypt 证书
`bash
apt install -y certbot python3-certbot-nginx
certbot --nginx -d rss.example.com --redirect --agree-tos -m [email protected]
`
--redirect 会自动把 HTTP 跳到 HTTPS。签发完成后,回到 docker-compose.yml,把环境变量 HTTPS=1 和一门心思的 BASE_URL=https://rss.example.com 确认无误,然后重启:
`bash
cd /opt/miniflux && docker compose up -d
`
> ⚠️ Miniflux 反代的头号坑:反向代理认证与转发头。当 Miniflux 跑在反向代理后面、且你希望它信任 X-Forwarded-For / X-Forwarded-Proto / X-Real-Ip 这些头时,必须显式配置 TRUSTED_REVERSE_PROXY_NETWORKS(CIDR 列表,例如 127.0.0.1/8 或 172.16.0.0/12)。不配的话,Miniflux 不会信任这些头,你在日志里看到的客户端 IP 会全是本机地址,基于真实 IP 的限流、审计也就失去意义。如果你还想用「反向代理认证」(由前置代理注入用户身份、Miniflux 免密登录),TRUSTED_REVERSE_PROXY_NETWORKS 同样是前置必配项。
>
> 另外,Miniflux 自身其实内置了 Let's Encrypt 自动签发——只要设置 CERT_DOMAIN,它会自动申请并自动续期证书。但在「Nginx 反代 + certbot」这套组合下,HTTPS 由 Nginx 终止,就不要再让 Miniflux 去签同一张证书,避免两边打架。二选一,别同时用。
第9步:首次登录与基础配置
浏览器打开 https://rss.example.com,用第 5 步创建的 admin 账号登录。建议立刻做三件事:
1. 改密码,并在设置里确认「本地认证」策略; 2. 如需更高安全性,开启 WebAuthn / Passkey(官方支持,默认关闭)——用指纹或安全密钥登录,比密码更抗撞库; 3. 打开 OPML 导入,把你在别的阅读器里导出的订阅一次性搬过来。
Miniflux 还兼容 Fever 和 Google Reader API,这意味着你可以用 Reeder、NetNewsWire、Unread 等众多现成客户端连上你的自建实例——网页端只是其中一种读法,你的手机也能用原生 App 读。
六、部署 RSSHub:把「没有 RSS 的网站」变成订阅源
到这一步,Miniflux 已经能愉快地读标准 RSS 了。但真正让自建阅读器「值回票价」的,是它背后的 RSSHub。
RSSHub 的定位是「Everything is RSSible」——把那些根本不提供 RSS 的站点(微博、B站、知乎、小红书、Telegram 频道、播客、GitHub 动态……)实时转换成标准 RSS 源。整个网络由超过 5000 个全球实例组成,路由由社区持续维护。把 RSSHub 和 Miniflux 放在同一台服务器上,你就拥有了一个「什么都能订阅」的入口。
第10步:用 Docker Compose 启动 RSSHub
RSSHub 默认端口是 1200,官方推荐的 Compose 部署会一并拉起 Redis(做缓存)和可选的无头浏览器。新建目录并写入配置:
`bash
mkdir -p /opt/rsshub && cd /opt/rsshub
vim docker-compose.yml
`
写入:
`yaml
services:
rsshub:
# 需要浏览器渲染的路由,改用 diygod/rsshub:chromium-bundled
image: diygod/rsshub
restart: always
ports:
- "127.0.0.1:1200:1200"
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: "redis://redis:6379/"
CACHE_EXPIRE: 3600
PLAYWRIGHT_WS_ENDPOINT: "ws://browserless:3000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1200/healthz"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
- redis
- browserless
browserless:
image: browserless/chrome
restart: always
ulimits:
core:
hard: 0
soft: 0
redis:
image: redis:alpine
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:
`
启动:
`bash
docker compose up -d
docker compose logs -f rsshub
`
验证服务健康:
`bash
curl -I http://127.0.0.1:1200/healthz
`
第11步:给 RSSHub 配一个域名并反代
为 rss.example.com 之外的另一个子域名(例如 hub.example.com)再写一份 Nginx 配置,方法同第 7、8 步,只需把 proxy_pass 指向 http://127.0.0.1:1200。签发证书后即可通过 https://hub.example.com 访问。
第12步:在 Miniflux 里订阅 RSSHub 生成的内容
RSSHub 的用法是:https://hub.example.com/<路由>。几个中文用户最常用的例子:
| 想订阅的内容 | RSSHub 路由形态 | 说明 |
|-------------|----------------|------|
| 某 B 站 UP 主的投稿 | /bilibili/user/video/<UID> | 追更新最实用 |
| 某 B 站 UP 主的动态 | /bilibili/user/dynamic/<UID> | 含图文动态 |
| 某微博用户的微博 | /weibo/user/<UID> | 需配置相应访问凭据 |
| 某知乎用户的动态 | /zhihu/people/activities/<用户ID> | 追答主 |
| 某 Telegram 频道 | /telegram/channel/<频道名> | 追资讯 |
| 某 GitHub 仓库的 Release | /github/releases/<用户>/<仓库> | 追版本发布 |
拿到完整 URL 后,在 Miniflux 里点「添加订阅」,粘贴进去即可。从此微博、B站、知乎的更新,会和你订阅的博客、新闻一样,安静地出现在同一个列表里。
> ⚠️ RSSHub 部署的三个关键点:
> 1. latest 与 chromium-bundled 的区别不是「新旧」,而是「能不能跑需要浏览器的路由」。latest 镜像不含浏览器,体积小、资源省;chromium-bundled(或改用 browserless 服务)带浏览器,能覆盖更多路由,但多消耗内存和磁盘。2核2G 的机器建议先用 latest + 独立 browserless,按需伸缩。
> 2. 架构上 arm/v7 自 2025-04-22 起已被移除,只剩 amd64 和 arm64。老款 32 位 ARM 小机器装不了新版 RSSHub。
> 3. RSSHub 是持续更新的项目,推荐用简易的 watchtower 或定期 docker compose pull && docker compose up -d 保持更新;同时给 GITHUB_ACCESS_TOKEN 之类的变量留好位置,以便提升部分路由的调用配额。
七、日常运维:备份、升级与监控
自建服务「搭起来」只是开始,「稳定跑一年」才是本事。Miniflux 恰恰在这一点上很让人省心——它的数据几乎全在 PostgreSQL 里,备份一个数据库就等于备份了整个阅读器。
备份:一条命令保住全部订阅
官方 FAQ 直接给出的做法就是标准 PostgreSQL 备份:
`bash
// 备份(在宿主机或容器里执行)
pg_dump miniflux2 -f miniflux.dump
// 恢复
psql miniflux2 < miniflux.dump
`
如果 Miniflux 跑在 Docker 里,从容器内导出更稳妥:
`bash
docker compose exec db pg_dump -U miniflux miniflux2 > /root/miniflux-$(date +%F).dump
`
> 📌 为什么备份如此简单? 因为 Miniflux 严格遵循「十二要素应用」原则——它不把任何东西写在本地文件系统上(连网站图标 favicon 都存在数据库里!)。也就是说,没有「忘了备份某个目录」的隐患,一个 dump 就是全部。把这个 dump 定期同步到对象存储(参考站内 MinIO 对象存储部署教程),或者按 服务器备份与灾难恢复教程 做异地留存,就万无一失了。
升级:两种方式,别搞混
Docker 方式(推荐)——改好镜像 tag 后平滑重启:
`bash
cd /opt/miniflux
docker compose pull
docker compose up -d
`
Debian/RPM 包方式——升级后必须手动执行迁移,这是官方反复强调的点:
`bash
apt upgrade miniflux
miniflux -migrate -config-file /etc/miniflux.conf
systemctl restart miniflux
`
> ⚠️ 升级前先备份。 迁移是单向的,跨大版本回滚时没有备份会很难受。
自动清理:别让数据库无限膨胀
Miniflux 自带清理任务,默认每 24 小时跑一次,会移除过期会话并归档旧条目。默认策略是:
- 已读条目:超过 60 天归档; - 未读条目:超过 180 天归档; - 旧会话:超过 30 天删除。
如果你希望「永不丢弃」,把 CLEANUP_ARCHIVE_READ_DAYS 和 CLEANUP_ARCHIVE_UNREAD_DAYS 都设为 -1 即可(注意数据库会持续增长)。
监控:让它自己告诉你「还活着」
Miniflux 内建了 Prometheus 指标。打开 METRICS_COLLECTOR=1 后,它会暴露一个 /metrics 端点(默认只允许 127.0.0.1/8 访问,公网实例切记别把它直接暴露出去,或用 METRICS_ALLOWED_NETWORKS 收紧网段)。把它接进 Prometheus + Grafana,就能看到拉取数、错误率等趋势——站内 服务器监控系统搭建教程 有完整对接方法。
如果你只想要一个「服务挂了就通知我」的轻量方案,配一个 Uptime Kuma 可用性监控,对 https://rss.example.com 做探活 + 告警即可,成本几乎为零。
安全:自建服务暴露公网的第一原则
- 只开放 80/443。Miniflux(8080)和 RSSHub(1200)都绑定在 127.0.0.1,由 Nginx 统一入口;
- 别把 /metrics 或数据库端口暴露公网;
- 开启 Passkey/WebAuthn 或至少设置强密码,防撞库;
- 启用 HTTPS=1 让 Miniflux 下发 HSTS 与 Secure Cookie。
八、常见问题 FAQ
Q1:Miniflux 能不能用 MySQL 或 SQLite? 不能。官方 Requirements 明确写死「只支持 PostgreSQL >= 11」,这是设计选择而非配置项。想要 SQLite/MySQL 的话,请改用 FreshRSS。
Q2:为什么我的 SQL 迁移没有自动执行?
这是刻意设计。官方 FAQ 说明:自动迁移在多容器/编排场景下会产生并发改表问题,所以默认关闭,需要你显式设置 RUN_MIGRATIONS=1。
Q3:ADMIN_PASSWORD 填了但登录不上?
CREATE_ADMIN / ADMIN_USERNAME / ADMIN_PASSWORD 只在首次初始化、且数据库里还没有管理员时生效。如果之前已经建过 admin,改这三行不会有任何效果,请用界面的「忘记密码」或直接改数据库。
Q4:从别的阅读器迁移订阅方便吗? 非常方便。Miniflux 支持 OPML 导入/导出,也支持通过 URL 导入。在原阅读器导出 OPML,再在 Miniflux 里导入即可。
Q5:手机上有 App 吗? 不需要商店下载 App 也能用——网页可「添加到主屏幕」。同时它兼容 Fever 和 Google Reader API,因此 Reeder、NetNewsWire 等第三方客户端都能直连你的自建实例。
Q6:能订阅没有 RSS 的网站吗? 这正是 RSSHub 的用途。部署 RSSHub 后,用它生成的路由 URL 作为订阅地址即可,例如 B 站 UP 主、微博用户、知乎动态、Telegram 频道等。
Q7:RSSHub 的 latest 和 chromium-bundled 该选哪个?
latest 不含浏览器,轻量省资源,但部分需要浏览器渲染的路由用不了;chromium-bundled 带浏览器,覆盖更广但更吃内存。小内存机器建议 latest + 独立 browserless 服务,按需启用。
Q8:为什么订阅的图片显示不出来或提示混合内容?
因为很多源站的图片是 HTTP 的。Miniflux 的媒体代理(默认 MEDIA_PROXY_MODE=http-only)会自动代理这类内容,既解决 HTTPS 页面的混合内容告警,也顺带阻止第三方追踪。保持默认即可。
Q9:我的订阅源多久拉取一次?
默认 POLLING_FREQUENCY=60 分钟一批,且单次手动刷新有 FORCE_REFRESH_INTERVAL=30 分钟的最小间隔。源很多时可把批大小(BATCH_SIZE,默认 100)和拉取频率一起调。
Q10:数据库密码里有特殊字符,Miniflux 起不来?
是的,这是已知问题:URL 形式连接串里含 ^ 等字符会触发 net/url: invalid userinfo。请改用键值对形式,或对密码做 URL 编码,最简单是换一个不含特殊字符的强密码。
Q11:想永久保留已读文章怎么办?
把 CLEANUP_ARCHIVE_READ_DAYS 设为 -1(未读同理)。代价是数据库会持续增长,注意磁盘。
Q12:登录时显示的不是真实客户端 IP?
因为你没有配置 TRUSTED_REVERSE_PROXY_NETWORKS。反代后面要信任 X-Forwarded-For 等头,必须显式列出受信网段(如 127.0.0.1/8)。
Q13:Miniflux 能自动续期 HTTPS 证书吗?
能。设置 CERT_DOMAIN 后它内置 Let's Encrypt 自动签发与续期。但如果你用 Nginx + certbot 终止 HTTPS,就别再开这个,两边二选一。
Q14:整套方案一个月要多少钱? 只跑 Miniflux,$5-6/月的 1核1G 足够;带上 RSSHub + Redis + 无头浏览器,建议 2核2G,约 $12-18/月。相比很多 SaaS 阅读器的订阅费,自建通常更划算,而且数据完全属于你。
结语
到这里,你已经拥有一个完全属于自己的信息入口:Miniflux 安静地读,RSSHub 把全网变成源,PostgreSQL 稳稳地存,Nginx + Let's Encrypt 守住门面。它不推荐、不追踪、不插广告,也不掌握在任何一个平台手里——这正是 RSS 二十多年来最朴素、也最持久的价值。
维护它其实很简单:定期 pg_dump 备份,docker compose pull 升级,剩下的时间就安心读文章吧。如果你还想在这台服务器上继续扩展,下面这些站内教程都能无缝衔接。
延伸阅读:
- 海外云服务器搭建 Docker + Portainer 容器管理平台完整教程 - 海外云服务器 Nginx 反向代理 + Let's Encrypt SSL 证书配置教程 - 海外云服务器搭建 MySQL / PostgreSQL 数据库服务器教程 - 海外云服务器搭建 n8n 工作流自动化平台教程 - 海外云服务器搭建 Meilisearch 自建搜索引擎教程 - 海外云服务器备份与灾难恢复实战教程
> 本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。