Image by yomochi@pixiv

RSShub配置记录

The Note of RSShub

  linkthis    2019-05-29    2659 words

天下没有免费的午餐。

RSS能够快速聚合自己想要的消息,可是很多网站出于各种原因并不提供RSS源。所以需要像RSShub这样的生成器来生成自己所需的RSS源。

安装NodeJS

NodeJS如果需要版本控制的话,最好使用nvm来安装。不过由于只是单纯的使用,所以直接使用包管理器安装即可。
如果需要较新或者对某版本有偏好,可以采用NodeSource提供的版本:

1
2
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs

在Debian上需以root用户执行命令。然后安装yarn替代npm

1
2
3
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt-get update && sudo apt-get install yarn

部署安装

下载RSShub源码至想要的目录:

1
git clone https://github.com/DIYgod/RSSHub.git

下载完成后安装所需依赖:

1
yarn install

安装过程大概不会超过2分钟;以后更新源代码之后需重新执行安装步骤。
安装完成之后执行:

1
yarn start

在浏览器中打开http://127.0.0.1:1200/http://IP:1200/,访问成功则安装完成。

Systemd配置

为了让RSShub在退出终端后继续运行并方便之后的管理,使用Systemd对其进行操作。 执行vi /etc/systemd/system/rsshub.service创建对应文件,可参考以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Rsshub
After=network.target
Wants=network.target

[Service]
Type=simple
WorkingDirectory=/home/RSSHub
ExecStart=/bin/bash -c 'yarn start'
Restart=on-failure
#User=nobody
#Group=nogroup

[Install]
WantedBy=multi-user.target

UserGroup可以省略,如需配置请注意权限问题
然后执行以下命令:

1
2
3
systemctl daemon-reload          ##重载Systemd脚本
systemctl enable rsshub.service  ##开机启动访问
systemctl start rsshub.service

如果需要自动更新源码等功能,则需另外配置资源钩子。

Nginx配置

为了避免每次输入IP的麻烦和安全性,配置Nginx作为代理;可以采用二次目录或者二级域名。
参考示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name rsshub.example.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log warn;

    ssl_certificate /var/www/ssl/fullchain.cer;
    ssl_certificate_key /var/www/ssl/example.com.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    ssl_dhparam /var/www/ssl/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:1200;
        proxy_set_header Host $host;
        proxy_redirect off;
        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还有许多可以配置的相关选项,如有需要可以自行添加。

Rsshub简单配置

1
2
listenInaddrAny: parseInt(process.env.LISTEN_INADDR_ANY) || 0
debugInfo: process.env.DEBUG_INFO || false

不允许公网连接;关闭调试信息。
其中一些网站需要配置用户名、密码、API或者COOKIE才能生成对应的RSS链接;需要配置的选项均可在config.js内找到。
如果使用Systemd进行管理,则应在脚本内添加Environment加入所需的环境变量方可生效:

1
Environment=LISTEN_INADDR_ANY=0 YOUTUBE_KEY=youtube_date_v3

其它参数配置参见官方文档。

垃圾Heroku,浪费时间。
本文采用CC BY-NC-ND 4.0许可协议进行许可,转载请注明出处。

本文最后更新时间为:2019-09-11-Wednesday-06:11:23 PM




Image of Wechat