跳到主要内容
  1. 所有文章/

使用 Miniflux + RSSHub 打造个人 RSS 阅读器

·1156 字·约 3 分钟

前言 #

Miniflux 是一个基于 Golang 的极简 RSS 阅读器1,RSSHub 可以为不提供 RSS Feed 的站点提供开箱即用的 RSS 路由。

本文使用 docker compose 部署服务,RSSHub 不直接暴露任何端口(仅限容器内 Miniflux 服务使用),最后使用 Cloudflare Tunnel 访问部署好的 Miniflux 服务。

开始之前,先在服务器上 安装 最新的 Docker 和 docker compose 插件,以及用于 Cloudflare Tunnel 服务的 cloudflared

Miniflux
Miniflux

部署 #

SSH 登录服务器,开始执行命令

# 创建目录,用于 Miniflux 相关容器的持久化数据存储
sudo mkdir -p container/miniflux && cd container/miniflux

# 新建 docker-compose.yml 文件
touch docker-compose.yml

编辑这个文件,注意修改管理员信息及数据库相关信息

version: "3.1"

services:
   miniflux:
     image: miniflux/miniflux:latest
     container_name: miniflux
     restart: unless-stopped
     ports:
       - "127.0.0.1:8080:8080"
     depends_on:
       - db
       - rsshub
     environment:
       - DATABASE_URL=postgres://miniflux:<数据库密码>@db/miniflux?sslmode=disable
       #- POLLING_FREQUENCY=45
       - RUN_MIGRATIONS=1  # 运行数据迁移
       - CREATE_ADMIN=1  # 启动时创建用户
       - ADMIN_USERNAME=<管理员用户名>
       - ADMIN_PASSWORD=<管理员用户密码>
       - POLLING_PARSING_ERROR_LIMIT=2
       - BASE_URL=https://rss.youdamin.tld/  # 替换为您的自定义域名,结尾需要斜杠
       #- CLEANUP_ARCHIVE_UNREAD_DAYS=60
       #- CLEANUP_ARCHIVE_READ_DAYS=45
       #- PROXY_IMAGES=none
       - PUID=1000
       - PGID=1000

   db:
     image: postgres:alpine
     container_name: postgres
     restart: unless-stopped
     environment:
       - POSTGRES_USER=miniflux  # 数据库用户名
       - POSTGRES_PASSWORD=<数据库密码>
     volumes:
       - ./miniflux-db:/var/lib/postgresql/data

   rsshub:
     image: diygod/rsshub:chromium-bundled
     container_name: rsshub
     restart: unless-stopped
     environment:
       - NODE_ENV=production
       - CACHE_TYPE=redis
       - REDIS_URL=redis://redis:6379/
       - CACHE_EXPIRE=3600  # 缓存过期时间,单位:秒
       - REQUEST_TIMEOUT=40000  # 请求超时时间,单位:毫秒
     depends_on:
       - redis

   redis:
     image: redis:alpine
     container_name: redis
     restart: always
     volumes:
       - ./rsshub-redis:/data

考虑到 Miniflux 容器不一定等到依赖服务(如 PostgreSQL 数据库)完全就绪才启动 2,第一次部署时,建议分两步启动容器

首先拉取所需的镜像3 并启动依赖的数据库服务

sudo docker compose pull \
&& sudo docker compose up -d db redis

等待大约 10 秒左右,开始第二步的容器启动

sudo docker compose up -d

查看日志没报错,服务应该已经就绪

sudo docker compose logs -f

访问 #

Cloudflare Zero Trust 控制台添加一个 Tunnel,配置自定义域名和监听地址

Tunnel Access
Tunnel Access

现在可以通过您的自定义域名访问刚才部署的 Miniflux 服务了

路由 #

常规 RSS 订阅链接可以直接添加,要使用 RSSHub 支持的路由地址,先在 文档 上查找相应的路由路径。比如,准备订阅华尔街日报的中文新闻,可以查到路由路径

RSSHub WSJ
RSSHub WSJ

在 Miniflux 添加的时候,域名写 http://rsshub:1200 、路径使用上面的路由路径就可以了。

RSSHub Route
RSSHub Route

点击 查找源,Miniflux 应该可以正常获取订阅4

Miniflux with RSSHub
Miniflux with RSSHub

完成 #

分享一个我自用的极简 CSS 样式,效果图在本文开头 🫣

https://git.xvo.es/gist/plain/css/miniflux.css

Miniflux 简洁的外表下有着丰富的自定义功能和拓展,比如推送文章更新到 Telegram、使用 API Key 和各种 RSS 客户端集成、多用户支持……请尽情探索吧!


  1. 简洁但不简单,高度可定制性和功能拓展 ↩︎

  2. 环境变量里设置了首次启动 Miniflux 会初始化管理员用户,若数据库还未就绪,会出现初始化失败 ↩︎

  3. 文中的所有镜像都支持 x64 和 ARM64 架构 ↩︎

  4. 大多数网站(特别是国内网站)防爬虫策略过于严格,RSSHub 本身路由问题或是服务器 IP 信誉太差都可能会导致 RSS 路由失败 ↩︎

Dejavu Moe
作者
Dejavu Moe
Not for success, just for growing.