白嫖azure服务器搭建全套rss阅读环境

 首先,你需要整一个azure学生订阅,然后整一个Ubuntu虚拟机,这部分可以参考网上的教程。注意Ubuntu镜像选20.04或以上,然后节点位置需要根据你想订阅的源选一下,我的建议是选澳大利亚,等下会说明原因。记住,因为这Ubuntu镜像太新暂时还不能无损迁移,所以选前一定看清楚。

整好Ubuntu虚拟机后,先进azure管理页面,在左边“网络”里把1200,181,80,443放行(艺高人胆大的也可以不开1200和181)。


然后返回上一页,在DNS名称那里给服务器整个别名,这个别名就是你azure以后的域名,也就是等会certbot注册证书那里的域名。

然后ssh进虚拟机后台(现在的windows自带ssh了,不用另外安装putty),先sudo apt upgrade更新一下包,然后安装docker-compose,nginx(可选),certbot(可选)待用。注意这里certbot安装的时候按照官网教程里“我不知道服务器上跑的啥”去配置证书,否则可能等下配nginx反代的时候有端口绑定问题。

为了保证ssh进虚拟机的体验,建议对虚拟机开swap,弄个1g的swap就行了(我操作完之后内存和swap占用都在50%以下了),教程网上是有的,参考就行了。

接下来按官方教程使用docker-compose部署rsshub,注意这里最好按照用chromium-bundled镜像的配置来,也就是镜像用diygod/rsshub:chromium-bundled并且注释掉yml中要求注释掉的行,不用我过多解释了吧,人家yml里写的很清楚,以便使用某些用了puppetter的源(不然我也不用特地整azure了直接嫖vercel了)


然后部署tt-rss。虽然awesome ttrss很好,但是这里请选择用官方的tt-rss,主要原因是awesome ttrss默认用域名根目录访问,如果像我下面的教程一样只用一个域名的话除非nginx反代配置awesome ttrss在根目录,否则容易有奇怪的目录对应问题。而官方tt-rss默认使用一个子目录,比较方便我们这种只白嫖azure一个域名的。

部署官方tt-rss的时候,先按照教程把git库拖下来,然后cd到ttrss-docker目录来个mv .env-dist .env把环境变量文件搞出来,然后配置下环境变量,主要的是ADMIN_USER_PASS,ADMIN_USER_LEVEL和TTRSS_SELF_URL_PATH(写你刚才搞的域名:181/tt-rss,当然我这的有点不一样,后面再说),然后最后的HTTP_PORT端口映射要改成181(和前面开的181端口匹配),然后docker-compose up -d拉起就可以了


配置好之后用浏览器检查一下rsshub和ttrss是不是在正常跑着(这里就需要前面开放的1200和181端口了),正常的话继续下一步,不正常就重新弄下俩docker,特别是ttrss,self_url_path写错了的话打开会报错并告诉你该咋写的,重写就对了。

到上一步其实基本任务已经完成了,接下来属于可选内容。首先是https配置。按上面步骤配出来的rsshub和ttrss都是用http的,存在暴露浏览内容的风险(比如你订阅了一些大姐姐源或者不和谐内容源的话),使用https就能一定程度避免尴尬。

前面安装certbot的时候已经申请过azure别名域名的证书了,并且安装了nginx,现在通过nginx反代的方式来给他们套上https,在nginx的sites-enabled文件夹底下建立配置文件如下:

upstream ttrss {

    server 127.0.0.1:181;

}


server {

    listen 80;

    server_name  exam.ple.cloudapp.azure.com; #以下的所有域名部分均和你填写的azure DNS别名一致

    return 301 https://exam.ple.cloudapp.azure.com$request_uri;

}


server {

    listen 443 ssl;

    gzip on;

    server_name  exam.ple.cloudapp.azure.com;


    ssl_certificate /etc/letsencrypt/live/exam.ple.cloudapp.azure.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/exam.ple.cloudapp.azure.com/privkey.pem;


    location /tt-rss/ {

        proxy_redirect off;

        proxy_pass http://ttrss;


        proxy_set_header  Host                $http_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;


        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;

    }

    location ^~ /rsshub/ {

        proxy_redirect off;

        proxy_pass http://127.0.0.1:1200/;


        proxy_set_header  Host                $http_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;


        client_max_body_size        100m;

        client_body_buffer_size     128k;


        proxy_buffer_size           4k;

        proxy_buffers               4 32k;

        proxy_buffer_size           4k;

        proxy_buffers               4 32k;

        proxy_busy_buffers_size     64k;

        proxy_temp_file_write_size  64k;

    }

}

完成后重启下nginx,然后cd到ttrss的docker-compose所在目录,把self-host变量值改成用https的,保存后重新build一下(这里就能看出来为啥我说艺高人胆大的不用开放80和181端口也行了,因为nginx反代配好以后就都绑定到80和443了),测试成功后1200端口和181端口的放行规则就可以删除了。

这样可选内容就配置完成了。可以开始愉快的体验了。

然后补充一点可选的可选:自动更新rsshub,原理是写个crontab定时更新rsshub镜像并重新build。操作如下:ssh到虚拟机,然后sudo crontab -e,选择好编辑器(比如我习惯用vi),按crontab写法写下更新镜像和build的操作指令(也就是docker pull diygod/rsshub:chromium-bundled>/dev/null 2>&1 && docker-compose -f <path-to-rsshub.yml> up -d>/dev/null 2>&1)即可。注意任务时间用的是虚拟机所在地的时间(应该?因为我虚拟机在英国所以直接是utc)

最后有一点小问题解释一下

1. 为啥建议选澳洲服务器:因为有的源禁止日本服务器访问(比如playno1),有些源对靠近香港的服务器锁区(比如联合早报会锁成香港版造成输出的段落顺序错误),太远的服务器连接时间可能又过长,所以综合起来澳洲服务器算是最好选择。只是选澳洲服务器时别名别写太长,不然好像会在certbot还是nginx配置的时候有点问题需要改配置(因为我现在用的uk忘了是啥问题了但我自己踩过坑)

2. 个别源可能会出现在电脑浏览器中打开ttrss时图片无法加载的情况,这是因为我们给ttrss套了加密,但图片没加密,然后浏览器会自动尝试把图片加密但图片服务器会强制重定向回http就打架了……目前我没啥好解决办法,估计反代图片然后给rsshub加参数能解(但是碰到有两个域名完全无关的图片服务器的源就寄了),或者就直接允许你的ttrss加载不安全内容(可能被淦)。




评论

此博客中的热门博文

有道词典8.0去广告方法

Zotero Word插件汉化和移动到“引用”选项卡