个人新闻阅读服务软件Readflow

NeteaseCloudMusicApi 项目收到了网易云音乐发送的律师函,估计很快,各种第三方网易云播放器就没法用了


什么是 Readflow ?

Readflow 是一个关注多功能性和简单性的新闻阅读(或稍后阅读)解决方案。能够在在一个地方阅读您的互联网文章流,完全放心和自由。

软件特点:

  • 在一个地方阅读来自任何地方的文章。
  • 将文章保存离线阅读,或按您所需的格式(HTMLPDFEPUBZIP 等)在本地磁盘上保存。
  • 创建分类并对新文章进行分类。
  • 通过脚本引擎自定义文章集成。
  • 通过传入和传出的 Webhook 与外部服务进行链接(如 NewsletterRSSKeeperPocketShaarliWallabagS3 存储桶等)。
  • 在有新文章可用时接收通知。
  • 通过渐进式 Web 应用支持,在移动设备上享受与桌面端相同的用户体验。
  • 而且,所有这些功能都没有广告和跟踪器。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 readflow ,选择第一个 ncarlier/readflow,双击直接下载。

目前只有一个版本,应该是自动生成的

用到两个容器,采用 docker-compose 安装,请将下面的内容保存为 docker-compose.yml 文件

基于官方的 docker-compose.yml 修改而成,支持 env变量,不传参数的话自动使用的都是默认值;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: "3"

services:
########################################
# PostgreSQL
########################################
db:
image: postgres:14
container_name: readflow-db
restart: always
environment:
- POSTGRES_DB=${POSTGRES_DB:-readflow}
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-secret}
volumes:
- ./data:/var/lib/postgresql/data

########################################
# readflow
########################################
readflow:
image: "ncarlier/readflow:edge"
container_name: readflow-web
restart: always
depends_on:
- db
ports:
- "${PORT:-5081}:8080"
environment:
- READFLOW_DATABASE_URI=postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-secret}@db/${POSTGRES_DB:-readflow}?sslmode=disable
- READFLOW_AUTHN_METHOD=basic
- READFLOW_AUTHN_BASIC_HTPASSWD_FILE=file:///var/local/demo.htpasswd # "demo" as username and password
volumes:
- ${PWD}/demo.htpasswd:/var/local/demo.htpasswd

默认绑定了 demo.htpasswd 文件,所以会有登录窗口弹出

账号:demo ,密码:demo

其中 demo.htpasswd 文件文件的内容如下:

1
demo:$2y$05$pyVCV7lwL1Scis6Lz.KyZuS9..KCD2y7dhKBkEzXlR9RH3VVNqdLG

从示例看,密码采用了 bcrypt 编码,$2y$ 表示 bcrypt 的版本,05$ 表示迭代次数(在示例中为 5 次迭代),似乎用 openssl 生成不了,只能使用 htpasswd

为了生成符合编码标准的密码,需要借用到另一个镜像 xmartlabs/htpasswd,可以通过命令行方式运行

1
2
3
4
5
6
7
8
9
10
11
# 新建文件夹 readflow 和 子目录
mkdir -p /volume1/docker/readflow/data

# 进入 readflow 目录
cd /volume1/docker/readflow

# 生成符合 OpenBSD bcrypt标准的加密字符串
docker run --rm -it xmartlabs/htpasswd -nbB <username> <password> > demo.htpasswd

# 示例
docker run --rm -it xmartlabs/htpasswd laosu 123456 > demo.htpasswd
  • -n:使用命令行标准输出,而不是输出到文件;
  • -b:从第 2 个参数获得原始密码;
  • -B:强制使用 bcrypt

然后执行下面的命令

1
2
3
4
# 将 docker-compose.yml 和 demo.htpasswd 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5081 就能看到主界面

添加分类

SettingsAdd category

类别由简单的标题定义,添加完成后,可以将文章分配到此类别

添加文章

从主菜单添加点 Add new 添加文章

找了一篇自己的文章

添加成功后

点右上角的三个点后,可以编辑文章、离线阅读、下载成 epubpdf

编辑文章

并不是编辑文章本身,而是修改标题、描述、分类等信息

离线模式

可以将文章保留在离线模式下。这样即使没有网络覆盖,也可以阅读文章。

但是需要注意的是,目前没有离线同步服务。文章只保存在当前使用的设备的存储上。如果您更换设备,会找不到该文章。

移动端网页

使用移动端登录网页

登录成功后的主界面

网页端效果还是挺好的

其他功能老苏也在摸索中,目前发现的问题是千万别刷新页面,可能会显示 404

参考文档

ncarlier/readflow: 源代码
地址:https://github.com/ncarlier/readflow

About readflow
地址:https://about.readflow.app

readflow documentation
地址:https://docs.readflow.app

xmartlabs/docker-htpasswd: Docker image to create a htpasswd file
地址:https://github.com/xmartlabs/docker-htpasswd