Docker系列 安装个人RSS服务TTRSS 手机完美适配
转自我的个人博客https://blognas.hwb0307.com。欢迎关注!
前言
关于RSS的介绍这里不再多说,请看我的另一篇博文:解决信息爆炸困扰的完美方案——RSS。
RSS订阅器平台有很多选择,大家可以看这个文章:2022年10款最佳RSS阅读器推荐(在线/软件+免费/付费)- 安卓、iOS, Windows, Mac, Linux等适用!。那为什么我还是觉得应该有一个自己的RSS订阅器平台呢?我觉得有以下几点理由:
- 基于Docker,自建难度低,迁移性好。
- 自建RSS订阅器平台足够强大。有fiter功能等。
- 数据完全掌握在自己手中。可通过duplicati备份。
- 无广告,不担心托管平台倒闭。RSS阅读器平台经常会由于盈利或政策原因关门。
- 没有订阅数上限或其它恶心的限制。完全免费。
- 进一步压榨VPS。毕竟有这么多性能溢出!
下面我们搭建一个RSS平台——Tiny Tiny RSS
,即TTRSS
。基于Fever API,TTRSS
也可完美地适配手机端(IOS; 安卓应该也是类似的)的阅读。
搭建过程中主要参考咕咕:二十分钟搭建一个属于自己的RSS服务和一些官方文档。总之很容易安装。开始吧!
测试环境
用的腾讯云VPS:
uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
docker --version # Docker version 20.10.5, build 55c4c88
docker-compose --version # docker-compose version 1.28.6, build 5db8d86f
准备工作
# 工作目录 按需修改
work=~/docker/tinytinyrss && mkdir -p $work && cd $work
# 防火墙开放端口 按需修改
sudo ufw allow 3894/tcp comment 'tinytinyrss' && sudo ufw reload
# 提前拉取镜像,国内下载速度也蛮快的
docker pull wangqiru/ttrss:latest
docker pull wangqiru/mercury-parser-api:latest
docker pull wangqiru/opencc-api-server:latest
docker pull postgres:13-alpine
配置yml
新建文件:
vim $work/docker-compose.yml
添加以下内容:
version: "3"
services:
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
ports:
- 3894:80 # 按需修改
environment:
- SELF_URL_PATH=https://rss.domain.com/ # 按需修改
- DB_PASS=ipbufQW8F2 # 按需修改。与下面的密码对应
volumes:
- ./feed-icons:/var/www/feed-icons/
networks:
- public_access
- service_only
- database_only
stdin_open: true
tty: true
restart: always
service.mercury:
image: wangqiru/mercury-parser-api:latest
container_name: mercury
networks:
- public_access
- service_only
restart: always
service.opencc:
image: wangqiru/opencc-api-server:latest
container_name: opencc
environment:
- NODE_ENV=production
networks:
- service_only
restart: always
database.postgres:
image: postgres:13-alpine
container_name: postgres
environment:
- POSTGRES_PASSWORD=ipbufQW8F2 # 按需修改。与上面的密码对应
volumes:
- ./db/:/var/lib/postgresql/data
networks:
- database_only
restart: always
networks:
public_access:
service_only:
internal: true
database_only:
internal: true
这里要说明的是,除了按需修改
的部分,其它代码大家尽量不要动它,免得在后面的设置中出错。如果你是大神就当我没说吧!
上线服务:
cd $work && docker-compose up -d
可以通过这个命令查看日志:
docker-compose logs -f
改变文件夹的权限。这一步一定要做,否则TTRSS无法成功启用。
sudo chmod 777 $work/feed-icons
重启应用:
docker-compose restart
ddns-go & NPM
ddns-go或者域名托管后台里添加域名:rss.domain.com
NPM无特殊设置。类似于:
初始化
默认帐户:
帐号:admin
密码:password
第一次登陆进行要先改一个密码,用bitwarden生成强密码:
在用户这里,点admin:
填入一个新密码:
更改新密码后,重新用新密码登陆。帐户信息可用bitwarden保存。
设置
我们可以去偏好设置
那里:
启用外部API
这一部分的设置主要是为了让外部终端(比如手机的Unread)可以访问它。毕竟我们很有可能经常在手机上看我们的RSS订阅!
开启Mercucy和opencc功能
开启Mercucy
是为了可以获取全文;开启opencc
是为了中文的简繁体转换。记得点启用选择
生效。这主要是电脑端的优化吧,对手机阅读端而言没有太多影响。
启用Fever API
可以用bitwarden生成一个密码并填入Set Password
前面的空格中,记得点击Set Password
保存。这个密码主要是在手机客户端通过Fever API订阅时需要用。你也可以设置得简单点。不过,如果你手机上有bitwarden的话,密码再长也无所谓,因为你不需要记住它!
设置订阅源插件
我们的docker-compose安装过程中已经内置了Mercucy
和opencc
两个应用。由于之前在偏好设置中启用了Mercucy
和opencc
功能,所以这里我们要指定它们的应用API。
- Mercucy:
- opencc
TTRSS
的设置和一般软件设置的布局不太一样,刚开始操作时可能令人摸不着头脑。大家多多探索一下,应该问题不大!
添加分类和信息源
这个就比较简单了,自己摸索一下吧。主要有2个入口,这里直接贴图。
主页的入口:
偏好设置中的入口:
不懂的话评论区留言。
其它
这里主要分享一些我觉得比较实用的设置。
不展开文章
有些订阅源的正文很长很长,如果你设置了始终展开文章
,阅读体验很差。
换主题
如果不喜欢默认皮肤,还可以换主题。这个利好颜控!
比如,我将主题改成feedly-cozy
:
实际效果如下:
看某篇文章时的效果如下:
感觉棒棒哒!其它主题就没试过了。我比较随意,并不在意这些花里胡哨的东西。
快捷键
像大多数RSS阅读器一样,TTRSS也有快捷键:
我觉得比较实用的快捷键就2个:
a+q
:将展开的文章折叠f+q
:将某个分类的文章全部标记为已读(这个真的好用!)
IOS客户端Unread
如果手机不能很好地阅读自己的RSS,显然RSS是没有灵魂的。这里通过Unread
,基于Fever的API实现服务端的TTRSS调用。只要是支持Fever API的RSS阅读器都行,这个你自己选吧!我只说Unread
,是因为国服的App Store只有这个Unread
比较好用。其它的RSS阅读器基本都不支持Fever API。我觉得Unread
不是专为国人设计的,也不支持中文,有点不太满意。大家凑合着用吧!有用过其它的比较好的RSS阅读器,小伙伴们也可以评论区留言推荐。
Unread
的用法如下:
- 地址:
https://rss.domain.com/plugins/fever/
(这里要注意没有.local
!) - 帐户:admin
- 密码:
启用Fever
时输入的那个密码。不是登陆密码。
下面给个APP的截图:
其实习惯了也还好。
小结
大家可以通过duplicati定期备份整个$work
目录。
同时,我注意到TTRSS还支持api_feedreader
、api_newsplus
,所以FeedReader
和News+
应该也可以使用。大家可以试试看,好像要通过global configuration才可以调用。反正我有Unread还凑合,就不折腾了!大不了转Reeder!
日志
- 2022-05-01:使用了几天Unread,发现Unread对于个人博客同步的支持较差,常常爬不到内容,也拉不到历史内容;TTRSS明明是可以爬取到的。暂无解决方案。
参考
更多推荐
所有评论(0)