封面 《はつゆきさくら》

效果

前言

因为在逛友链的时候看到别人搭建的 alist 网盘可以统一管理好多网盘,想到了自己也有好多网盘需要统一管理一下。同时由于我平时的参考文献都放在了 OneDrive 上,但是 ipad 上的 OneDrive 刷新速度实在是太慢了,甚至我主动刷新都没法获取我最新下载的论文,所以就想着把 OneDrive 也放到 Alist 上面去。同时我还想把我的网盘加上我自己的 pan 子域名,但是 vercel 无法挂 Alist,我自己的阿里云又没有备案没法挂域名,render 又被拿去挂监控了,想来想去还剩下一个 azure 的学生优惠可以用。于是就有了这篇文章。

Azure 准备

首先你需要一个 azure 的学生账号,这个可以去这里申请,申请完之后你会得到一个 azure 的学生账号,这个账号有 100 美元的额度,可以用来搭建一些小型的服务。然后你需要一个域名,这个域名可以去这里申请,在可以看到你的优惠余额。选择一台虚拟机直接开一个 ubuntu 系统即可,怎么便宜怎么来,具体白嫖的方法可以看底下的参考链接。

余额

Alist 安装

通过 ssh 登陆到我们的虚拟机,在 azure 的虚拟机控制面板里面可以看到我们的 ip,也可以自己设定一下 dns 获得域名。

ip

由于我自己的 azure 已经安装好了 alist,所以后面用阿里云来进行演示

在登上服务器之后,我们可以先进行一下更新依赖操作

1
2
sudo apt-get update
sudo apt-get upgrade

参考 AList 文档,因为我们使用的是 Ubuntu 系统,直接使用一键安装命令即可,

1
curl -fsSL "https://alist.nn.ci/v3.sh" | sudo bash -s install

AList安装完成

随后我们按照提示进入 alist 的安装目录,设置管理员账号

1
2
cd /opt/alist
./alist admin set 123456 #123456改成你的密码

打开 http://your_ip:5244 网页,这里不管是 azure 和阿里云都需要打开安全组的 5244 端口。azure 安全组的在网络设置中,顺便我们把后续要用到的 80 和 443 端口也打开一下。

azure入站设置

效果

后面正常按照 AList 的文档操作就可以挂载各种云盘

反向代理

很显然我们通常都是使用 http 的 80 端口或者 https 的 443 端口,而 AList 用的是 5244 端口,当然我们可以使用修改端口来设置,但是常见的方案是使用 nginx 进行代理。安装 nginx 直接按照文档就行,当然也最好先检查一下 nginx 有没有按照。

1
2
3
4
5
6
# 检查nginx是否安装
whereis nginx
# 安装nginx
sudo apt install nginx
# 看看效果
curl localhost

安装完成后修改 nginx 中的配置文件,我这里就直接简单一点执行 sudo vim /etc/nginx/sites-enabled/default,在其中的 service 里面添加下面代码,并把原先的 try_files $uri $uri/ =404; 给注释了。

1
2
3
4
5
6
7
8
9
10
11
12
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244;
# the max size of file to upload
client_max_body_size 20000m;
}

然后重启 nginx,sudo service nginx restart,就可以在 80 端口打开访问

配置 TLS/SSL

比较麻烦的是 SSL 证书,正规的只支持单域名的 DV 证书也要将近 3000,多少有点不值得。所以在看了看各种方案,打算继续沿用 cloudflare 的方案,其可以为服务器免费提供 SSL 证书,但是只有 cloudflare 支持。

首先先去 cloudflare 的 DNS 里面添加一条域名 A 类解析域名-DNS-记录
DNS解析

然后去申请 SSL 证书,申请路径如下,点击创建证书,有效期选择 15 年,然后选择自己的域名,然后将证书进行保存 0
SSL证书申请
SSL证书创建
SSL证书保存

然后我们继续编辑上文中的 nginx 配置文件,在刚才的 location 中添加下面的代码

1
2
3
4
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate your pem;
ssl_certificate_key your key;

继续重启 nginx,sudo service nginx restart 现在可以通过 https 访问了,效果如下

效果

设置 AList 别名

我的百度盘中存放我的游戏等等私密信息,OneDrive 主要是论文和个人信息,Google Drive 主要是代码,其他盘放一些杂七杂八的,不可能让游客都看到。最简单的方法就是设置游客不登录不可见,但是我还有一些数据集和论文资料需要共享,因此就轮到 AList 的别名登场了。

挂在一个 /guest 盘的 Alias,然后设置为游客可见只读,然后设置文件映射,具体的优化可以看文档

1
2
3
4
# alias路径:实际路径
参考文献:/onedrive/参考文献
开题参考:/onedrive/开题参考
百度云:/百度云/毕设数据集

如此一来,游客的浏览效果如下

游客浏览

总结

通过 AList 各种网盘教程,将大部分网盘都统一管理,如此一来方便我随时管理和解决 ipad 上弊端。

参考文献