在 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 |
|
注册 fly.io
在 Fly.io 创建应用之前先要注册,如果之前没有注册可以通过命令行执行:
1 |
|
它会打开浏览器进入注册流程,注册完毕后会自己跳回到命令行通过验证。
要注意的是为了避免免费资源被滥用,fly.io 要求注册之后填写信用卡完成验证。当然,这样也便于转化付费用户。
今天(2022-10-30)我注册并没有要求验证信用卡,不知道是不是已经取消了这个要求。
如果之前已经注册过了,可以直接登录:
1 |
|
注册完成后,我们就可以正式开始部署应用。
开始部署
创建应用
1 |
|
执行创建用户命令后,会问几个问题,名称啊,区域啊
1 |
|
其中 App Name
需要是全局唯一的,而且之后不能更改,同时会作为 app
的子域名。如果只是尝试一下,也可以直接回车自动生成。其他选项按照需要选择即可。最后一步问是否现在部署,选择 No
,因为在启动前还需要修改配置,设置环境变量,挂载目录等。
修改配置文件,端口为5244
1 |
|
创建一个 1G
的持久存储空间(最小单位 1)
1 |
|
然后在 fly.toml 内添加以下内容:
1 |
|
部署应用
准备工作已经完成,现在可以部署 alist 应用,输入以下命令
1 |
|
如果部署顺利,之后就可以用以下命令打开应用:
1 |
|
你也可以直接在浏览器打开 https://APP_NAME.fly.dev
如果部署不顺利,一般都是网络问题,需要科学上网
或者使用 Github Action 来部署
查看密码
部署的时候,日志会显示密码,如果没有保存,可以在后台日志里面看
https://fly.io/apps/APP_NAME/monitoring
1 |
|