云服务器自建 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):

  1. 登录云服务器控制台
  2. 找到“安全组/防火墙”设置
  3. 添加入站规则:协议 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,你可以用更低的时间成本获取高质量信息。


参考资源:

发表回复

Your email address will not be published. Required fields are marked *.

*
*