极简RSS订阅器Miniflux

什么是 Miniflux ?
Miniflux是一个极简主义的RSS阅读器。它简单、快速、轻便且非常易于使用。Miniflux是静态编译的单个二进制文件,没有使用任何复杂的框架,也没有外部依赖,简单、快速、轻巧且超级容易安装。支持Atom、RSS 1.0/2.0、JSON格式,支持OPML导入 / 导出等。
安装
环境变量
与 docker 相关的环境变量
| 变量 | 缺省值 | 描述 |
|---|---|---|
POSTGRES_DB | 无 | 数据库库名 |
POSTGRES_USER | 无 | 数据库用户 |
POSTGRES_PASSWORD | 无 | 数据库密码 |
DATABASE_URL | 无 | 数据库地址, postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@dbhost:dbport/${POSTGRES_DB}?sslmode=disable |
RUN_MIGRATIONS | 1 | 自动运行数据库迁移 |
CREATE_ADMIN | 1 | 创建管理员 |
ADMIN_USERNAME | 无 | 管理员账号名 |
ADMIN_PASSWORD | 无 | 管理员密码 |
更多的环境变量,请参考官方文档:https://miniflux.app/docs/configuration.html
docker cli 安装
如果你熟悉命令行,可能用 docker cli 更快捷
下面安装时,老苏没有将数据库端口暴露出来
# 新建文件夹 miniflux 和 子目录
mkdir -p /volume2/docker/miniflux/data# 进入 miniflux 目录
cd /volume2/docker/miniflux# 创建网络
docker network create -d bridge miniflux-net# 运行 PostgreSQL 容器
docker run -d \--restart unless-stopped \--name miniflux-db \--network=miniflux-net \-v $(pwd)/data:/var/lib/postgresql/data \-e "POSTGRES_DB=miniflux" \-e "POSTGRES_USER=miniflux" \-e "POSTGRES_PASSWORD=YNAYcg3a9L3B" \postgres:14# 运行 Miniflux 容器
docker run -d \--restart unless-stopped \--name miniflux-web \--network=miniflux-net \-p 8120:8080 \-e "DATABASE_URL=postgres://miniflux:YNAYcg3a9L3B@miniflux-db/miniflux?sslmode=disable" \-e "RUN_MIGRATIONS=1" \-e "CREATE_ADMIN=1" \-e "ADMIN_USERNAME=laosu" \-e "ADMIN_PASSWORD=jCdp64gMapAR" \miniflux/miniflux:2.0.41
docker compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
version: '3'services:db:image: postgres:14container_name: miniflux-db#restart: unless-stoppedenvironment:- POSTGRES_USER=miniflux- POSTGRES_PASSWORD=YNAYcg3a9L3B- POSTGRES_DB=minifluxvolumes:- ./data:/var/lib/postgresql/datahealthcheck:test: ["CMD", "pg_isready", "-U", "miniflux"]interval: 10sstart_period: 30sminiflux:image: miniflux/miniflux:2.0.41container_name: miniflux-web#restart: unless-stoppedports:- "8120:8080"depends_on:- dbenvironment:- DATABASE_URL=postgres://miniflux:YNAYcg3a9L3B@miniflux-db/miniflux?sslmode=disable- RUN_MIGRATIONS=1- CREATE_ADMIN=1- ADMIN_USERNAME=laosu- ADMIN_PASSWORD=jCdp64gMapAR
然后执行下面的命令
# 新建文件夹 miniflux 和 子目录
mkdir -p /volume2/docker/miniflux/data# 进入 miniflux 目录
cd /volume2/docker/miniflux# 将 docker-compose.yml 放入当前目录# 先启动数据库
docker-compose up -d db# 再启动应用
docker-compose up miniflux
之所以没有采用 docker-compose up -d 一键启动,是因为虽然可以通过 depends_on 控制启动顺序,但是实际上miniflux 开始连接 postgres 时,有可能数据库并没有准备好,因而会导致 miniflux 容器启动失败

有两个办法可以解决这个问题:
-
第一种方法:先启动数据库
docker-compose up -d db,再启动应用程序docker-compose up miniflux -
第二种方法:是
docker-compose官方给的建议,通过wait-for-it.sh脚本来控制
wait-for-it.sh代码地址:https://github.com/vishnubob/wait-for-it
相对来说,第一种方法更简单一点,第二种方法老苏也并没有用过,不知道在群晖上是否可行
运行
在浏览器中输入 http://群晖IP:8120 就能看到登录界面

登录成功之后的主界面还是空的

中文
进入 Settings --> Language --> 简体中文

点最下面的 Update 按钮之后,界面就是中文版了

添加源
还是以老苏的博客为例,源 --> 新增源 ,输入 https://laosu.ml/atom.xml

点 查找源 按钮之后,会显示订阅界面

进入一篇

默认只有简介,也就是发布时的 description 部分

要看全文还需要抓取

虽然安装看起来有点复杂,但是使用是不是非常简单?
参考文档
miniflux/v2: Minimalist and opinionated feed reader
地址:https://github.com/miniflux/v2
dubhad-dev/miniflux-docker
地址:https://github.com/dubhad-dev/miniflux-docker
Installation Instructions
地址:https://miniflux.app/docs/installation.html#docker
v2/contrib/docker-compose at main · miniflux/v2
地址:https://github.com/miniflux/v2/tree/main/contrib/docker-compose
相关文章:
极简RSS订阅器Miniflux
什么是 Miniflux ? Miniflux 是一个极简主义的 RSS 阅读器。它简单、快速、轻便且非常易于使用。Miniflux 是静态编译的单个二进制文件,没有使用任何复杂的框架,也没有外部依赖,简单、快速、轻巧且超级容易安装。支持 Atom、RSS 1…...
网络通信快速入门
🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 目录网络编程实现网络编程的三要素&#x…...
【阅读文档】Vue.js 2.0 之教程文档
系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录系列文章目录前言兼容性Devtools开发版和生产版安装Vue-cli编译器Vue.js 是什么最基本的Vuev-bind 指令split 和 reverse 搭配v-model 双向绑定vue-component 定义组件v-bindObject.freeze箭头函数…...
Docker【基本使用】
1:启动Docker1.1:操作systemctl start docker.service1.2:常见问题【第一步】启动docker,提示启动失败,查询运行状态systemctl start docker.service【第二步】查询docker运行状态,提示不支持SELinux【第三…...
算法leetcode|39. 组合总和(rust重拳出击)
文章目录39. 组合总和:样例 1:样例 2:样例 3:提示:分析:题解:rustgoccpythonjava39. 组合总和: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找…...
JavaSE学习笔记总结day18
今日内容 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 五、线程状态 六、线程同步 零、 复习昨日 晨考 一、作业 见答案 二、进程与线程[了解] 一个进程就是一个应用程序,进程包含线程 一个进程至少包含一个线程,大部分都是有多条线程在执行任务(多线…...
HybridFusion: LiDAR和视觉交叉源点云融合
一、基本信息 研究方向: 大场景点云配准 HybridFusion: 它可以在户外大型场景中从不同视角记录交叉源密集点云。 团队链接:http://www.adv-ci.com 视频链接: https://www.bilibili.com/video/BV1vM41147yD/?spm_id_from333.337.sear…...
走进JVM
JVM的位置 在操作系统之上,可以想象成一个软件,Java程序都运行在上面 JVM结构图 JVM调优的位置 99%的调优在堆中,极少数在方法区中 很多第三方插件都是在执行引擎那块地方做出修改而来,比如Lombook在程序运行时动态生成get/s…...
C语言-基础了解-15-C函数指针与回调函数
C函数指针与回调函数 一、函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: type…...
react和vue在响应式上的不同理解
vue和react的区别总是被提及,关于这个问题最近也有了自己的想法。我认为它们之间最大的区别是对于响应数据变化的实现方式不同。 vue实现响应的方法是,首先收集依赖这个数据的副作用(视图更新、计算属性等),当数据修改…...
多线程二 多线程了解与使用
文章目录synchronized 锁有两种synchronized异常捕获主线程和子线程volatile的作用notify是随机启动等待线程中的一个synchronized 锁有两种 类对象类的实例 第一种:锁类对象,有两种方式,如下: // 方法一:synchroni…...
嵌入式 Linux 的僵尸进程是什么?
目录 1、什么是僵尸进程? 2、僵尸进程的目的 3、怎么避免僵尸进程? 4、僵尸进程的处理方法 4.1 wait()连接 4.2 waitpid()函数 1、什么是僵尸进程? 首先内核会释放终止进程(调用了 exit …...
【刷题笔记】笔记一
1.自守数牛客链接解析:1.自守数的结尾肯定是 0,1,5,62.把数字转换为string类(方便比较)3.直接find在s2 里面 使用find查找另一个即可。#include <iostream> #include<string> using namespace …...
浏览器主页被hao123劫持的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...
华为OD机试题 - 热点网络统计(JavaScript)| 含代码编写思路
华为OD机试题 最近更新的博客使用说明本篇题解:热点网络统计题目输入输出描述示例一输入输出示例二输入输出Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华…...
IT项目经理的自我修养手册
在不断进步的时代,任何岗位职责都是一个责任、权力与义务的综合体,有多大的权力就应该承担多大的责任,有多大的权力和责任应该尽多大的义务,任何割裂开来的做法都会发生问题。那么作为IT项目经理的岗位职责,我大概列举…...
2023年软考中级电子商务设计师考什么?
首先,电子商务设计师属于软考中级,因此难度也不是特别大。但并不是说就完全没有难度,难度还是有的,像上午题一般把基本知识点掌握了,是没什么问题的,重点就在于下午题会比较难。 接下来我们来剖析一下考试…...
现在的00后太强了,几个问题差点给我问懵了
前言 我们公司刚入职一个00后小伙,今天在办公室交流了一下,他问我会不会自动化测试,我说懂一点,然后直接问了我几个自动化测试问题,差点直接给我问懵了! 问题如下: 我们在制定自动化测试实施…...
$3 : 水项目实战 - 水果库存系统
javase知识点复习: final关键字:http://t.csdn.cn/bvFgu 接口的定义,特性,实现,继承:http://t.csdn.cn/tbXl3 异常:http://t.csdn.cn/VlS0Z DAO的概念和角色(设计理念)&a…...
毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2 光敏采集电路设计2.3 温度采集电路设计3、部分代码展示3.1 读取DS18B20温度值3.2 定时器初始化1、项目简介 选题指导,…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
