RSS(聚合内容),一种 “古老” 的消息来源格式,古老到连著名的 RSS 聚合器兼阅读器 Google Reader 都快停止服务十年了。但近几年随着开源项目 RSSHub 发布极大程度上丰富了可订阅内容,加之 RSS 本身无算法、纯用户主导(须用户主动订阅)的特性和对各互联网公司的算法推荐的唾弃,让 RSS 这一古老协议焕发了第二春。我也是从那时候开始重新依赖 RSS 获取信息。
想要使用 RSS 作为自己的信息获取工具,就一定需要一个 RSS 聚合工具,将你所感兴趣的信息源全部集中到一处,通常可以使用下面的几种方案:
- 本地应用程序(如 Reeder),但这种方案无法原生多设备同步,订阅源和阅读状况只在单台设备内存储,必须配合商业网络服务或自建服务来跨设备同步内容。
- 商业订阅服务(如 Feedly、Feedbin),但大多数需要每月支付一定的订阅费用。
- 自建服务(如 FreshRSS、tt-RSS、Miniflux),需要花一定的心思自行搭建,大多需要自行准备服务器,同样需要一定的物质(金钱)成本。
RSS聚合软件对比
今天我们要讨论的是第三种方案,目前常用的自建 RSS 聚合器框架主要有:
- FreshRSS,功能强大、易于使用,基于 PHP 和 SQL 数据库
- Tiny Tiny RSS(tt-RSS),功能非常强大、扩展性极强,基于 PHP 和 SQL 数据库
- Miniflux,极度简约但应有的功能一个不缺,基于 Go 语言
可以看出,前两个框架虽然功能上更强大且搭建起来比较简单(可以使用 Docker,或者直接使用 PHP 虚拟主机搭建)但受限于 PHP+SQL 的组合,整个框架都显得比较 “重” 或者慢,且无法做到真正的 0 成本。因部署在自己群晖服务器,追求极致性能体验。所以本文部署的是 tiny tiny rss(tt-RSS).
FreshRSS | TTRSS | |
---|---|---|
优点 | 1、界面UI简洁,好看,很容易习惯; 2、安装简单,无需繁琐的配置; 3、支持自主搭建LNMP环境安装服务; 4、支持sqlite数据库,简单不用配置; 5、出现订阅失败的网站可以强制订阅。 | 1、主题不多,但还算简洁,跟freshrss差不多; 2、订阅推送时间正常; 3、订阅失败能找到原因; 4、火狐浏览器导出备份正常; 5、听说有手机app支持,我没试过。 |
缺点 | 1、像上面说的,突然出现无法订阅的情况,也不清楚什么原因; 2、订阅推送的时间貌似不太对,不知道是不是我配置的问题,一直没找到原因; 3、火狐浏览器导出备份出现错误,chrome内核的浏览器正常; | 1、安装复杂,我是折腾了很久才搞定的; 2、订阅失败的网站不能强制订阅; 3、不支持自主搭建LNMP环境安装; |
TT-RSS部署
docker-compose.yml如下:
services:
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
labels:
com.centurylinklabs.watchtower.enable: true
environment:
SELF_URL_PATH: http://192.168.1.4:8999 # please change to your own domain
DB_PASS: ttrss # use the same password defined in `database.postgres`
PUID: 1026
PGID: 100
ports:
- 8999:80
volumes:
- ./feed-icons:/var/www/feed-icons/
networks:
- public_access
- service_only
- database_only
stdin_open: true
tty: true
depends_on:
- rsshub
- service.mercury
- service.opencc
- database.postgres
restart: always
service.mercury:
# set Mercury Parser API endpoint to `service.mercury:3000` obobyai n TTRSS plugin setting page
image: wangqiru/mercury-parser-api:latest
labels:
com.centurylinklabs.watchtower.enable: true
networks:
- public_access
- service_only
restart: always
service.opencc:
# set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
image: wangqiru/opencc-api-server:latest
labels:
com.centurylinklabs.watchtower.enable: true
environment:
NODE_ENV: production
networks:
- service_only
restart: always
rsshub:
image: diygod/rsshub
restart: always
labels:
com.centurylinklabs.watchtower.enable: true
environment:
PORT: 80
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://database.redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://service.browserless:3000'
networks:
- public_access
- database_only
depends_on:
- database.redis
- service.browserless
service.browserless:
image: browserless/chrome
labels:
com.centurylinklabs.watchtower.enable: true
restart: always
ulimits:
core:
hard: 0
soft: 0
database.redis:
image: redis:alpine
restart: always
labels:
com.centurylinklabs.watchtower.enable: true
volumes:
- ./redis:/data
networks:
- database_only
database.polaoxiongb2c stgres:
image: postgres:13-alpine
labels:
com.centurylinklabs.watchtower.enable: true
environment:
- POSTGRES_PASSWORD=ttrss # feel free to change the password
volumes:
- ./postgres/data:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
networks:
- database_only
restart: always
utility.watchtower:
container_name: watchtower
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=86400
restart: always
volumes:
feed-icons:
redis-data:
postgres-data:
networks:
public_access: # Provide the access for ttrss UI
service_only:
# Provide the communication network between services only
internal: true
database_only:
# Provide the communication between ttrss and database only
internal: true
watchtower 自动更新
如果使用本地的 RSSHub 服务,有一个小问题是它经常更新…, 如果手动来的话会很麻烦,所以我们可以使用 watchtower 来监控他们进行自动更新.
我们再新建一个叫watchtower
的文件夹,然后在里面再创建一个docker-compose.yml
文件
mkdir rsshub
cd rsshub
touch docker-compose.yml
然后在里面写如下内容:
versilaoxiongb2c on: "3.8"
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: always
environment:
TZ: Asia/Shanghai
WATCHTOWER_LABEL_ENABLE: "true"
WATCHTOWER_CLEANUP: "true"
WATCHTOWER_SCHEDULE: "0 30 4 * * *"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
TT-RSS使用体验
再比如,在 Windows 电脑上,也可以通过开源免费的 Fluent Reader ,来连接 FreshRSS 服务。
就这款 Fluent Reader,甚至还提供了 macOS、Android 和 iOS 版本,可谓相当好用~!
所以,在手机上也行:
RSSHub安装
已整合至上访的 ttrss 中
version: '3.9'
services:
rsshub:
# two ways to enable puppeteer:
# * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
# * (consumes more disk space and memory) leave everything unchanged
image: diygod/rsshub
restart: always
container_name: rsshub
ports:
- '9000:1200'
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' # marked
depends_on:
- redis
- browserless # marked
browserless:
# marked
image: browserless/chrome # marked
restart: always # marked
container_name: browserless
ulimits:
# marked
core:
# marked
hard: 0 # marked
soft: 0 # marked
redis:
image: redis:alpine
restart: always
container_name: redis
volumes:
- ./data:/data
volumes:
redis-data:
插件
mercury-parser-api
按我的理解,这是一个可以将任何网上文章结构化抓取下来的一个网络服务,用docker来安装运行这个网络服务了,整个命令如下:
sudo docker run -p 3000:3000 -d --restart=always wangqiru/mercury-parser-api
安装完成后,通过curl 188.188.188.188:3000命令能返回下面一行,就算成功了,其中ip地址是我杜撰的自己服务器的IP地址:
{"message":"Welcome to mercury-parser-api API! Endpoint: /parser"}
mercury_fulltext插件
之所以要装这个插件,是我订阅的rss中,有个大侠的rss只有前面一段短文,不给全篇文章,安装这个之后就可以自动把全篇文章给弄到rss上来了。
安装也简单,直接进入tiny tiny rss 后台,插件选择,启用即可:
完成了之后从浏览器登入tiny tiny rss 后台,然后启用mercury_fulltext这个插件,完了在feeds的mercury_fulltext填上 IP:3000
:
然后对需要使用该插件的rss源右键进入编辑,然后插件选择使用mercury_fulltext就可以了:
软件
Fever API:http://192.168.1.4:8999/plugins/fever/
想要在 ttrss 中订阅 rsshub 的链接,比如 b 站番剧就是http://rsshub/bilibili/bangumi/media/9192
GitHub – seazon/FeedMe: The documents and forum of FeedMe
GitHub – Ashinch/ReadYou: An Android RSS reader presented in Material You style.
问题
无法从指定的网址下载: cURL error 28
Docker自建Tinytinyrss + rsshub
系统:Ubuntu-22.04云服务器
解决思路:进入tinytinyrss docker容器内部,修改/var/www/classes文件夹下config.php,TIMEOUT数字改成120
解决方法:先找到容器id
docker ps
docker exec -it
cd classes
vi config.php
修改以下四行
Config::FEED_FETCH_TIMEOUT => [ 120, Config::T_INT ],
Config::FEED_FETCH_NO_CACHE_TIMEOUT => [ 120, Config::T_INT ],
Config::FILE_FETCH_TIMEOUT => [ 120, Config::T_INT ],
Config::FILE_FETCH_CONNECT_TIMEOUT => [ 120,
数字全改成120
最后 ufw allow 443 打开端口
我是这样解决的
无法订阅 Rsshub 订阅源
ttrss 禁止非80和443端口feed更新,导致不能订阅自建huginn、rsshub。需要在环境变量中添加ALLOW_PORT=1200,3000 端口。
version: "3"
services:
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
ports:
- 181:80
environment:
- SELF_URL_PATH=http://XX.XXX.com # please change to your own domain
- DB_PASS=XXXXX # use the same password defined in `database.postgres`
- PUID=1000
- PGID=1000
- ALLOW_PORTS=1200,3000 # 加入这个配置,才能访问rsshub和huginn默认的1200,3000端口
参考
在群晖中使用 docker 搭建 TTRSS+RSSHub 并启用 https | tomin 的个人博客
必须 注册 为本站用户, 登录 后才可以发表评论!