无服务器实现部分alist功能

介绍

近日在 Alist前端如何部署到CloudFlare Pages上? · alist-org/alist · Discussion #6680 · GitHub 看到一个讨论,其中提及到了 alist 前后端分离的用法,个人测试了一下,写了个部署教程,同时也概括下优缺点和使用方面。

优点 缺点
仅个人作 302 下载使用,费用低 上传流量经过函数,流量费用高
前后端分离,部署方便 由于阿里云函数限制为单线程,冷启动速度慢
无需域名 不支持 webdav

提醒:后端还是收费的,只是适合那些没有固定服务器且一年访问次数不多的用户

后端部分

由于本人只注册了阿里云,因此使用阿里云演示,讨论中提及的腾讯云请自行测试。

  1. 前往 Releases · alist-org/alist · GitHub 下载 linux-amd64 架构二进制文件并解压出来(需要解压两次)
  2. 登录进入 https://fcnext.console.aliyun.com/ 界面
  3. 选择你需要部署的地区(在顶部的工作台旁边选择),如果只有国内网盘可以选择国内,国外可以选择香港;切换为 函数计算3.0(高亮字体显示的按钮),2.0 的操作一样但是设置较为分散要自己寻找
  4. 左侧进入 函数 → 创建函数 → web 函数:
    • 名称随意
    • 运行环境 debian10
    • 上传二进制文件,
    • 启动命令 alist server
    • 监听端口 5244;
    • 高级设置中规格方案按照自己的需求配置,个人使用的是 0.1 和 256
    • 高级设置中的单实例并发度拉到 200
    • 函数角色创建一个默认角色即可
    • alist 环境变量优先级高于配置,但是本人偏向使用单一配置文件
  5. 进入函数,先来到代码界面,点击 terminal 的 new terminal,运行 alist server 会得到 data 文件夹,此时使用 crtl+c 停止运行即可
  6. 修改 data 里的 config.json,个人使用 mysql 方便迁移,alist 也支持 postgres,如果使用 sqllite 则需要挂载 nas 或者 oss 进行持久化,在步骤 9 中提及
    "database": {
    "type": "mysql",
    "host": "主机名",
    "port": 3306,
    "user": "用户名",
    "password": "密码",
    "name": "数据库名",
    "db_file": "data/data.db",
    "table_prefix": "x_",
    "ssl_mode": "",
    "dsn": ""
  },
  ...
    "delayed_start": 1,
  1. 进入到代码标签旁边的 配置 → 触发器,复制公网访问地址即可,如果需要绑定域名请自行探索
  2. 解决加载时间过长的问题,二选一即可
    • 仍然需要等待半分钟左右:第 7 步的触发器下面有个 健康检查,分别填入 /ping 0 1 1 3 7
    • 需要更多费用:第 7 步的触发器下面有个 预留实例,创建预留实例数为 1,我的配置下它估算每小时 0.01,你也可以自行使用定时伸缩来实现夜间 0 预留仅白天预留 8 小时,估算大概每年 30 元
  3. 此步骤介绍 sqlite 的持久化,使用云数据库可跳过。在触发器的下面有个存储标签。二选一即可,完成下面操作后需要更改 运行时 的启动命令为/mnt/app/alist server,同时建议是已有配置上传到 oss 或 nas。
    • oss 方式:创建一个 oss bucket(私有读写,创建请自行搜索),选择 bucket,bucket 子目录看你的 oss 结构填写,函数本地目录填入 /mnt/app
    • nas 方式:此方式如果不具有同区域 vps 不建议使用,过于麻烦,在这里只是提及不做介绍,感兴趣自行搜索。

前端部分

使用 cloudflare 部署

  1. fork GitHub - alist-org/alist-web: 🗂️ The front end of Alist V3 (A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs) 项目
  2. 修改 api: undefined,api: "后端教程中第7步的地址",
  3. 创建 cloudflare page,选择你 fork 的项目仓库
    • 构建命令:npm run build
    • 构建输出目录:/dist
优点 缺点
免费,无需域名 语言只能为英文,无法在 alist 中自定义 head body

编译文件部署

使用阿里云 oss 演示,其他支持 静态页面 的对象存储一样可以。

  1. 下载 Releases · alist-org/alist-web · GitHub
  2. 解压,更改 api: undefined,api: "后端教程中第7步的地址", 上传到对象储存(注意需要 index.html 在 oss 根目录下)
  3. 进入 bucket配置域名管理 绑定你的域名
  4. 进入 数据管理静态页面 设置默认首页为 index.html
优点 缺点
香港地区免备案,国内访问快速 国内区域需备案,需要收费

别折腾啦,自己买一个N100的小主机,24小时开机一年电费也就几块钱。开他个10个虚拟机,你的电脑水平立马上两个档次。

即使这个主机只有CPU,即使电费在便宜的南方,一年电费都不止几块钱。做nas最基本还要硬盘,硬盘功耗可不比CPU,加一块功能就可以翻倍了,还要开10个虚拟机,内存用电也不少。设备按5年折旧报废算,均摊下来成本不算低。

单纯电费来讲 不追求特别高配 按成品nas 基本也就20w不到 一年几块倒不至于 五十块肯定是能下来的,至于硬件成本 真要是服务器用途而不是大存储 1000能搞定的

确实看用途。但是上来就N100,N100这台解决方案的全寿命使用成本其实没有很多人想象中低。
楼主这种感觉是真复杂,我觉得还不如有些路由刷个openwrt(或者自带openwrt),挂硬盘,运行alist