在 Debian 12 上部署 RSS Reader
效果如下:
一、项目背景与功能概述
1.1 RSS Reader 项目简介
根据 GitHub 仓库 的 README 内容,RSS Reader 是一个基于 Node.js 的 RSS 订阅工具,支持以下核心功能:
- RSS 订阅管理:支持批量添加和管理多个 RSS 源。
- 关键词过滤:根据用户定义的关键词,筛选感兴趣的内容。
- 定时刷新:可配置 RSS 源的刷新频率(如每 5 分钟)。
- 通知推送:支持通过 Telegram 等方式发送更新通知。
- 时间段控制:允许设置夜间模式,控制通知发送时间。
- 数据归档:将处理过的 RSS 内容保存到指定文件中。
该项目适合需要实时监控 RSS 源并获取定制化信息的用户,例如追踪技术博客、论坛动态或新闻资讯。
二、环境准备
2.1 系统要求
- 操作系统:Debian 12
- 权限:Root 或具有 sudo 权限的用户
- 网络:稳定的互联网连接,用于下载 Docker 和项目文件
2.2 更新系统
确保系统包和依赖是最新的,以避免兼容性问题:
sudo apt update
sudo apt upgrade -y
说明:apt update
更新软件包列表,apt upgrade -y
自动升级已安装的软件包,-y
参数跳过确认提示。
三、安装 Docker 和 Docker Compose
3.1 安装 Docker
在 Debian 12 上安装 Docker 的步骤如下:
sudo apt install docker.io -y
验证安装:
docker --version
预期输出类似:Docker version 24.x.x, build xxxxx
。
3.2 安装 Docker Compose
Docker Compose 用于管理多容器应用,安装步骤如下:
- 下载最新版本的 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
说明:uname -s
和 uname -m
分别获取系统类型和架构,确保下载匹配的二进制文件。
- 赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
- 验证安装:
docker-compose --version
预期输出类似:Docker Compose version v2.x.x
。
3.3 启动并启用 Docker 服务
确保 Docker 服务在系统启动时自动运行:
sudo systemctl start docker
sudo systemctl enable docker
四、部署 RSS Reader 项目
4.1 克隆项目
将 RSS Reader 项目克隆到本地:
git clone https://github.com/okhanyu/rss-reader
cd rss-reader
说明:cd rss-reader
进入项目目录,确保后续操作在正确路径下执行。
4.2 配置 config.json
编辑 config.json
文件,添加 RSS 源、关键词和通知设置。以下是您提供的配置文件,已优化格式以提高可读性:
{
"values": [
"https://v2ex.com/feed/tab/deals.xml",
"https://rss.nodeseek.com",
"https://linux.do/latest.rss",
"https://rsshub.app/telegram/channel/v2exc",
"https://www.chiphell.com/forum.php?mod=rss",
"https://rsshub.app/telegram/channel/Aliyundrive_Share_Channel",
"https://sspai.com/feed",
"https://rsshub.app/telegram/channel/shareAliyun",
"https://rsshub.app/telegram/channel/awesomeRSSHub",
"https://tech.meituan.com/feed/",
"https://xueqiu.com/hots/topic/rss",
"https://huiris.com/feed",
"https://www.macin.org/atom.xml",
"https://www.ithome.com/rss/",
"https://www.tmtpost.com/rss",
"http://www.voicer.me/feed",
"https://www.backpackers.com.tw/forum/external.php",
"https://www.photoworld.com.cn/feed",
"https://feed.cnblogs.com/blog/sitehome/rss",
"https://www.williamlong.info/rss.xml",
"http://www.ftchinese.com/rss/hotstoryby7day",
"https://wangyurui.com/feed.xml",
"https://hostloc.com/forum.php?mod=rss&fid=45&auth=389ec3vtQanmEuRoghE%2FpZPWnYCPmvwWgSa7RsfjbQ%2BJpA%2F6y6eHAx%2FKqtmPOg",
"https://www.dalao.net/feed.htm",
"http://rss.dw.de/rdf/rss-chi-all",
"https://cn.nytimes.com/rss.html",
"https://www.bbc.com/zhongwen/simp/index.xml",
"https://rsshub.app/initium/latest/zh-hans",
"https://www.stefanjudis.com/",
"https://webtoolsweekly.com/archive",
"https://rsshub.app/telegram/channel/wxbyg",
"https://www.biede.com/feed",
"http://www.woshipm.com/feed"
],
"refresh": 5,
"autoUpdatePush": 7,
"nightStartTime": "08:00:00",
"nightEndTime": "23:30:00",
"keywords": [
"NAS"
],
"notify": {
"telegram": {
"api": "https://api.telegram.org/bot${token}/sendMessage",
"chat_id": "yourchat_id",
"token": "yourtoken"
}
},
"archives": "archives.txt"
}
配置说明:
- values:列出需要订阅的 RSS 源,涵盖技术论坛(如 V2EX、Chiphell)、新闻媒体(如 BBC、纽约时报)和个人博客等。
- refresh:RSS 源刷新间隔(分钟),这里设置为 5 分钟。
- autoUpdatePush:自动推送更新的频率(天),这里为 7 天。
- nightStartTime/nightEndTime:通知发送时间段,限制为 08:00 至 23:30。
- keywords:过滤关键词,匹配包含这些词的内容(如 “NAS”、“AI”)。
- notify.telegram:Telegram 通知配置,包括 API 地址、聊天 ID 和令牌。
- archives:归档文件路径,存储处理过的 RSS 数据。
优化建议:
- RSS 源验证:部分 RSS 源(如
https://www.chiphell.com/forum.php?mod=rss
)可能需要登录或特定权限,建议测试每个 URL 的可用性。 - 关键词优化:关键词列表较广泛,可能导致通知过多。建议精简为高优先级词,如 “NAS”、“AI”、“推荐”。
- 刷新频率:5 分钟刷新可能对 VPS 资源和 RSS 服务器造成压力,建议根据实际需求调整为 10-15 分钟。
4.3 运行项目
使用 Docker Compose 启动项目:
docker-compose up -d
说明:
-d
参数表示后台运行容器。- 启动后,项目将根据
config.json
的设置自动拉取 RSS 内容、筛选关键词并通过 Telegram 发送通知。
验证运行状态:
docker ps
检查是否有名为 rss-reader
的容器在运行。
五、常见问题与排查
5.1 Docker 无法启动
- 问题:执行
docker-compose up -d
报错。 解决:
- 检查
docker-compose.yml
文件是否存在且格式正确。 - 确保 VPS 磁盘空间足够:
df -h
。 - 查看 Docker 日志:
docker logs <container_id>
。
- 检查
5.2 Telegram 通知失败
- 问题:未收到 Telegram 通知。
解决:
- 确认
config.json
中的chat_id
和token
正确。 - 测试 Telegram API 是否可访问:
curl https://api.telegram.org/bot<token>/getMe
。 - 检查 VPS 网络是否限制了 Telegram 的访问。
- 确认
5.3 RSS 源无法访问
- 问题:部分 RSS 源无法拉取数据。
解决:
- 使用
curl <rss_url>
测试 RSS 源是否可达。 - 检查是否需要认证或特定 User-Agent。
- 替换不可用的 RSS 源。
- 使用
六、参考资料
七、附加信息
- 项目地址:https://github.com/okhanyu/rss-reader
- VPS 管理:请定期检查 VPS 到期时间,以确保服务持续运行。
优化建议:
- 启用日志监控(如
docker logs
或外部工具)以跟踪项目运行状态。 - 考虑使用
docker-compose.yml
中的restart: always
确保容器自动重启。 - 定期备份
archives.txt
和config.json
以防数据丢失。
- 启用日志监控(如