一个基于 hono 的 RSSHub 代理服务,支持自动负载均衡、自动容错和反向代理 RSSHub 实例,支持 Node.js/Docker/Vercel/Cloudflare Workers 等方式部署。
https://github.com/CaoMeiYouRen/rsshub-never-die#readme
- node >=18
你可以在这里找到更多公共实例
点击下方按钮一键部署到 Cloudflare Workers
- 修改
wrangler.toml
配置文件。
name = "rsshub-never-die"
main = "dist/app.mjs"
minify = true
compatibility_date = "2024-10-20"
compatibility_flags = ["nodejs_compat"]
[vars]
# 超时时间(ms)
TIMEOUT = 60000
# 最大请求体大小(字节),默认 100MB
MAX_BODY_SIZE = 104857600
# 缓存时间(秒)
CACHE_MAX_AGE = 300
# RSSHub 实例 的 URL 地址,,使用英文逗号分隔。
# 官方实例 https://rsshub.app 不用列出,默认添加。
RSSHUB_NODE_URLS = 'https://rsshub.rssforever.com, https://hub.slarker.me, https://rsshub.pseudoyu.com, https://rsshub.ktachibana.party, https://rsshub.woodland.cafe, https://rss.owo.nz, https://yangzhi.app, https://rsshub.henry.wang, https://rss.peachyjoy.top, https://rsshub.speednet.icu'
# 访问码,注意和 RSSHub 的 ACCESS_KEY 不是同一个。
# 留空则不做限制
# 启用后,在url中添加 authKey 参数即可,例如 authKey=yyyy
AUTH_KEY=''
# 运行模式,有三种模式,负载均衡、自动容灾、快速响应模式
# 负载均衡:负载均衡模式下,会随机选择一个 RSSHub 实例进行请求。但不管请求成功还是失败,都会返回给客户端。
# 自动容灾:自动容灾模式下,会随机选择一个 RSSHub 实例进行请求。如果请求成功,则返回给客户端。如果请求失败,则会选择下一个实例进行请求。如果所有实例都失败,则返回给客户端错误。
# 在自动容灾模式下,由于重新请求需要时间,会增加整体的请求时间。
# 快速响应:会随机选择多个 RSSHub 实例进行请求。并返回最快的成功响应。如果全部失败,则则返回给客户端错误。
# 快速响应模式下,会增加背后实例的负载。
# 默认为负载均衡模式
# 可选值:loadbalance, failover, quickresponse
MODE = 'loadbalance'
- 构建并部署到
Cloudflare Workers
npm run build && npm run deploy:wrangler
点击下方按钮一键部署到 Vercel。
支持两种注册表:
- Docker Hub:
caomeiyouren/rsshub-never-die
- GitHub:
ghcr.io/caomeiyouren/rsshub-never-die
支持以下架构:
linux/amd64
linux/arm64
有以下几种 tags:
Tag | 描述 | 举例 |
---|---|---|
latest |
最新 | latest |
{YYYY-MM-DD} |
特定日期 | 2024-06-07 |
{sha-hash} |
特定提交 | sha-0891338 |
{version} |
特定版本 | 1.2.3 |
wget https://raw.githubusercontent.com/CaoMeiYouRen/rsshub-never-die/refs/heads/master/docker-compose.yml
检查有无需要修改的配置
vim docker-compose.yml # 也可以是你喜欢的编辑器
在
docker-compose.yml
文件中修改RSSHUB_NODE_URLS
字段即可修改 RSSHub 实例地址。
启动
docker-compose up -d
在浏览器中打开 http://{Server IP}:3000
即可查看结果
确保本地已安装 Node.js 和 pnpm。
# 下载源码
git clone https://github.com/CaoMeiYouRen/rsshub-never-die.git --depth=1
cd rsshub-never-die
# 安装依赖
pnpm i --frozen-lockfile
# 构建项目
pnpm build
# 启动项目
pnpm start
在浏览器中打开 http://{Server IP}:3000
即可查看结果。
在
.env
文件中修改RSSHUB_NODE_URLS
字段即可修改 RSSHub 实例地址。
直接将原本的 rsshub.app
域名替换为部署的域名即可。
例如:
如果基础路径为 https://example.vercel.app
,则原本
https://rsshub.app/github/activity/CaoMeiYouRen
路由的地址就是
https://example.vercel.app/github/activity/CaoMeiYouRen
# 运行端口
PORT=3000
# 超时时间(ms)
# 如果在 vercel 中运行,则还要修改 vercel.json 中的 maxDuration 字段(单位:秒)
TIMEOUT=60000
NODEJS_HELPERS=0
# 是否写入日志到文件
LOGFILES=false
# 日志级别
# LOG_LEVEL=http
# 最大请求体大小(字节),默认 100MB
# MAX_BODY_SIZE=104857600
# RSSHub 实例 的 URL 地址,,使用英文逗号分隔。
# 官方实例 https://rsshub.app 不用列出,默认添加。
RSSHUB_NODE_URLS='https://rsshub.rssforever.com, https://hub.slarker.me, https://rsshub.pseudoyu.com, https://rsshub.ktachibana.party, https://rsshub.woodland.cafe, https://rss.owo.nz, https://yangzhi.app, https://rsshub.henry.wang, https://rss.peachyjoy.top, https://rsshub.speednet.icu'
# 缓存时间(秒)
CACHE_MAX_AGE=300
# 访问码,注意和 RSSHub 的 ACCESS_KEY 不是同一个。
# 留空则不做限制
# 启用后,在url中添加 authKey 参数即可,例如 authKey=yyyy
AUTH_KEY=''
# 运行模式,有三种模式,负载均衡、自动容灾、快速响应模式
# 负载均衡:负载均衡模式下,会随机选择一个 RSSHub 实例进行请求。但不管请求成功还是失败,都会返回给客户端。
# 自动容灾:自动容灾模式下,会随机选择一个 RSSHub 实例进行请求。如果请求成功,则返回给客户端。如果请求失败,则会选择下一个实例进行请求。如果所有实例都失败,则返回给客户端错误。
# 在自动容灾模式下,由于重新请求需要时间,会增加整体的请求时间。
# 快速响应:会随机选择多个 RSSHub 实例进行请求。并返回最快的成功响应。如果全部失败,则则返回给客户端错误。
# 快速响应模式下,会增加背后实例的负载。
# 默认为负载均衡模式
# 可选值:loadbalance, failover, quickresponse
MODE = 'loadbalance'
适用情况:
- 负载均衡: 有多个 RSSHub 实例节点,需要将请求随机转发到某个实例时。使用 负载均衡 模式即可实现该需求。
- **自动容灾:**有多个 RSSHub 实例节点,希望在某个节点失效时自动将请求转发到下一个实例。使用 自动容灾 模式即可实现该需求。
- 快速响应: 有多个 RSSHub 实例节点,希望并发请求,并返回最快成功的那个。使用 快速响应 模式即可实现该需求。在 快速响应 模式下,本项目会从提供的 RSSHub 实例节点中随机挑选 5 个,加上官方实例,共计 6 个节点,并发请求,并返回最快 成功 的那个响应。即便有部分实例失效,也可以从其他正常的实例中返回最快的结果。
- 不需要配置项的路由: 对于所有不需要配置项的路由,均可以正常访问。
- 反向代理: 由于一些原因,你可能无法访问部分 RSSHub 实例,通过本项目作为代理,你可以正常访问到有效的 RSSHub 实例(需要准备一个有效的域名)。
不适用情况:
- 需要配置项的路由: 对于部分需要配置项才能正常工作的路由,由于公共实例并未提供相关配置,故这些路由均无法正常工作。
pnpm run dev
pnpm run build
pnpm run lint
pnpm run commit
CaoMeiYouRen
-
Website: https://blog.cmyr.ltd/
-
GitHub: @CaoMeiYouRen
欢迎 贡献、提问或提出新功能!
如有问题请查看 issues page.
贡献或提出新功能可以查看contributing guide.
如果觉得这个项目有用的话请给一颗⭐️,非常感谢
Copyright © 2024 CaoMeiYouRen.
This project is MIT licensed.
This README was generated with ❤️ by cmyr-template-cli