白嫖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加载不安全内容(可能被淦)。
评论
发表评论