什么是 RSSPub ?
RSSPub 是一个使用 Rust 编写的自托管应用程序,其核心功能是将用户的 RSS/Atom 订阅源自动转换并打包成个人化的每日新闻报(EPUB 格式)。它能够自动抓取文章、智能处理图片,最终生成适合在电子阅读器或平板电脑上阅读的 EPUB 文件。此外,RSSPub 还内置了一个 OPDS 订阅源服务器,允许用户通过 KOReader、Moon+ Reader 等兼容的阅读器客户端直接浏览和下载生成的 EPUB 文件,构建完整的内容获取与阅读闭环。
主要特性
- RSS/Atom 解析:自动抓取并解析用户配置的 RSS/Atom 订阅源内容。
- EPUB 生成:将抓取到的文章内容编译成格式规范、排版良好的 EPUB 电子书。
- 图片优化:自动下载文章内图片,并进行优化处理(如转为灰度、调整尺寸),以提升在电子墨水屏设备上的显示效果。
- Web 管理界面:提供简洁的网页 UI,用于管理订阅源、配置生成计划以及手动触发生成任务。
- OPDS 目录服务:内置 OPDS 服务器(可通过
/opds 路径访问),方便阅读器直接发现和下载 EPUB 文件。
- 定时任务调度:支持基于 Cron 表达式的定时任务,实现 EPUB 的自动周期生成。
- 基础身份验证:提供可选的 HTTP 基本认证功能,以保护你的应用实例。
- 邮件送达:可配置自动将生成的 EPUB 文件作为附件发送到指定邮箱,完美适配 Send-to-Kindle 等服务。
- 高性能:基于 Rust、Axum 和 Tokio 异步运行时构建,具备高性能与低资源占用的特点。
应用场景
- 个人信息聚合:将分散在各个网站、博客的新闻源聚合起来,生成统一的每日电子简报,便于集中阅读与归档。
- 自托管数据管理:适合注重数据隐私与控制权,希望将内容获取与处理流程完全掌握在自己手中的用户。
- 离线阅读优化:通过生成优化后的 EPUB 文件,获得比直接浏览网页更佳、更专注的阅读体验,尤其适合通勤或网络不佳时使用。
- 自动化内容流:为需要定期阅读大量资讯的用户,自动化完成“抓取-整理-推送”的全流程,节省手动操作时间。
- 简易管理与定制:通过直观的 Web 界面,轻松完成订阅源的增删改查及生成规则的设定。

总而言之,RSSPub 提供了一个高效、灵活的解决方案,帮助用户轻松地获取、整理并舒适地阅读自己真正感兴趣的内容。
安装部署
我们将在群晖 NAS 上通过 Docker 容器来安装和运行 RSSPub。
通过 Docker 图形界面安装
- 打开群晖的 Docker 套件,进入“注册表”页面。
- 搜索关键词
rsspub,在结果中选择第一个 harshit181/rsspub 镜像。
- 在标签页选择
latest(本文撰写时,该标签对应版本为 0.96.2),点击“下载”。

配置存储卷
在 Docker 套件的“映像”中,双击已下载的 rsspub 镜像以创建容器。在“卷”设置选项卡中,添加以下文件夹映射:
- 文件/文件夹:在
docker 共享文件夹下,新建 rsspub/data 目录。
- 装载路径:
/app/db
- 说明:用于存放应用程序的数据库文件。
- 文件/文件夹:在
docker 共享文件夹下,新建 rsspub/epubs 目录。
- 装载路径:
/app/static/epubs
- 说明:用于存放生成的 EPUB 文件。

配置网络端口
在“端口设置”选项卡中,设置本地端口与容器端口的映射。
- 本地端口:选择一个未被占用的端口,例如
3364。可通过命令 netstat -tunlp | grep 端口号 检查端口占用情况。
- 容器端口:
3000(此为 RSSPub 应用默认端口)。

配置环境变量
在“环境”选项卡中,可以设置以下可选环境变量来定制应用行为:
| 变量名 |
值示例 |
说明 |
RUST_LOG |
info |
设置日志级别,如 info 或 error。 |
RPUB_USERNAME |
laosu |
为 Web 界面设置基本认证的用户名。 |
RPUB_PASSWORD |
123456 |
为 Web 界面设置基本认证的密码。 |

完成以上配置后,启动容器即可。
通过 Docker 命令行安装
对于熟悉命令行的用户,使用 Docker CLI 或 Docker Compose 是更快捷的部署方式。
使用 Docker CLI
通过 SSH 连接到你的群晖 NAS,执行以下命令:
# 1. 创建必要的目录结构
mkdir -p /volume1/docker/rsspub/{data,epubs}
# 2. 进入应用目录
cd /volume1/docker/rsspub
# 3. 运行 Docker 容器
docker run -d \
--restart unless-stopped \
--name rsspub \
-p 3364:3000 \
-v $(pwd)/data:/app/db \
-v $(pwd)/epubs:/app/static/epubs \
-e RPUB_USERNAME=laosu \
-e RPUB_PASSWORD=123456 \
harshit181/rsspub:latest
使用 Docker Compose(推荐)
将以下配置保存为 docker-compose.yml 文件:
services:
rsspub:
image: harshit181/rsspub:latest
container_name: rsspub
restart: unless-stopped
ports:
- "3364:3000"
volumes:
- ./data:/app/db
- ./epubs:/app/static/epubs
environment:
- RUST_LOG=info,html5ever=error
- RPUB_USERNAME=laosu
- RPUB_PASSWORD=123456
然后,在 SSH 中执行:
# 1. 创建目录并进入
mkdir -p /volume1/docker/rsspub/{data,epubs}
cd /volume1/docker/rsspub
# 2. 将上述 docker-compose.yml 文件上传或创建在当前目录
# 3. 启动服务
docker-compose up -d

基础使用教程
容器成功启动后,在浏览器中访问 http://你的群晖IP:3364 即可打开 RSSPub 的 Web 管理界面。
首次访问时,如果配置了 RPUB_USERNAME 和 RPUB_PASSWORD 环境变量,会弹出登录框,输入凭证即可。

登录后的主界面如下图所示:

添加订阅源并生成 EPUB
我们以添加一个博客的 Atom 订阅源为例:
- 在 “Add New Feed” 区域填写信息:
- Feed URL:订阅源的地址,例如
https://laosu.tech/atom.xml。
- Name (Optional):为该订阅源起一个易于识别的名字,如“老苏的博客”。
- Limit (0=Unlimited):单次生成时抓取的最大文章数量,留空或填
0 表示不限。
- 点击 “Add Feed” 按钮保存。

添加成功后,该订阅源会出现在下方的列表中。点击其右侧的 “Generate EPUB Now” 按钮,RSSPub 便会开始后台抓取内容并生成 EPUB 文件。

生成的 EPUB 文件会存储在我们之前映射的 docker/rsspub/epubs 目录中,你可以通过文件管理器直接访问。

使用 Calibre、Apple Books 或任何支持 EPUB 的阅读器打开该文件,可以看到文章内容、图片均被完整抓取并进行了良好的排版。


通过 OPDS 服务直接推送至阅读器
RSSPub 内置的 OPDS 服务是另一个亮点。访问 http://你的群晖IP:3364/opds,你会看到一个标准的 OPDS 目录页面。

在 Moon+ Reader、静读天下等支持 OPDS 的阅读器 App 中,添加此地址作为书源,即可直接在阅读器内浏览、下载 RSSPub 生成的所有 EPUB 电子书,实现无缝的“发布-订阅”阅读体验。

高级功能:定时任务与邮件推送
在 Web 界面的 “Schedule” 部分,你可以配置 Cron 表达式来设定 EPUB 的自动生成周期(例如每天凌晨生成)。结合 “Email Delivery” 配置,可以将新生成的 EPUB 文件自动发送到你的 Kindle 邮箱或其他指定邮箱,实现全自动化的“日报”推送流程。
参考文档