因为使用的1G内存的机器,docker-compose部署RSSHub后,内存使用率直接飙升到80%,无奈改用non-docker方式,内存使用率下降了20%。资源紧张的朋友,建议使用non-docker方式部署。

1.准备环境

安装依赖

RSSHub 需要 Node.js,并使用pnpm进行包管理和构建。因为只需要一个Node.js版本,所以使用 NodeSource安装。

# 更新您的包索引
sudo apt update

# 安装 Node.js (仅需要node22使用nodesource安装)
sudo curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs
node -v

# 安装/验证 pnpm
sudo npm install -g pnpm
pnpm -v

安装 Git 和其他工具

sudo apt install -y git vim

2.安装配置 Redis

安装 Redis

sudo apt install -y redis-server

配置 Redis

sudo vi /etc/redis/redis.conf

添加如下用户名密码配置:

yourusername on >yourpassword ~* +@all

启动并检查 Redis

sudo systemctl restart redis-server
sudo systemctl enable redis-server
sudo systemctl status redis-server

确保输出中显示 active (running)

3.下载并配置 RSSHub

克隆 RSSHub 仓库

cd /usr/share
sudo git clone https://github.com/DIYgod/RSSHub.git
sudo chown -R ubuntu /usr/share/RSSHub/
cd RSSHub

安装依赖

pnpm i

构建 RSSHub

如有需要,可以配置pnpm镜像源服务器,加速构建过程,如设置一下淘宝镜像源:

pnpm config set registry https://registry.npmmirror.com
pnpm build

配置环境变量

sudo touch .env

编辑 .env 文件,sudo vi /usr/share/RSSHub/.env,至少设置:

NODE_ENV=production
CACHE_TYPE=redis
REDIS_URL=redis://yourusername:yourpassword@localhost:6379/
PORT=1200

注意

如果 Redis 没有设置密码,可以简化为:

REDIS_URL=redis://localhost:6379/

如果 Redis 运行在其他服务器,将 localhost 替换为对应的 IP 或域名。

4.运行 RSSHub

启动 RSSHub

pnpm start

后台运行 RSSHub

使用 pm2 管理后台

sudo npm install -g pm2
sudo pm2 start pnpm --name rsshub -- start
sudo pm2 save
sudo pm2 startup

5.配置 Nginx 反向代理

如有需要,可以配置反向代理启动域名访问

安装 Nginx

sudo apt install -y nginx

配置 Nginx

编辑 /etc/nginx/conf.d/rsshub.conf

server {
    listen 80;
    listen [::]:80;
    server_name rsshub.example.com;

    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name rsshub.example.com;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES256:EECDH+AES128:!aNULL:!SHA1:!MD5:!EXPORT:!DES";
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    ssl_certificate /etc/ssl/example.com/fullchain.crt;
    ssl_certificate_key /etc/ssl/example.com/private.key;

    location / {
        proxy_pass http://127.0.0.1:1200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

测试并运行 Nginx

sudo nginx -t  # 测试配置
sudo systemctl reload nginx
sudo systemctl enable nginx
sudo systemctl start nginx

6.防火墙设置

iptables 防火墙设置

sudo apt install iptables-persistent
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save
sudo netfilter-persistent save
sudo netfilter-persistent reload

ufw 防火墙设置

sudo ufw allow 80/tcp 443/tcp
sudo ufw enable

7.更新 RSSHub

cd /usr/share/RSSHub
git pull
pnpm install
pnpm build
sudo pm2 restart rsshub

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐