部署 RSSHub 遇见的坑

部署 RSSHub 遇见的坑

为了增加 RSS 订阅源,我在 VPS 上部署了 RSSHub。将主要步骤以及遇到的坑简要记载如下。

1 部署 RSSHub

我的 VPS 运行 Ubuntu 操作系统,已经安装了 Nginx 提供 Web 服务,已经从 Docker 官网安装了 Docker。

按照 RSSHub 的官方文档[1],用 Docker 部署 RSSHub 一切顺利。

1
2
3
4
mkdir ~/rsshub
cd ~/rsshub
wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
docker compose up -d

2 掉坑与脱坑

因为 Cloudflare 会过滤从 TTRSS 到 RSSHub 的请求[2],所以当我把 TTRSS 和 RSSHub 都接入 Cloudflare 的 CDN,TTRSS 就无法订阅 RSSHub 的订阅源。

我采取的解决办法是:保持 TTRSS 不动,不再让 RSSHub 接入 CDN。

2.1 在 Cloudflare 中设置 DNS 解析

在 Cloudflare 的 DNS 解析中,将 rsshub.kukmoon.com 的“代理状态”设置为“仅 DNS”
设置 DNS 解析

2.2 设置反向代理

新建一个站点配置文件:

1
sudo nano /etc/nginx/sites-available/rsshub.kukmoon.com.conf

粘贴以下内容[3]

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
server
{
listen 80;
server_name rsshub.kukmoon.com;

# https & ssl
listen 443 ssl http2;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
ssl_certificate ;
ssl_certificate_key ;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";


# Forbidden files or directories
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

# reversed proxy
location / {
proxy_pass http://127.0.0.1:1200/;
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_set_header Upgrade-Insecure-Requests 1;


client_max_body_size 100m;
client_body_buffer_size 128k;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

}


}

2.3 自动获取证书

我一开始为了图方便,申请了 Cloudflare 的 15 年证书,该证书必须与 Cloudflare CDN 配合使用。但是现在 https://rsshub.kukmoon.com 既然不使用 Cloudflare 的 CDN,这个证书就不能用了。

有鉴于此,我用 Certbot 从 Let’s Encrypt 申请证书[4]

安装 Certbot(只需安装一次):

1
2
sudo apt update
sudo apt install certbot python3-certbot-nginx

获取和安装证书(为 kukmoon.com 申请的证书,不能用于 rsshub.kukmoon.com):

1
sudo certbot --nginx -d rsshub.kukmoon.com

测试自动更新:

1
sudo certbot renew --dry-run

若测试成功,证书将自动更新,无需任何其他操作。

3 图片版权

题图:Image by gdesigneralex from flickr

头图:Image by Pexels from Pixabay

4 参考文献


求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”

部署 RSSHub 遇见的坑
https://blog.kukmoon.com/80cb34f66e0d/
作者
Kukmoon谷月
发布于
2025年1月12日
许可协议