阿里云ECS自建RSSHub:从环境配置到服务守护的完整实践

张开发
2026/4/18 7:44:51 15 分钟阅读

分享文章

阿里云ECS自建RSSHub:从环境配置到服务守护的完整实践
1. 为什么选择阿里云ECS自建RSSHub最近几年RSS订阅重新火了起来作为一个老网民我发现自己越来越依赖这种简洁高效的信息获取方式。但现实很骨感很多平台的官方RSS接口要么关闭要么不稳定。这时候RSSHub这个开源项目就成了救星——它能给几乎所有网站生成RSS订阅源。用过官方demo站点后我发现两个痛点一是访问经常被拦截二是公共实例有请求频率限制。自建就成了最佳选择。相比其他云服务阿里云ECS的优势很明显首先是价格透明按量付费最低0.12元/小时其次是网络质量稳定特别适合需要长期运行的服务最重要的是资源完全自主可控想装什么环境都行。不过自建过程确实踩了不少坑比如Node.js版本冲突、依赖安装报错、进程守护配置等。下面我就把完整的搭建过程包括这些坑的解决方案一步步分享给大家。2. 环境准备从零配置Node.js环境2.1 服务器基础配置首先登录阿里云控制台建议选择CentOS 7.9或Ubuntu 20.04这些长期支持版本。配置方面1核2G的共享型实例就够用了实测RSSHub内存占用不到500MB。重点是要在安全组里提前开放1200端口TCP协议这是RSSHub的默认服务端口。连接服务器后先做基础更新yum update -y # CentOS apt update apt upgrade -y # Ubuntu2.2 Node.js环境搭建官方推荐Node.js 12.0以上版本但很多系统自带的还是老版本。我遇到过最离谱的是CentOS 7默认只有Node.js 4.2.6直接装依赖会报错。推荐用nvm管理多版本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 16.14.2 # 当前LTS版本 nvm alias default 16验证安装node -v # 应显示v16.14.2 npm -v # 对应版本号如果遇到命令找不到的问题检查PATH是否包含~/.nvm/versions/node/v16.14.2/bin。也可以手动软链ln -s ~/.nvm/versions/node/v16.14.2/bin/node /usr/local/bin/node ln -s ~/.nvm/versions/node/v16.14.2/bin/npm /usr/local/bin/npm3. RSSHub部署实战3.1 获取源码与依赖安装克隆项目仓库建议用国内镜像加速git clone https://github.com.cnpmjs.org/DIYgod/RSSHub.git cd RSSHub安装依赖时常见两个坑网络超时可以换淘宝镜像源权限问题不要用root运行解决方案npm config set registry https://registry.npmmirror.com npm install --production --unsafe-perm如果遇到node-gyp编译错误需要安装编译工具链yum groupinstall Development Tools # CentOS apt install build-essential python3 # Ubuntu3.2 配置与启动服务复制示例配置文件并修改cp config.example.js config.js nano config.js重点配置项module.exports { // 监听所有网卡 host: 0.0.0.0, // 缓存时间秒 cache: { ttl: 5 * 60, }, // 请求频率限制 requestLimit: { max: 30, } }测试启动npm start用另一台机器测试访问curl http://服务器IP:1200/test4. 服务守护与优化4.1 使用PM2持久化运行直接npm start会在退出终端时停止服务需要进程守护。PM2是最佳选择npm install pm2 -g pm2 start lib/index.js --name rsshub --node-args--max-old-space-size256常用管理命令pm2 save # 保存进程列表 pm2 startup # 创建开机启动服务 pm2 logs rsshub # 查看日志4.2 内存泄漏防护RSSHub偶尔会出现内存泄漏可以通过以下方式缓解在PM2启动时添加--max-old-space-size参数限制内存设置定时重启pm2 start lib/index.js --name rsshub --cron-restart0 3 * * *4.3 日志与监控建议配置日志轮转pm2 install pm2-logrotate pm2 set pm2-logrotate:max_size 100M pm2 set pm2-logrotate:retain 305. 实际使用技巧5.1 路由使用示例获取B站UP主动态https://你的域名/bilibili/user/dynamic/401742377获取知乎热榜https://你的域名/zhihu/hotlist5.2 性能调优对于高频率更新的源可以调整缓存时间// config.js cache: { ttl: 3 * 60, // 3分钟 refresh: 30 // 提前30秒刷新 }5.3 安全防护建议在阿里云安全组设置IP白名单或者配置基础认证// config.js authentication: { username: admin, password: 你的密码 }这套方案在我的2核4G阿里云ECS上稳定运行了半年多日均处理5000请求毫无压力。最大的经验就是一定要用PM2做进程守护并且定期检查日志。如果遇到异常流量及时调整requestLimit配置项。

更多文章