更新日记——基于阿里云服务器搭建一个Alist网盘页面
注意:资源站对应的二级域名由于连接到国内服务器,因此需要申请备案.之后,访问 snowmiku-drive.top 即可进入葱酱的资源下载界面。
现在,你可以从顶栏(移动端为菜单)中的资源->资源库按钮导航到资源库,并访问其中的公有文件夹
。
前言
Alist是一款适用于百度云、腾讯云、OneDrive等多种网络存储介质的文件整合和下载系统,通过Alist,我们可以方便的上传和下载文件,也可以用浏览器将文件便捷的从一台设备传输到另一台设备。
前段时间,笔者在使用一台年代久远的iPhone 4手机时,就遇到了文件传输的问题。在系统无法安装绝大多数现代软件,手机本身又不支持蓝牙传输文件的限制条件下,通过浏览器上传文件成为了一种方便且成本较低的方案。加上笔者想丰富下自己博客的功能,顺便练习Linux服务器的使用,以及熟悉基本的网络编程知识,我通宵一个晚上完成了这个从头到尾的配置,也经历了很多离奇的Debug过程。我将把调试的整个流程简要的在这篇文章中展现出来,供需要搭建个人网盘的小伙伴学习,大家也可以在评论区留下自己的想法。
你需要准备的
- 阿里云服务器
- PuTTY 终端连接软件
- VSCode 代码编辑器(可选)
- CloudFlare
服务端配置
首先,我们需要将服务端软件部署在一台连接互联网的服务器上。
购买服务
你需要购买阿里云提供的服务,以获得一台虚拟服务器的IP地址,完成后续的一切操作。访问阿里云官网,选择一款合适的服务器套餐并订购,根据指引进入控制台页面,此处会要求用户输入密码,这个密码就是Linux的登录密钥。笔者选择的操作系统是Ubuntu Server
。
在一切配置完成后,控制台的“概览”界面就会出现服务器的信息,我们复制服务器的公网IP地址。
连接服务器
打开PuTTY
客户端,在右侧会有要求输入主机名的提示框,输入后按Enter
,即可打开命令行界面。
若可以成功连接,此时会要求输入用户名(即为root
)和密码。输入完成,即可进入Ubuntu的命令行界面。
服务端基础配置
必要环境的配置
在初始化服务端后,我们需要进行一些基础的配置。
首先,更新系统包,执行:
1 | sudo apt update |
安装必要的软件包:安装 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 | cd /usr/local |
下载和解压文件:从官网下载以.tar.gz
结尾的文件,并解压到这个目录,执行:
1 | wget http://nginx.org/download/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 | ./configure --prefix=/usr/local/nginx --with-http_ssl_module # 生成编译脚本 |
设置权限和启动程序:
首先,创建一个nginx.service
文件,用vim
打开,粘贴以下内容:
1 | Description=nginx - high performance web server |
然后,执行以下操作:
1 | mv nginx.service /etc/systemd/system/ |
到这里,我们的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端口)仍旧没有反应。此时,我们首先应该在阿里云的服务器管理界面中的“安全组”设置中允许80
,5244
端口的数据,具体操作见下图:
在浏览器输入<IP>:5244
即可打开用户界面。
当然,如果想直接通过服务器IP访问网站,我们可以在CloudFlare中设置一个端口转发(后文会讲),也可以在nginx进行反向代理设置(二选一)。
执行:
1 | cd /usr/local/nginx/conf |
在文本编辑器中,你将会看到类似C语言的代码块,请在http
块内的server
块内做出如下修改:
1 | server { |
保存,然后执行指令验证且重启nginx。
1 | cd /usr/local/nginx/sbin |
此时,在浏览器输入IP地址,即可成功访问用户界面了。
网页端配置
进入后,默认不允许游客的访问,我们需要输入在Linux中生成的密码进行登录。
一开始,Alist的界面是空的,点击下方的“设置”按钮,进入后台,按照上述的Alist文档绑定你的云服务产品,此处不再赘述。另外,设置中还可以分配不同类型用户的访问操作权限,以及更换网站的Logo等。
绑定域名
我的域名(snowmiku-home.top)托管在CloudFlare,进入域名的管理界面(此处不同运营商的界面会不同)。
由于我们只有一个服务器的IP地址,因此我们添加一个A记录
,内容如下:
- 类型:A
- 名称:drive
- IPv4:你的服务器IP
保存,就可以从域名连接到网盘了。
啊…更新一下,境外域名备案不了,我重新买了一个域名
snowmiku-drive.top
,用上述方法添加www
和@
的A记录即可。
最终,我们将这个链接按照文档规范插入博客的选项卡配置单内,重新Deploy,即可从个人博客直接打开Alist界面了。
啊啊啊…我好健忘,那个…配置端口转发的教程看这个视频好了,最前面的3分钟:点击跳转
总结
其实是很简单的服务器操作,我也不知道为啥整了这么久,顺带学会了一堆Linux服务器常用的维护操作(
项目果然是最大的生产力啊(划掉
希望这篇文章对大家有帮助!博主休息一天去选小裙子惹
参考文献
- Ubuntu 系统下安装nginx: https://blog.csdn.net/ZhangXS9722/article/details/137098271
- Alist 官方文档:https://alist.nn.ci/zh/
- Ailst 简易部署教程:https://blog.csdn.net/weixin_39829577/article/details/138058961?spm=1001.2014.3001.5501
- Docker教程:https://www.runoob.com/docker/ubuntu-docker-install.html
- Docker连接错误的解决方案:https://blog.csdn.net/weixin_46203834/article/details/140556611
- 此外,关于Bug修复、Linux基础操作的一些资料来自通义千问AI。