
为了增加 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 参考文献