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 套件无法直接搜索,需要通过命令行拉取镜像。

准备工作

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

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

bash 复制代码
# 先把原始 Caddyfile 拉出来
docker run --rm codeberg.org/danb/rss:latest cat /app/docker/Caddyfile > ./Caddyfile.txt

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

注意有 2 处,都需要改

docker cli 安装

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

bash 复制代码
# 新建文件夹 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 文件

yaml 复制代码
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 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 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 订阅源:
yaml 复制代码
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

相关推荐
辉的技术笔记11 小时前
Dify 自部署为什么跑不动?6 层瓶颈诊断法教你定位
docker
程序员老赵1 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
lichenyang4534 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4534 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4534 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4534 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
Patrick_Wilson8 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy9 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭9 天前
运行你的第一个Docker容器
后端·docker·容器