Twitter风格RSS聚合阅读器DanB-RSS

简介

什么是 DanB-RSS ?

DanB-RSS 是一个开源的 RSS 聚合阅读工具,采用 Twitter 风格的社交信息流界面来展示订阅内容。它由 BookStack 的作者 Dan Brown 开发,基于 PHPLaravelInertia.jsTailwindVue.js 构建,界面简洁现代,支持多种布局模式。

主要特点

  • 支持 RSS 和 ATOM 格式:兼容主流的订阅源格式,覆盖面广
  • 自动定时抓取:默认每小时自动更新一次,可配置最短 5 分钟的抓取间隔
  • 四种布局模式:支持卡片(Card)、网格(Grid)、列表(List)和紧凑(Compact)四种视图
  • 自定义标签和颜色:可为每个订阅源设置名称、颜色和标签,方便分类管理
  • 暗色模式:跟随系统主题,自动切换亮色/暗色模式
  • 全文搜索:支持对文章标题和描述进行搜索
  • 开放图谱图片:自动抓取页面的 OG 图片作为文章缩略图
  • 移动端适配:响应式设计,手机浏览体验良好
  • 数据自动清理:支持按天数自动清理过期文章
  • 开源免费:基于 MIT 协议开源,可免费使用和修改

应用场景

  • 个人阅读管理:订阅感兴趣的博客、新闻和技术网站,在一个界面集中阅读
  • 信息流聚合:将多个信息源合并为统一的社交信息流风格界面
  • 轻量级自托管:适合在 NAS 或低功耗服务器上部署,资源占用小

DanB-RSS 是一个轻量且美观的 RSS 阅读工具,适合需要简洁信息流体验的个人用户。

安装

在群晖上以 Docker 方式安装。

由于镜像托管在 Codeberg 容器注册表中,群晖 Docker 套件无法直接搜索,需要通过命令行拉取镜像。

准备工作

容器内的 Caddy 以 www 用户身份运行,但默认试图绑定特权端口 80<1024),而 Linux 上非 root 用户无权绑定低端口。

但  RSS 镜像的原始 Caddyfile 里面对应的是 Laravel/PHP 应用路由,不能简单的覆盖,需要先把原始 Caddyfile 拉出来再修改

1
2
# 先把原始 Caddyfile 拉出来
docker run --rm codeberg.org/danb/rss:latest cat /app/docker/Caddyfile > ./Caddyfile.txt

然后编辑 Caddyfile.txt,把 :80 改成 :5280

注意有 2 处,都需要改

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

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

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

# 运行容器
docker run -d \
--name=rss \
--restart=unless-stopped \
--cap-add=NET_BIND_SERVICE \
-p 5280:5280 \
-v $(pwd)/data:/app/storage \
-v $(pwd)/Caddyfile.txt:/app/docker/Caddyfile:ro \
codeberg.org/danb/rss:latest

参数说明

  • /app/storage:存放 feeds.txt、SQLite 数据库等数据
  • APP_NAME:应用名称,显示在浏览器标签页标题中
  • APP_CONFIG_FILE:指定订阅源配置文件(feeds.txt)的具体存放路径
  • APP_FEED_UPDATE_FREQUENCY:抓取频率(分钟),最低可设置为 5 分钟,默认 60 分钟
  • APP_PRUNE_POSTS_AFTER_DAYS:自动清理超过指定天数的文章,默认不清理,设为 30 即保留最近 30
  • APP_LOAD_POST_THUMBNAILS:是否加载文章缩略图,默认开启

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
rss:
image: codeberg.org/danb/rss:latest
container_name: rss
restart: unless-stopped
ports:
- "5280:5280"
volumes:
- ./data:/app/storage # 数据持久化目录
- ./Caddyfile.txt:/app/docker/Caddyfile:ro
environment:
- APP_NAME=RSS # 应用名称

然后通过 SSH 登录到您的群晖,执行下面的命令:

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

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

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

首次使用需要配置订阅源:

  1. 打开宿主机上挂载的 data 目录,找到 feeds.txt 文件

  1. 按以下格式添加 RSS 订阅源:
1
2
3
4
5
6
7
8
9
10
11
12
https://feed.url.com/feed.xml Feed名称 #标签A #标签B
https://example.com/feed.xml 示例站点 #资讯 #科技

# 以 # 开头的行是注释
# 下划线会自动转换为空格
https://example.com/feed-b.xml 新闻_站点 #新闻

# 使用方括号设置颜色(CSS 颜色值)
https://example.com/feed-c.xml 蓝色_新闻[#0078b9] #新闻 #科技

# 以 - 开头的源默认隐藏,只在筛选时显示
- https://example.com/feed-d.xml 冷知识 #知识

  1. 保存文件后,在浏览器中访问 http://<群晖IP>:5280 会看到自动读取并开始抓取文章

  1. 抓取完成后,需要刷新一下就能看到内容了

切换显示方式

DanB-RSS 没有内置的用户认证系统,建议通过反向代理添加访问控制。

注意事项

  1. 无用户认证DanB-RSS 没有内置的用户管理,部署到公网时务必通过反向代理添加认证
  2. 不支持 HTTPS:应用本身仅支持 HTTP,需要 HTTPS 请使用 NginxCaddy 反向代理
  3. Feed 管理通过文件:添加、修改、删除订阅源都需要编辑 feeds.txt 文件,不支持界面操作
  4. 低维护项目:作者明确表示这是一个低维护项目,功能范围有意保持狭窄,不适合需要复杂功能的用户
  5. 数据持久化:所有数据(包括数据库)都存储在 /app/storage 目录,务必做好备份

参考文档

danb/rss: A simple twitter-feed-style RSS aggregator written in PHP, Laravel, Inertia.js, Tailwind and Vue.js
地址:https://codeberg.org/danb/rss