x@saodeyipi
1130 字
6 分钟
利用阿里云云函数 FC 搭建AList后端,每月仅需5毛!
还是建议购买一个便宜的云服务器来部署或者用家里云,这种方法很灵车
推荐Akile:https://akile.io/register?aff_code=503fe5ea-e7c5-4d68-ae05-6de99513680e
原理
- AList前端有一个专门的项目:https://github.com/AlistGo/alist-web 。可前往AList-Web部署教程。教程使用了Cloudflare Page进行前端部署,我们更建议你使用 https://vercel.com 来进行前端部署,因为更快。这些都完全免费
- 部署完毕前端后,我们就需要一个后端,它需要能够执行AList的二进制文件,并且能开放端口(默认为5244)来让前端可以和后端相互通信。在传统情况下我们会选择购买一台云服务器,或者用自己的电脑/家里云+Cloudflare Tunnel又或者是Serv00这种免费的托管。本篇我们使用阿里云FC函数计算,它虽然可以运行二进制文件,但是和传统架构大相径庭,我们要深入了解。
- FC函数是一个实例性服务。用户可以创建函数部署服务,当一定条件被触发(比如HTTP触发器)则创建新的实例开始运行用户的服务。也就是说这个实例是无状态的,如果直接拿来部署AList就会导致第一次配置完毕后过一段时间再访问就会变为初始状态。就算你一开始就使用一个全量包来部署,在部署后也无法对其进行更改,所以我们需要绑定一个NAS文件系统,用于数据持久化。但是NAS文件系统并不能直接绑定到代码的运行时 /code/xxx 目录,我们可以使用AList的指定配置文件参数,将NAS绑定到 /mnt/AList 然后指定配置文件到 /mnt/AList 。也就是通过 ./alist server —data /mnt/AList 命令来启动,这样就做到了数据持久化。
关于计费
- FC函数通过CU数来收费
- NAS通过存储空间来收费
实操
- 我们假设你已经部署完毕了前端。前端和后端的通信地址在根目录的 env.production 文件定义
- 我们目前并不知道这个后端URL如何填写,因为这个URL是由阿里云在FC函数创建完毕的时候才会展示,所以我们暂且搁置到一遍
- 接下来我们前往阿里云-函数计算FC官网 https://fcnext.console.aliyun.com/overview
- 依次点击 左侧边栏的 函数 -> 创建函数 -> Web函数。进入到创建Web函数的页面
- 函数名称填写AList,运行环境选择Debian 10或Debian 11,代码上传方式选择从文件夹上传代码,启动命令填写:./alist server —data /mnt/AList,监听端口填写5244
- 我们需要上传代码到函数,也就是AList的二进制文件,我们前往 https://github.com/AlistGo/alist/releases/latest 下载最新的Linux AMD64架构的二进制文件,也就是 alist-linux-amd64.tar.gz。将其解压,你会得到一个名为 alist的二进制文件,创建一个空文件夹将其放进去,然后上传这个文件夹到函数
- 然后点击左下角的创建
- 然后你会进入到函数的控制面板,依次点击 配置 -> 网络 -> 网络 编辑 -> 允许访问VPC:是 -> 自动配置。依次点击 配置 -> 存储 -> NAS文件存储 编辑 -> 挂载 NAS 文件系统:启用 -> 自动配置。依次点击 日志 -> 开通日志服务
- 现在回到 代码 界面,点击部署代码。稍等片刻会提示部署成功,然后点击 函数详情内的 HTTP触发器 ,复制公网访问地址。这个就是我们前文提到的要写到前端根目录的 env.production 文件的URL,将其填写进去,例如
VITE_API_URL = "https://aliyun-fc-alist.run"
- 提交你的新更改,前端会自动重新构建
- 尝试直接访问你的AList前端URL,它应该会顺利进入到AList的登录页面
- 此时查看控制面板的 实例 是否有一条新的实例正在工作,如果有,再前往日志查看该实例日志,你会看到AList初始化时生成的管理员密码,拿这个密码到前端URL登录AList,然后就可以正常使用了
疑难解答
- 如果出现正在加载储存: 查看你的日志,是否有存储加载失败,如果有可以尝试:
- 反复重新部署,直到能进后台然后删除那些加载失败的存储
- https://github.com/AlistGo/alist/discussions/3976
利用阿里云云函数 FC 搭建AList后端,每月仅需5毛!
https://onani.cn/posts/alist-for-aliyun/