注意:资源站对应的二级域名由于连接到国内服务器,因此需要申请备案.之后,访问 snowmiku-drive.top 即可进入葱酱的资源下载界面。
现在,你可以从顶栏(移动端为菜单)中的资源->资源库按钮导航到资源库,并访问其中的公有文件夹

前言

Alist是一款适用于百度云、腾讯云、OneDrive等多种网络存储介质的文件整合和下载系统,通过Alist,我们可以方便的上传和下载文件,也可以用浏览器将文件便捷的从一台设备传输到另一台设备。
前段时间,笔者在使用一台年代久远的iPhone 4手机时,就遇到了文件传输的问题。在系统无法安装绝大多数现代软件,手机本身又不支持蓝牙传输文件的限制条件下,通过浏览器上传文件成为了一种方便且成本较低的方案。加上笔者想丰富下自己博客的功能,顺便练习Linux服务器的使用,以及熟悉基本的网络编程知识,我通宵一个晚上完成了这个从头到尾的配置,也经历了很多离奇的Debug过程。我将把调试的整个流程简要的在这篇文章中展现出来,供需要搭建个人网盘的小伙伴学习,大家也可以在评论区留下自己的想法。

你需要准备的

  • 阿里云服务器
  • PuTTY 终端连接软件
  • VSCode 代码编辑器(可选)
  • CloudFlare

服务端配置

首先,我们需要将服务端软件部署在一台连接互联网的服务器上。

购买服务

你需要购买阿里云提供的服务,以获得一台虚拟服务器的IP地址,完成后续的一切操作。访问阿里云官网,选择一款合适的服务器套餐并订购,根据指引进入控制台页面,此处会要求用户输入密码,这个密码就是Linux的登录密钥。笔者选择的操作系统是Ubuntu Server

1

在一切配置完成后,控制台的“概览”界面就会出现服务器的信息,我们复制服务器的公网IP地址。

连接服务器

打开PuTTY客户端,在右侧会有要求输入主机名的提示框,输入后按Enter,即可打开命令行界面。

2

若可以成功连接,此时会要求输入用户名(即为root)和密码。输入完成,即可进入Ubuntu的命令行界面。

3

服务端基础配置

必要环境的配置

在初始化服务端后,我们需要进行一些基础的配置。
首先,更新系统包,执行:

1
2
sudo apt update
sudo apt upgrade -y

安装必要的软件包:安装 apt-transport-https、ca-certificates、curl 和 software-properties-common:

1
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

安装nginx

我们需要安装nginx软件实施反向代理,将Alist端口的数据转发到http端口上。
创建文件夹:执行:

1
2
cd /usr/local
mkdir nginx

下载和解压文件:从官网下载以.tar.gz结尾的文件,并解压到这个目录,执行:

1
2
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz

解压缩后,我们会获得一个名为nginx-1.20.2的子目录,里面存放了nginx的源文件。

安装依赖:执行:

1
sudo apt install gcc make libpcre3-dev zlib1g-dev openssl libssl-dev

编译并安装nginx:执行:

1
2
3
4
5
6
./configure --prefix=/usr/local/nginx --with-http_ssl_module  # 生成编译脚本
make #编译
make install # 编译完成,安装文件
# 以下代码验证是否安装成功
ls /usr/local/nginx -l
ls /usr/local/nginx/sbin -l

设置权限和启动程序
首先,创建一个nginx.service文件,用vim打开,粘贴以下内容:

1
2
3
4
5
6
7
8
9
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

然后,执行以下操作:

1
2
3
4
5
6
7
mv nginx.service  /etc/systemd/system/
cd /etc/systemd/system/
chmod 777 nginx.service
systemctl daemon-reload # 配置重新加载
systemctl enable nginx.service # 自启动
systemctl start nginx.service # 启动
systemctl status nginx.service # 查看状态

到这里,我们的nginx就启动完成了。

安装Alist

根据Alist的(官方文档)[https://alist.nn.ci/zh/guide/install/],在服务器安装有直接安装、脚本安装、Docker安装几种形式。笔者较为推荐进行Docker安装,这种方法可以对安装容器单独进行管理,且配置文件不会在系统产生残留。但由于Docker Hub的连接问题以及不熟悉操作等原因,笔者在Docker安装的Alist一直未能被成功访问,最终,笔者选择了进行脚本安装。
若将Alist安装在~/alist文件夹下,执行这条指令:

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

安装操作会自动完成,一般的,服务运行在端口5244,我们可以执行netstat -tulnp | grep 5244查看监听5244端口的服务。
接下来,我们需要为Alist设置登录密码,在最新版的Alist中,密码无法被反算出来,若使用随机密码,请务必牢记。
方法1:手动密码

1
./alist admin set <YOUR_PSWD>

方法2:随机生成

1
./alist admin random

终端将返回一个新的密码。

配置端口

此时,虽然nginx和Alist均启动,但使用浏览器访问(也就是http对应的80端口)仍旧没有反应。此时,我们首先应该在阿里云的服务器管理界面中的“安全组”设置中允许805244端口的数据,具体操作见下图:

4

在浏览器输入<IP>:5244即可打开用户界面。
当然,如果想直接通过服务器IP访问网站,我们可以在CloudFlare中设置一个端口转发(后文会讲),也可以在nginx进行反向代理设置(二选一)。
执行:

1
2
cd /usr/local/nginx/conf
sudo vim ./nginx.conf

在文本编辑器中,你将会看到类似C语言的代码块,请在http块内的server块内做出如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name localhost;
location / {
root /data/www/example.com;
index index.html index.htm;
# 在下方添加
proxy_pass http://localhost:5244; # 假设Alist监听在5244端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

保存,然后执行指令验证且重启nginx。

1
2
3
cd /usr/local/nginx/sbin
./nginx -t # 验证配置文件
./nginx -s reload # 重新加载nginx配置

此时,在浏览器输入IP地址,即可成功访问用户界面了。

网页端配置

进入后,默认不允许游客的访问,我们需要输入在Linux中生成的密码进行登录。
一开始,Alist的界面是空的,点击下方的“设置”按钮,进入后台,按照上述的Alist文档绑定你的云服务产品,此处不再赘述。另外,设置中还可以分配不同类型用户的访问操作权限,以及更换网站的Logo等。

绑定域名

我的域名(snowmiku-home.top)托管在CloudFlare,进入域名的管理界面(此处不同运营商的界面会不同)。
由于我们只有一个服务器的IP地址,因此我们添加一个A记录,内容如下:

  • 类型:A
  • 名称:drive
  • IPv4:你的服务器IP

保存,就可以从域名连接到网盘了。

啊…更新一下,境外域名备案不了,我重新买了一个域名snowmiku-drive.top,用上述方法添加www@的A记录即可。

最终,我们将这个链接按照文档规范插入博客的选项卡配置单内,重新Deploy,即可从个人博客直接打开Alist界面了。

示例图

啊啊啊…我好健忘,那个…配置端口转发的教程看这个视频好了,最前面的3分钟:点击跳转

总结

其实是很简单的服务器操作,我也不知道为啥整了这么久,顺带学会了一堆Linux服务器常用的维护操作(
项目果然是最大的生产力啊(划掉
希望这篇文章对大家有帮助!博主休息一天去选小裙子惹

参考文献