一、前言
最近 follow 火了起来,其内置了多个 RSS 源(包括 RSSHub 源)。
但是,由于 RSSHub 的公开实例有 60-120 分钟的缓存时间,相信有不少人可能会想要自建 RSSHub 来减少缓存时间以加快抓取频率(包括我),于是写下了这边文章。
正在摸索如何编写 RSSHub 路由,如有更新会在这里添加新文章的链接。
1.1、什么是RSS,它可以做什么?
RSS 的全称是「简易内容聚合」(Really Simple Syndication),你可能还听过它的另一个称呼:聚合内容。它是一种订阅信息内容的协议。
你可以通过以下两篇文章,深入了解。
1.2、为什么要用 RSS?
简单来说:摆脱算法精准推送,从而慢慢形成信息茧房。避免信息过载
信息过载(英语:information overload),又称信息肥胖症(英语:infobesity),是指接受太多信息,反而影响正常的理解与决策,它往往于日常信息过多有关。
二、关于 RSSHub
1. RSSHub是什么
RSSHub 是一个开源的 RSS 生成器,它可以帮助用户从几乎任何网站生成 RSS feeds,即使这些网站本身不提供 RSS 功能。RSSHub 通过解析网页内容、API 接口或其他公开数据,自动生成符合 RSS 标准的内容订阅源,方便用户通过 RSS 阅读器订阅和阅读更新。
2. RSSHub 的主要特点
- 支持广泛的网站:
- RSSHub 支持多种类型的网站,包括社交媒体(如 Twitter、Instagram)、新闻网站、博客、论坛、视频平台(如 YouTube)、电商平台(如淘宝、京东)等。即使某些网站不提供官方的 RSS feed,RSSHub 也可以帮助生成。
- 模块化设计:
- RSSHub 采用模块化设计,支持社区贡献的多种路由。用户可以根据需要定制路由,从特定站点抓取内容生成 RSS。
- 开源和自托管:
- RSSHub 是一个开源项目,用户可以根据自己的需求自托管服务,或使用官方或社区提供的公共服务。
- 强大的定制功能:
- 用户可以根据自己的需要配置请求参数,例如过滤关键词、排序等,以获得个性化的订阅内容。
- 隐私友好:
- RSSHub 通过自托管方式让用户可以掌控数据抓取过程,避免隐私泄露风险,适合对隐私有较高要求的用户。
3. RSSHub 的常见应用场景
- 订阅没有官方 RSS 功能的网站,例如一些新闻门户或博客。
- 整合不同社交媒体平台的内容,方便统一在 RSS 阅读器中查看。
- 通过过滤或排序功能,自动获取符合特定需求的更新内容,例如电商平台的折扣通知等。
使用示例:
假设你想订阅某个新闻网站的特定分类,而该网站没有提供 RSS feed,你可以通过 RSSHub 来获取,例如通过以下 URL:
https://rsshub.app/nytimes/technology
这将生成纽约时报技术板块的 RSS 订阅源。
总结来说,RSSHub 是一个功能强大且灵活的工具,特别适合希望整合和定制多平台信息的用户,它能够显著提升内容获取的效率。
三、为什么要自行部署 RSSHub?
3.1、提高可用性
- 虽然 RSSHub 提供免费的官方实例,但 rsshub.app 已被墙导致国内无法直连使用,如果你没有24小时开启科学上网的习惯,用起来可能会有点麻烦;
- 由于官方实例使用的人很多,时不时被一些有严格的反爬策略的网站屏蔽(如微博、知乎等),需要自行部署以提高可用性。
3.2、自定义程度高
- 部分人群使用官方实例后感觉有些地方不太满意,这时候就需要部署适合自己的 RSSHub 配置,
- 适合有控制欲的人群,希望一切掌握在自己手里;
- 希望对特定的网页编写自定义规则
- 其他更多可自定义的配置(可选项,用默认配置部署也可以做到开箱即食)。
四、部署 - Nas 端
由于我个人并没有购置 Nas,请参考以下文章进行搭建。
五、部署 - 一键部署到免费托管平台
RSSHub 支持多种部署方式,你可以部署到购买的 Linux 服务器、本地、NAS 甚至是树莓派。
也可以一键部署到免费托管平台,例如 Railway、Heroku、Zeabur、Vercel、Fly.io、Sealos、PikaPods
你只需要从上述任意方案中,选择一个最合适你的方案。
RSSHub 为所有部署方式都编写了文档,其中一键部署可以从这里开始阅读。
优势:
- 只需要注册托管平台以及 GitHub 的帐号,然后一键搭建即可。
- 服务器打理交给平台,你只需要专注 RSSHub 本身的使用即可。(适合不喜欢折腾的)
缺点:
- 托管平台的免费套餐一般都有请求数/流量的限制。
六、部署 - 自托管(Self-Hosting)
下文将以 Ubuntu 系统为例,并使用 Docker Compose 部署。
无需担心!即便你是小白,只需要跟着教程一步步复制粘别也能顺利完成安装!
6.1、准备步骤
- 服务器一台,Docker 镜像支持以下架构;
linux/amd64
linux/arm/v7
linux/arm64
- ssh 连接工具,例如:Xshell、FinalShell 、Termius 、Mac 终端 等;
- 域名一个(可选,不绑定域名也能通过ip直接访问)。
- 安装 Docker 以及 Docker-compose
6.2、连接 ssh 并更新软件包
如果你看不懂我在说什么,那么请依次复制
不带#的
命令行 即可。系统询问可能会占用xxxMB,y/n?请输入 y 然后回车
首先,我们需要通过 ssh 连接工具进入服务器
更新软件包,以确保软件包列表和已安装的软件包是最新的。
# 更新系统软件包
sudo apt update && apt upgrade -y
6.3、安装 Docker 以及 Docker-compose
请按照顺序安装 Docker 以及 Docker-compose
6.3.1、安装 Docker
# 安装几个先决条件的软件包,这样apt就可以通过 HTTPS 使用软件包:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 然后将官方 Docker 仓库的 GPG 密钥添加到您的系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 将 Docker 仓库添加到 APT 源中:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 请再次更新您现有的软件包列表,以便能够识别新增内容:
sudo apt update
# 安装 Docker
sudo apt install docker-ce
Docker 现在应该已经安装好了,进程守护也已启动,并且设置为开机自动启动。检查一下它是否在运行:
输出的内容应该与下面的格式类似,显示服务处于激活和运行状态:
Output
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-10-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 7854 (dockerd)
Tasks: 7
Memory: 38.3M
CPU: 340ms
CGroup: /system.slice/docker.service
└─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
如果你正在使用非 root 用户,请参考原文的 步骤 2 — 在不使用 Sudo 的情况下执行 Docker 命令(可选)
6.3.2、安装 Docker-compose
理论上,上面的 Docker 安装脚本已包含了 Docker Compose。
仅在输入docker compose version
命令后未得到版本号时,执行以下操作。
为了确保你获得最新稳定版本的 Docker Compose,你需要从它的官方 Github 仓库下载这个软件。
首先,确认他们发布页面上的最新版本。在撰写本文时,最新的稳定版本是2.29.7
。
使用以下命令下载:
接下来,设置正确的权限,使 docker compose 命令可以执行:
chmod +x ~/.docker/cli-plugins/docker-compose
要验证安装是否成功,您可以运行:
docker compose version
您会看到类似这样的输出:
Output
Docker Compose version v2.29.7
6.4、安装 RSSHub
# 或通过命令行下载 docker-compose.yml
wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
- 检查有无需要修改的配置
推荐添加 container_name
以指定容器名称
services:
rsshub:
image: diygod/rsshub
# 添加 container_name 以指定容器名称
container_name: "rsshub"
- 启动
# 运行 RSSHub
docker compose up -d
在浏览器中打开 http://你的服务器ip:1200
,enjoy it! ✅
尝试使用 http 访问时,托管在 Cloudflare 的域名,加密模式不能为
完全
或更高级别。你可以临时调整为
灵活
,或临时将域名的 DNS 解析状态从Proxied (云图标橙色) 改为 DNS only (灰色),来尝试是否配置成功。如有必要, 你还可以使用这些命令检查容器的运行情况:
# 查看运行状态
docker ps -a
# 查看运行日志(如果你没有指定容器名,可能有所不同,参考下面的「自动更新RSSHub」章节)
docker logs rsshub
6.5、自动更新 RSSHub
这里我们需要使用到 Watchtower,一个经典的用于自动更新 Docker 容器的工具。
# 创建一个文件夹
mkdir -p ~/Watchtower
# 进入文件夹
cd ~/Watchtower
# 创建 docker-compose.yml
vi docker-compose.yml # 也可以是你喜欢的编辑器
填入以下配置
--cleanup
:更新镜像后自动删除旧镜像。--interval 3600
:每3600s(1h)检测更新1次。--schedule "0 0 6 * * *"
代表每天6时0分0秒进行一次检测。
docker ps -a
命令查看如果你想将它更改为 rsshub,参考以下命令:
# docker rename 原容器名 新容器名
docker rename rsshub-rsshub-1 rsshub
如果你想要在更新后收到通知,可以在这个位置添加以下内容(参考 Watchover 文档)
配置说明以及更多自定义请参考 Watchover 官方文档
最后,运行 Watchtower
# 运行 Watchtower
docker compose up -d
# 查看运行状态
docker ps -a
# 查看运行日志(容器名可能有所不同)
docker logs watchtower
- 如果你希望 watchtower 自动更新全部 docker 容器的相关镜像,不指定任何容器即可。或者运行以下指令(与上面的方法二选一)
七、部署后-配置域名并开启 Https(可选)
只需要下列方式中选择最适合自己的一种即可,非公开实例(自用)不开也行。
如果你不配置域名直接使用 ip 访问也是可行的,但是域名应该会比 ip 更容易记住。
你还可以参考 7.2 中的 可选项 中的 3.为 docker 项目配置反向代理
章节,实现 ip/域名(不带端口号)访问
如果你尚未了解过相关知识,请从 7.1 开始阅读。
7.1、通过 CloudFlare 直接开启 HTTPS
7.2、使用 Google Trust Service 证书,开启 Htpps,同时启用ECC+RSA双SSL证书
八、实用技巧
搭配 RSSHub Radar 使用,它可以自动检测网页是否已经支持RSS。 并直接提取订阅 RSS 的链接