为了增加 RSS 订阅源,我在 VPS 上部署了 RSSHub。将主要步骤以及遇到的坑简要记载如下。
我的 VPS 运行 Ubuntu 操作系统,已经安装了 Nginx 提供 Web 服务,已经从 Docker 官网安装了 Docker。
按照 RSSHub 的官方文档,用 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 的请求,所以当我把 TTRSS 和 RSSHub 都接入 Cloudflare 的 CDN,TTRSS 就无法订阅 RSSHub 的订阅源。
我采取的解决办法是:保持 TTRSS 不动,不再让 RSSHub 接入 CDN。
2.1 在 Cloudflare 中设置 DNS 解析
在 Cloudflare 的 DNS 解析中,将 rsshub.kukmoon.com 的“代理状态”设置为“仅 DNS”
2.2 设置反向代理
新建一个站点配置文件:
1
| sudo nano /etc/nginx/sites-available/rsshub.kukmoon.com.conf
|
粘贴以下内容:
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; 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";
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; }
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 申请证书。
安装 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 参考文献