在 Fly.io 上部署 alist 网盘程序

为什么选择 Fly.io

Fly.io 是一个基于容器的部署平台,致力于在全球各个区域提供贴近最终用户的部署环境。

跟传统的基于 VM 的云服务相比,基于容器的的部署平台不需要管理底层操作系统,能确保应用在开发和生产环境运行在同一环境,并且可以轻松缩放。

跟其他容器部署平台相比(例如 Heroku),Fly.io 提供了更多的部署区域(例如中国香港),提供数据持久层(Volume),自带虚拟私有网络(Heroku 企业版内容),更慷慨的免费政策,可以说是在很多层面是一个更好的 Heroku。

准备工作

Fly.io 自身的文档已经提供了 Docker 应用部署流程

本次部署是采用数据持久层来存档 alist 的 sqlite3 数据库,虽然 Fly.io 原生提供了 PostgreSQL 但是那得多用一个 VM 指标,并且免费用户一旦创建了 PostgreSQL 就消耗掉了免费的 1G 空间。

首先安装 flyctl

Fly.io 的大多数操作需要使用命令行,所以先要安装命令行工具 flyctl。

安装方式可以参考官方文档:安装 flyctl

1
2
3
curl -L https://fly.io/install.sh | sh #安装命令
export PATH=$PATH:/home/username/.fly/bin #添加到环境变量,一般安装程序会自动添加
source $HOME/.profile #刷新环境变量

注册 fly.io

在 Fly.io 创建应用之前先要注册,如果之前没有注册可以通过命令行执行:

1
flyctl auth signup

它会打开浏览器进入注册流程,注册完毕后会自己跳回到命令行通过验证。

要注意的是为了避免免费资源被滥用,fly.io 要求注册之后填写信用卡完成验证。当然,这样也便于转化付费用户。
今天(2022-10-30)我注册并没有要求验证信用卡,不知道是不是已经取消了这个要求。

如果之前已经注册过了,可以直接登录:

1
flyctl auth login

注册完成后,我们就可以正式开始部署应用。

开始部署

创建应用

1
2
3
git clone https://github.com/alist-org/alist-render
cd alist-render
flyctl launch

执行创建用户命令后,会问几个问题,名称啊,区域啊

1
2
3
4
5
6
7
8
9
Creating app in /path/to/project
Scanning source code
Detected a Dockerfile app
? App Name (leave blank to use an auto-generated name):
? Select organization: Name (personal)
? Select region: hkg (Hong Kong)
Created app app-slug in organization personal
Wrote config file fly.toml
? Would you like to deploy now? No

其中 App Name 需要是全局唯一的,而且之后不能更改,同时会作为 app 的子域名。如果只是尝试一下,也可以直接回车自动生成。其他选项按照需要选择即可。最后一步问是否现在部署,选择 No,因为在启动前还需要修改配置,设置环境变量,挂载目录等。

修改配置文件,端口为5244

1
2
3
[[services]]
http_checks = []
internal_port = 5244

创建一个 1G 的持久存储空间(最小单位 1)

1
flyctl volumes create data --size 1 --app APP_NAME

然后在 fly.toml 内添加以下内容:

1
2
3
[mounts]
destination = "/opt/alist/data"
source = "data"

部署应用

准备工作已经完成,现在可以部署 alist 应用,输入以下命令

1
flyctl deploy --remote-only

如果部署顺利,之后就可以用以下命令打开应用:

1
flyctl open

你也可以直接在浏览器打开 https://APP_NAME.fly.dev

如果部署不顺利,一般都是网络问题,需要科学上网
或者使用 Github Action 来部署

查看密码

部署的时候,日志会显示密码,如果没有保存,可以在后台日志里面看
https://fly.io/apps/APP_NAME/monitoring

1
flyctl ssh console -a APP_NAME

查看成品

本站例 https://disk.cuojue.org


参考:https://geeknote.net/Rei/posts/387


在 Fly.io 上部署 alist 网盘程序
https://cuojue.org/read/deploy-alist-in-flyio.html
作者
WeiCN
发布于
2022年10月30日
许可协议