Miniflux 部署教程:Docker、RSS 订阅与个人阅读器
通过 Docker Compose 部署 Miniflux 与 PostgreSQL,创建管理员、添加 RSS 并配置域名及数据备份。
用一个服务集中订阅 RSS
Miniflux 把不同网站的 RSS 更新放进一个阅读器,适合在电脑与手机之间同步未读状态。它需要 PostgreSQL 保存订阅、文章和账号。
本文使用 Linux、Docker Compose 与宿主机 Caddy。先准备 rss.example.com 域名,已有 Docker 安装和 HTTPS 教程可作为前置阅读。
生成凭证并建立 Compose
下面命令只用于首次安装。它遇到已有 .env 或 postgres 路径就会停止;维护已有实例时保留原凭据和数据库目录,不要重新生成密码。
bash <<'BASH'
set -euo pipefail
umask 077
mkdir -p "$HOME/miniflux"
cd "$HOME/miniflux"
if [ -e .env ] || [ -L .env ] || [ -e postgres ] || [ -L postgres ]; then
printf '%s\n' '已有凭据或数据库目录,停止初始化;请保留原文件。' >&2
exit 1
fi
db_password="$(openssl rand -hex 24)"
admin_password="$(openssl rand -hex 24)"
test -n "$db_password" && test -n "$admin_password"
(set -C; printf "DB_PASSWORD=%s\nADMIN_PASSWORD=%s\n" "$db_password" "$admin_password" > .env)
BASH确认命令成功退出后再继续。PostgreSQL 的 POSTGRES_PASSWORD 只在空数据目录初始化时设置数据库密码;已有数据库不会因 .env 换了密码而同步更新。
将下面配置保存成 compose.yml。PostgreSQL 固定为 17,数据目录与该大版本匹配。
services:
db:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: miniflux
POSTGRES_USER: miniflux
POSTGRES_PASSWORD: ${DB_PASSWORD:?set DB_PASSWORD}
volumes:
- ./postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U miniflux -d miniflux"]
interval: 10s
timeout: 5s
retries: 10
miniflux:
image: miniflux/miniflux:latest
restart: unless-stopped
ports:
- "127.0.0.1:8082:8080"
environment:
DATABASE_URL: postgres://miniflux:${DB_PASSWORD:?set DB_PASSWORD}@db:5432/miniflux?sslmode=disable
RUN_MIGRATIONS: "1"
CREATE_ADMIN: "1"
ADMIN_USERNAME: admin
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD}
BASE_URL: https://rss.example.com
depends_on:
db:
condition: service_healthy启动与域名访问
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --tail=100 minifluxrss.example.com {
reverse_proxy 127.0.0.1:8082
}域名需换成自己的,并同步修改 BASE_URL。Caddy 运行在宿主机时使用此本地映射;其他代理环境按对应网络设置。
登录并添加订阅
使用 admin 和 .env 中生成的 ADMIN_PASSWORD 登录,添加一个有效 RSS 地址,查看能否刷新出文章。订阅入口通常是网站提供的 feed URL,不是任意首页地址。
首次初始化完成后,可以从环境中移除 CREATE_ADMIN、ADMIN_USERNAME、ADMIN_PASSWORD 并重建容器,账号已经保存在数据库中。不要删除数据库目录。
升级和备份
将实际运行的 Miniflux 版本记录下来,需要固定版本时把 latest 改成对应稳定标签。升级前导出 PostgreSQL 数据,保留 compose.yml 与 .env。
PostgreSQL 升级大版本需要逻辑导出恢复或专门升级流程,不能只把 17 改成 18。RSS 阅读器占用随订阅、文章数量和保留时间变化,磁盘用量增加时检查数据保留设置。
OPML 导入与抓取失败
导入前保留原 OPML 文件,导入后检查分类、来源地址和重复订阅。OPML 保存的是订阅列表,历史文章、收藏和已读状态要通过完整数据库备份保留。
单个来源抓取失败时检查 feed 地址、认证、响应状态和服务器网络;所有来源同时停止更新时,先查应用、数据库和任务状态。来源更新不频繁时,按实际更新周期安排抓取。
