给NAS安装这几个Docker,让Kindle成为RSS阅读神器!
今天继续跟朋友们汇报折腾的成果。不得不说瑞芯Rock 5b的配置真是强大,装了这么多应用、容器,在导航页里看开发板的资源占用情况,CPU只有7%,CPU用了不到3GB,倒是EMMC卡存储被占用的比较多。ARM平台虽然比不上x86处理能力强大,但是功耗低省电,折腾起来还是挺有乐趣的。

这回我想在NAS上多装几个Docker,把闲置许久的KPW4使用起来,让它成为RSS阅读神器!
什么是RSS

RSS 的全称是「简易内容聚合」(Really Simple Syndication),是一个能让你在一个地方订阅各种感兴趣网站的工具。
一个网站支持 RSS,就意味着每当它新发布一篇新文章,就会往一个位于特定网址的文件中,以特定的语法(具体而言是 XML 标记语言或 JSON)增加一条记录,列明这篇文章的标题、作者、发表时间和内容(可以是全文,也可以是摘要)等信息。这样,用户只要搜集所有他感兴趣的网站提供的这种文件的网址,并不时检查这些文件内容的更新,就能知道这些网站是否、何时发布了什么内容。RSS 阅读器的核心功能,就是存储用户订阅的 RSS 地址,以固定的频率自动检查更新,并将其内容转换为易读的格式呈现给用户。
简单地说,当我关注的某个人在知乎、或者在博客上回答了一个问题、写了一篇新文章,我马上就能收到推送。当我关注的人变多了,我不必一一点开知乎、简书、甚至翻看博客去主动获取更新,而是在一个统一的终端内阅读。
为什么用RSS
RSS 的对立面是算法推荐,像微信公众号、知乎、微博、今日头条等平台。 且不说算法推送平台广告多,迁移麻烦的问题。算法推荐的特点是,你不需要刻意选择,算法会根据你的喜好,给你推送内容。这样一来,你几乎没有选择的余地,在不断被「喂饱」中逐渐失去判断的能力。更可怕的地方在于,它替你定义了你的画像,然后把你潜移默化中变成了它所认为的你。「大数据杀熟」的东窗事发绝非偶然,用算法窥视用户隐私是当今互联网公司的通配。
做信息的主人,而不是奴隶。RSS 是一种公开的协议,可自由更换平台与客户端。重要的一点是,获取信息的权力完全自治。RSS 相比算法推荐,拥有了可控性和安全感,隐私完全掌握在自己手里。
RSS的局限性
RSS的历史非常悠久,RSS的第一个版本为 RDF Site Summary,在1999年三月由美国网景公司的 Guha 为了用在 My.Netscape.Com 门户网站而开发。这个版本开始以 RSS 0.9 为名。在1999年七月,美国网景公司的 Dan Libby 发明了新版本 RSS 0.91,此版本简化了形式,借由撤去 RDF 元素及合并 Dave Winer 的 scriptingNews 企业联合组织化格式。Libby 并且将此重命名为 RSS,全名“Rich Site Summary”,并且在“Futures document”论述了未来的发展形式。
但是除了一些深度使用者,RSS在如今并没有为人所熟知,因为大部分网站拥有者并不希望用户通过RSS的方式来浏览网站内容,这样会降低网站的真实浏览量,减少网站广告的潜在点击,从而影响网站的收入。
另一方面,RSS展示的内容没有花里胡哨的格式,许多图片视频无法正常显示,更无法展示动态内容。
但是同时,这也是RSS的优势,它特别适合那些更关注于文字的使用者,同时也特别适合电纸书这些载体来呈现这部分内容。毕竟电纸书的墨水屏刷新率低,色彩少,呈现动态网页本来就有些先天不足。
而我偶尔用来看书的Kindle Paperwhite 4因为采用了封闭的定制系统,无法安装其他RSS阅读器,甚至网页也经常不能正常显示。所以就必须要找到一个方法将RSS内容抓取到数据库中,然后再通过Kindle去打开。抓取的内容完全可以根据个人意愿来自定义,不会再被算法所支配。
其实实现的方法有很多,比如可以在Google上搭建KindleEar。KindleEar是个非常古老的项目了,但是功能十分齐全,可以非常方便地添加各种订阅。然后定期发送整理好的电子书到Kindle上。KindleEar的缺点就是需要能够访问Google才能搭建,另外如果订阅较多,不及时清理的话,生成的电子书文件会比较占用空间。

安装RSSHub
RSS生成器其实有很多,比如Huginn,RSSHub等,这里先介绍安装使用更为简单的RSSHub。
RSSHub是一个开源、简单易用、易于扩展的RSS生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容,可以配合浏览器扩展RSSHub Radar (opens new window)和移动端辅助App RSSBud (opens new window)(iOS) 与 RSSAid (opens new window)(Android) 使用。
可以通过vercel在线搭建RSSHub,但是实测更容易被反爬机制发现被封,还是通过Docker本地搭建靠谱。
运行下面的命令下载RSSHub镜像
$ docker pull diygod/rsshub
然后运行RSSHub即可
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub
此时浏览器打开1200端口,显示以下内容即说明安装成功。

然后按照RSSHub网站中介绍的方法,即可为各种网站生成RSS格式的内容。路由 | RSSHub
有些网站因为反爬策略严格,很容易被封,需自行测试。
安装Miniflux
Miniflux是一个开源的 RSS 订阅服务实现,类似 Tiny Tiny RSS,使用过 RSS 订阅服务的朋友应该不陌生,部署 Miniflux 服务相当于拥有了自己的 Feedly 服务。该项目是基于 Go 和 Vanilla JS (没有使用任何框架的原生 JavaScript API) 的 SaaS APP 实现,提倡尽可能少的外部依赖,简单可维护易扩展。当然你也可以尝试其他类似服务,比如FreshRSS,Tiny Tiny RSS等等,各有优缺点。

新建配置文件docker-compose.yml。
nano docker-compose.yml
默认端口8080,为了避免和已经安装的服务端口冲突,我把它映射到8888端口上。另外注意设置miniflux的用户名和密码。
version: '3'
services:
miniflux:
image: miniflux/miniflux:latest
ports:
- "8888:8080"
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- POLLING_FREQUENCY=60
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=123456
restart: unless-stopped
db:
image: postgres:10.1
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
volumes:
miniflux-db:
安装完成后即可在浏览器访问8888端口,登录Miniflux后台。

可以看到后台现在是没有数据的。

点击Feeds(+),在里面添加新的feed。feed的格式参见RSSHub里的路由文档,优先选择反爬机制较为宽松的站点。作为范例,这里添加了知乎热榜的订阅。

然后修改一些基本的设置,如语言、时区等等,这里建议将Entry sorting设置为Recent entries first,即最近添加的内容会置顶显示。

此时点击顶部导航栏的未读,就会发现大量同步而来的RSS文章。

至此RSS的内容已经有了,在电脑上通过浏览器访问毫无压力。但是在Kindle上去访问这个网址还是比较吃力的,因为网页格式和Kindle不太兼容。
安装Kniss
Kniss是个轻量级的基于fever的适合Kindle使用的RSS阅读器,项目地址xizeyoupan/kinss。
运行下面的命令下载 kinss 镜像
$ docker pull intemd/kinss
然后运行 kinss 即可
$ docker run -d --name kinss -p 5000:5000 intemd/kinss
回到Miniflux的设置中,确保开启了Fever的集成,并且设置了用户名和密码。

此时电脑浏览器访问5000端口,输入之前设置的用户名密码,API地址输入http://192.168.1.66:8888/fever/,即Miniflux的地址。

登录后可以看到界面顶部和底部都有按钮,方便触摸屏上操作。

最后拿出我的KPW4来测试一下。

点击右上角的菜单,选择Web Browser。

输入账号密码和API,提交登录。

然后就可以看到同步过来的RSS文章,可以通过页面上的按钮来导航浏览。

文章中的图片也能够正常显示,虽然是黑白的。这里会有点问题,底部按钮显示有点异常,但是不影响使用。


虽然最终显示效果不甚完美,但是RSS的基础阅读功能已经可以实现了,这样每天睡前可以用Kindle看看订阅,比看手机更利于视力健康,也可以避免躺在床上刷手机时间过长影响睡眠了。
其实我还想在Kindle上刷微信公众号,一番周折之后发现howie6879/liuli这个项目可以实现,就是修改配置步骤有点繁琐,感兴趣的朋友们可以研究一下。

滨城
校验提示文案
奕口大锅
校验提示文案
cuoguo
校验提示文案
samisme
校验提示文案
呆萌的呆呆
校验提示文案
月藏锋
校验提示文案
mars208
校验提示文案
deep85
校验提示文案
依然的阿Q
校验提示文案
brendon1
校验提示文案
值友1272913949
校验提示文案
苹果大爷
校验提示文案
dadabing
校验提示文案
Gavin-Wang
校验提示文案
焱炎火
校验提示文案
肾虚少女
校验提示文案
无痕岛的高草
校验提示文案
嘉然辣辣米
校验提示文案
foxfox00
校验提示文案
值友2753222000
校验提示文案
桥边翘辫瞧鞭
校验提示文案
精打细算
校验提示文案
事事如意芳霏
校验提示文案
龙里龙气
校验提示文案
弗老大
校验提示文案
小人方唐镜
校验提示文案
玄霄九天
校验提示文案
五十包郵解君愁
校验提示文案
弗老大
校验提示文案
zisu_1115
校验提示文案
付真
校验提示文案
依然的阿Q
校验提示文案
Ostbukkake
校验提示文案
Franklin
校验提示文案
deep85
校验提示文案
中号硬核玩家
校验提示文案
cctv凝
校验提示文案
fengpan584
校验提示文案
奕口大锅
校验提示文案
mars208
校验提示文案