云服务器自建 RSSHub 完整指南:打造你的 AI 学习信息聚合中心
本文手把手教你在云服务器上部署 RSSHub,订阅吴恩达周刊 The Batch、Hugging Face 每日热门论文等 AI 学习资源,并给出 n8n 场景下的“容器内访问”思路,避免 60s 超时。
一、写在前面:为什么需要 RSSHub?
什么是 RSS?
RSS(Really Simple Syndication,简易信息聚合)是一种内容订阅格式。你可以把它想象成一个“信息快递员”——当你关注的网站更新内容时,RSS 会自动把新内容“送”到你的阅读器里,而不需要你一个个网站去刷新查看。
举个例子:假设你每天要看 10 个科技网站的更新,传统方式是打开 10 个网页逐一查看。而使用 RSS,你只需要打开一个阅读器,所有网站的更新都会自动汇总在一起,就像查看邮件一样方便。
什么是 RSSHub?
遗憾的是,很多现代网站已经不再提供 RSS 订阅功能。RSSHub 是一个开源项目,它可以为大量网站生成 RSS 订阅源。
简单来说,RSSHub 就像一个“翻译官”,它会定期访问那些没有 RSS 功能的网站,把网站内容“翻译”成 RSS 格式,让你可以在 RSS 阅读器里订阅。
为什么要自建?
RSSHub 官方提供了公共服务(rsshub.app),但由于使用人数众多,经常会遇到:
- 访问缓慢或超时
- 部分路由被限制
- 需要配置 Token/Key 的功能无法使用(如避免某些接口限流)
自建 RSSHub 可以更稳定、更可控,也更适合和 n8n 等自动化工具搭配。
二、准备工作
你需要准备什么?
| 准备项 | 说明 |
|---|---|
| 云服务器 | 任意云服务商(阿里云、腾讯云、AWS 等)。轻度使用 1 核 1G 可跑;如果你订阅的路由依赖浏览器渲染或并发较高,建议 2G+ |
| 操作系统 | Linux(推荐 Ubuntu / Debian) |
| Docker | 容器化部署工具(下文会一步步安装) |
| SSH 工具 | 用于连接服务器(Windows 可用 PuTTY,Mac/Linux 用终端) |
| (可选)域名 | 想要 HTTPS/更好访问体验可以绑定域名 |
什么是 Docker?
Docker 是一种“容器化”技术。你可以把它想象成一个“集装箱”——开发者把软件和它运行所需的所有依赖都打包进一个集装箱里。无论这个集装箱被运到哪台服务器,只要有 Docker,软件就能正常运行。
使用 Docker 部署 RSSHub 的好处是:
- 不用手动安装各种依赖
- 一条命令就能启动
- 升级和维护都很方便
提示:Docker Compose 现在主流命令是
docker compose(中间有空格)。如果你的系统只有docker-compose(带连字符),把本文里的docker compose替换成docker-compose即可。
三、开始部署 RSSHub
第 1 步:安装 Docker(如果还没安装)
通过 SSH 连接到服务器后执行:
sudo apt update
1. Docker(Ubuntu/Debian 仓库版,够用且省心)
sudo apt install -y docker.io
1. Docker Compose(优先安装 v2 插件;如果没有这个包,再用 docker-compose 也行)
sudo apt install -y docker-compose-plugin || sudo apt install -y docker-compose
1. 启动并设置开机自启
sudo systemctl enable --now docker
1. 验证安装
docker --version
docker compose version || docker-compose --version
可选:如果你不想每次都
sudo docker ...,可以把当前用户加进 docker 组(需要重新登录生效):sudo usermod -aG docker "$USER"如果后续执行
docker ...提示permission denied,说明当前用户还没加入 docker 组,临时在命令前加sudo即可。
第 2 步:创建项目目录和配置文件
mkdir -p ~/rsshub
cd ~/rsshub
创建 docker-compose.yml:
nano docker-compose.yml
推荐配置(带 Redis 缓存,更稳更快;不想用 Redis 也可以看注释改回内存缓存):
version: "3.8"
services:
rsshub:
image: diygod/rsshub:latest
container_name: rsshub
restart: unless-stopped
ports:
- "1200:1200"
environment:
- NODE_ENV=production
- TZ=Asia/Shanghai
1. 缓存(推荐 Redis:重启不丢、并发更稳)
- CACHE_TYPE=redis
- REDIS_URL=redis://redis:6379/
- CACHE_EXPIRE=300
1. 如果你想最简部署:删掉 redis 服务,并把上面三行改为:
1. - CACHE_TYPE=memory
1. - CACHE_EXPIRE=300
1. GitHub Trending(可选,用于提高限流阈值)
1. 获取方法: https://github.com/settings/tokens
1. Generate new token (classic),无需勾选任何权限
1. - GITHUB_ACCESS_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
1. (强烈建议)对外暴露时加访问保护:设置一个随机长字符串
1. 访问时按官方文档在 URL 参数或请求头携带 key
1. - ACCESS_KEY=change_me_to_a_long_random_string
depends_on:
- redis
1. 健康检查(用 Node 自检,避免镜像里没有 curl/wget)
healthcheck:
test:
[
"CMD",
"node",
"-e",
"require('http').get('http://127.0.0.1:1200/',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))"
]
interval: 30s
timeout: 10s
retries: 3
redis:
image: redis:7-alpine
container_name: rsshub-redis
restart: unless-stopped
volumes:
- redis-data:/data
volumes:
redis-data:
按 Ctrl + O 保存,Ctrl + X 退出编辑器。
第 3 步:启动 RSSHub
docker compose up -d
首次运行会下载镜像,需要等待几分钟。看到容器创建完成表示启动成功。
第 4 步:验证服务是否正常
docker ps | grep -E "rsshub|rsshub-redis"
curl -sS http://localhost:1200/ | head
如果能看到 Welcome to RSSHub! 相关的 HTML 内容,说明部署成功。
第 5 步:开放访问(安全组/防火墙)
如果你需要从外网访问 RSSHub,在云服务器控制台的安全组中开放端口(如 1200):
- 登录云服务器控制台
- 找到“安全组/防火墙”设置
- 添加入站规则:协议 TCP,端口 1200
建议:不要长期对
0.0.0.0/0全网开放。更稳妥的方式是:
- 只放行你自己的公网 IP
- 或者配置
ACCESS_KEY(上文已预留)再开放- 或者用 Nginx/Caddy 反代到域名并加 HTTPS/鉴权
如果你在服务器上启用了 UFW,也需要放行端口:
sudo ufw allow 1200/tcp
sudo ufw status
四、配置 AI 学习必备的 RSS 源
下面是几个对 AI 学习者很有价值的 RSS 订阅源示例(把 你的服务器IP 换成你的公网 IP 或域名):
1)吴恩达周刊 The Batch(强烈推荐)
http://你的服务器IP:1200/deeplearning/the-batch
2)Hugging Face 每日热门论文(强烈推荐)
http://你的服务器IP:1200/huggingface/daily-papers
3)GitHub Trending(可选,建议配置 Token)
http://你的服务器IP:1200/github/trending/daily/any
如果你启用了
ACCESS_KEY,记得按官方文档在请求里携带 key(例如在 URL 里追加?key=...)。
五、解决 n8n 中 RSS Read 节点超时问题
问题描述
如果你在同一台服务器上部署了 n8n,在 RSS Read 节点中填入 http://服务器公网IP:1200/... 时,可能会遇到:
Request timed out after 60000ms
但同样的地址在浏览器中可以正常访问。
更常见的原因
这通常是容器网络的回环/NAT 绕路问题:容器访问宿主机的公网 IP,有时会走“出去再回来”的路径,链路不稳定或被安全策略影响,最终在 n8n 的默认 60s 超时内失败。
更稳妥的做法是:让 n8n 直接在 Docker 网络内部访问 RSSHub。
方案 A:最快修复(手动把 n8n 加入 RSSHub 网络)
docker network ls
1. RSSHub 用 docker compose 启动时,默认网络一般是 rsshub_default(取决于项目名/目录名)
docker network connect rsshub_default n8n
验证连通性:
docker exec n8n wget -q -O - --timeout=5 http://rsshub:1200/ || docker exec n8n curl -fsS --max-time 5 http://rsshub:1200/
在 n8n 的 RSS Read 节点里,把 URL 从公网地址改成容器内地址:
http://rsshub:1200/deeplearning/the-batch
方案 B:更推荐(用 external network,一劳永逸)
如果你经常 docker compose up -d 让容器重建,方案 A 可能需要重复操作。更推荐创建一个共享网络,并在两个 compose 文件里都声明使用它:
docker network create ai-stack
然后在 RSSHub 的 docker-compose.yml 和 n8n 的 compose 文件里都加上:
networks:
ai-stack:
external: true
services:
your-service:
networks:
- ai-stack
这样 n8n 就能长期稳定用 http://rsshub:1200/... 访问 RSSHub。
六、日常维护命令
1. 查看运行状态
docker ps | grep -E "rsshub|redis"
1. 查看实时日志(按 Ctrl+C 退出)
docker logs -f rsshub
1. 重启服务
cd ~/rsshub && docker compose restart
1. 停止并删除容器(数据卷默认保留)
cd ~/rsshub && docker compose down
1. 更新到最新版本
cd ~/rsshub
docker compose pull
docker compose up -d
七、写在最后
现在你已经拥有了一个属于自己的 RSSHub 服务,可以:
- 订阅几乎任何网站的内容更新
- 在 RSS 阅读器中统一管理信息源
- 配合 n8n 等自动化工具,构建个人知识管理系统/AI 学习信息流
持续跟踪前沿动态很重要。通过 The Batch 和 Hugging Face Daily Papers,你可以用更低的时间成本获取高质量信息。
参考资源: