阿里云FC + Alist Web 实现无服务器部署开源神器 Alist

QiuSYan ( ᗜ ‸ ᗜ )

AI 摘要

正在生成中……

前言

这个思路是我在Alist的Discussion里面看到的 传送门
于是花时间研究了下,感觉还行,所以就写一篇文记录一下。

小心吞金兽!

此文仅用于记录一个搭建思路,不建议实际实施(因为费用太贵了)
我之前随便测试了一下就扣我 ¥0.04,不敢想用多了会扣多少钱
还不如去买一个便宜的服务器整,用FC太不划算了

关于Alist

Alist是一个开源的文件索引和分享服务项目,它允许用户在互联网上建立自己的文件库,方便地进行文件的上传、下载和分享。以下是Alist的一些主要特性和功能:

  1. 简单易用:Alist的用户界面简洁直观,无论是上传文件、创建文件夹还是设置文件权限,都能快速完成。
  2. 轻量级:Alist的代码量非常小,且运行效率高,能在各种硬件设备上流畅运行。
  3. 文件预览:Alist支持多种常用文件格式的预览,如文本、图片、音频和视频等,用户无需下载文件即可查看内容。
  4. 多种存储后端支持:Alist支持多种云存储服务,如阿里云OSS、腾讯云COS等,用户可以选择最适合自己的存储服务。
  5. 自定义主题:Alist支持主题自定义,用户可以根据自己的喜好调整网站的外观。
  6. 完全开源:Alist的源代码完全开源,用户可以自由查看、修改,甚至参与到项目的开发中来。
  7. 支持WebDAV:Alist支持所有WebDAV存储,WebDAV是一种用于访问文件的标准协议,用户可以使用WebDAV客户端来管理文件。
  8. 黑暗模式:用户可以根据自己的喜好在明暗模式之间自由切换。
  9. 受保护的路由:可以为特定的路径添加密码保护和身份验证,增强安全性。
  10. 文件预览:Alist支持多种文件格式的预览,包括视频、音频、文档、PDF、图片等,甚至支持ipa文件的安装预览。
  11. 打包下载/批量下载:利用浏览器的stream API支持打包下载,无需使用服务器,同时支持使用Aria2进行批量下载。
  12. 单点登录:用户可以使用单点登录快速登录AList。
  13. 自动注册AList账号:通过单点登录,用户可以自动注册成为AList账号。
  14. 离线下载:AList支持将种子内容离线下载到指定目录,但需要良好的网络环境。
  15. 保险箱加密/解密文件:用户可以安全地将加密数据存储在远程存储提供商上,数据存储在保险箱中,提供商只能看到保险箱而无法查看数据内容。
  16. 更多新功能:AList还包括文本编辑器、README/HTML渲染、文件永久链接、Cloudflare Workers代理等功能。

Alist通过其强大的功能和灵活性,为用户提供了一个高效、便捷的文件管理和分享解决方案。用户可以根据自己的需求,将Alist部署在本地或云服务器上,实现个性化的文件服务。

以上内容来自 Kimi

Alist 开源地址:AlistGo/alist
官方文档:Alist文档
官方演示站点:Alist

需要的东西

  • 一个已实名的阿里云账号(需要有可用的OSS资源包)(用于持久化存储alist配置文件)
  • 一个 Github 账号
  • 一个 Vercel / Netlify / Cloudflare 账号 (看你希望部署在那个平台)

确保你有这些东西之后,然后就可以开始啦。

部署阿里云云函数

首先来部署云函数也就是 Alist 后端。

打开 阿里云OSS控制台新建一个 Bucket 用于存储 Alist 本体

当然如果你想在已有的 Bucket 中放入 Alist 本体文件也行,但是要记得单开一个目录给 Alist 不然文件会很乱

下载最新版 Alist alist-linux-amd64.tar.gz

下载完后解压,将其中的 alist 二进制文件上传至你新建的 Bucket 中即可。
这样文件存储部分就完成了。

然后打开 函数计算控制台,点击左侧的 函数 – 创建函数 后,选择 Web函数


配置项填写如下:

  1. 函数名称:随意
  2. 地域:建议选择香港(如果你要部署到CF Pages/Vercel/Netlify的话
  3. 运行环境:选择 Debian 10
  4. 代码上传方式:使用示例代码
  5. 启动命令:更改为 sh start.sh
  6. 监听端口:更改为 5244

随后点击创建。

创建后,点击配置,进入函数配置界面。然后进入 配置 – 权限 板块,给函数添加一个角色 AliyunFcDefaultRole

记得要给这个角色添加OSS的相关权限 策略编辑

然后往下滑,切换到 存储 选项,启用挂载OSS存储。

配置项填写如下:

  1. Bucket:选择你为 Alist 准备的 Bucket
  2. Bucket 子目录:如果你把Alist上传到了根目录就填 /,上传到其他目录就填对应目录
  3. OSS 访问地址:默认
  4. 函数本地目录:填写 /data
  5. 函数本地目录权限:读写
    点击 部署 即可。

这是我的

OSS挂载完毕之后,回到 代码 栏,进入 WebIDE,新建一个名为 start.sh 的文件,内容为

1
2
cd /data
./alist server

填写完毕之后一定要记得点那个部署代码

部署代码之后,去 配置 – 触发器 找到你的函数公网访问地址,这在后面会用到
到浏览器访问这个地址,当有一个 .htm 文件被浏览器下载到本地时说明你的 Alist 后端服务已经搭建成功了。

部署 Alist Web

接下来就是部署前端了。
到Github下载构建好的前端文件后,解压并修改 index.html

前端文件:dist.zip

找到这一段:

1
2
3
4
5
6
7
8
9
10
<script>
window.ALIST = {
cdn: undefined,
monaco_cdn: undefined,
base_path: undefined,
api: undefined,
main_color: undefined,
}
window.__dynamic_base__ = window.ALIST.cdn || ""
</script>

api 后的 undefined 更改为你之前在云函数找到的公网访问地址,填入即可。
示例:

1
api: "https://xxxxxxxxxxxxxxxxxx.fcapp.run"

保存后,选择一个你喜欢的平台将其部署即可,在此就不赘述

好累,不想写了

Some Tips

  1. 建议把 index.html 混淆一下以免泄露 api 地址,毕竟阿里云函数是按量计费
  2. 可以试试在Alist中添加路径为 /data/xxxxx 的本地存储来实现Alist预览/修改OSS存储文件的效果(?
  3. 不建议启用日志服务,因为日志也是计费的
  • 标题: 阿里云FC + Alist Web 实现无服务器部署开源神器 Alist
  • 作者: QiuSYan
  • 创建于 : 2024-11-05 17:17:15
  • 更新于 : 2024-11-21 16:39:32
  • 链接: https://blog.qiusyan.top/posts/12964.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
阿里云FC + Alist Web 实现无服务器部署开源神器 Alist