项目地址:
更新
2021.3.31
- 优化路径栏
- 修复了因为Referer导致不能下载的问题(122cygf)
- 增加了视频转码选项
- 图片缩略图预览
- 修复了json文件无法预览的bug
2021.3.17
本次更新需要修改配置文件,更新之后/首次运行都需要手动rebuild一下。
- 支持多盘
- 直链url密码哈希
- 修复不需要密码的文件复制直链也会携带密码的bug
- 数据库支持mysql
- 修复从文件返回目录Readme不更新的bug
- 重建目录时遮罩,优化体验
- 支持flv视频(部分浏览器可能不支持,详见https://github.com/Bilibili/flv.js/)
2021.3.13
- 后端引入sqlite3,列表部分不再依赖api,提高响应速度
- 支持搜索功能
- 前端使用vue3+ts重构
- url支持按照目录结果展示
- 音乐播放支持列表
- 支持隐藏文件夹
- 更好的密码支持
- 更早的更新:https://www.nn.ci/archives/alist-v0.html
预览
- https://alist.nn.ci (稳定版本,即Github Release的最新版本)
- https://alist.now.sh (开发版本,随着GitHub提交更新)
如何部署
第一步,获取refresh_token
https://passport.aliyundrive.com
打开上面网址登陆
复制了上面的内容后去JSON格式化的网站
我们只需要bizExt后面的值
如果觉得在网站里复制不方便可以把内容全都复制出来放到记事本里复制。
接着找一个base64解码的网站解码上面的值
如图,解码后,refresh token的值就是我们要的结果b0xxxxbce那个
refresh token获取完了,接着就是去部署程序了。
第二步,使用gin作为静态资源服务器
- 前往AList Release下载对应系统的程序,在宝塔中上传到root目录下解压得到一个示例配置文件和一个系统名称文件夹里面包含运行文件
alist
- 前往AList-web下载打包好的前端,在宝塔中上传到root目录下解压得到一个dist目录(可以上传到上一步解压后的文件夹后再解压)放到
alist
同级目录下 - 在同级目录下新建一个配置文件
conf.yml
,复制以下内容到该文件中,或直接使用示例配置文件进行修改
info: title: AList #标题 logo: "" #网站logo 如果填写,则会替换掉默认的 footer_text: Xhofe's Blog #网页底部文字 footer_url: https://www.nn.ci #网页底部文字链接 music_img: https://img.xhofe.top/2020/12/19/0f8b57866bdb5.gif #预览音乐文件时的图片 check_update: true #前端是否显示更新 script: #自定义脚本,可以是脚本的链接,也可以直接是脚本内容 autoplay: true #视频是否自动播放 preview: text: [txt,htm,html,xml,java,properties,sql,js,md,json,conf,ini,vue,php,py,bat,gitignore,yml,go,sh,c,cpp,h,hpp] #要预览的文本文件的后缀,可以自行添加 server: address: "0.0.0.0" port: "5244" search: true static: dist site_url: '*' password: password #用于重建目录 ali_drive: api_url: https://api.aliyundrive.com/v2 max_files_count: 3000 drives: - refresh_token: xxx #refresh_token root_folder: root #根目录的file_id name: drive0 #盘名,多个盘不可重复,这里只是示例,不是一定要叫这个名字,可随意修改 password: pass #该盘密码,空('')则不设密码,修改需要重建生效 hide: false #是否在主页隐藏该盘,不可全部隐藏,至少暴露一个 - refresh_token: xxx #只有一个盘的话,该段完全可以删除,反之有更多可以继续添加 root_folder: root name: drive1 password: pass hide: false database: type: sqlite3 dBFile: alist.db
- 填入最开始获取到的
refresh_token
,然后自行修改配置文件中默认的值 - 现在的情况应该是,目录下有两个文件
alist
、conf.yml
和一个文件夹dist
:
在该文件夹下面执行下面的命令(Linux)
chmod +x alist nohup ./alist > log.log 2>&1 &
ok,程序已经跑起来了。你可以cat log.log
看看有没有报错。或者访问http://ip:5244进行查看。
守护进程(可选)
vim /usr/lib/systemd/system/alist.service
添加以下内容,(可以在宝塔里直接访问目录/usr/lib/systemd/system
然后新建文件alist.service
)其中path_alist为alist所在的路径
[Unit] Description=alist After=network.target [Service] Type=simple WorkingDirectory=path_alist ExecStart=path_alist/alist -conf conf.yml Restart=on-failure [Install] WantedBy=multi-user.target
然后systemctl daemon-reload
重载配置,现在你就可以使用这些命令来管理程序了:
- 启动:
systemctl start alist
- 关闭:
systemctl stop alist
- 自启:
systemctl enable alist
- 状态:
systemctl status alist
接着就是反向代理,宝塔新建一个网站,静态的就是,设置反向代理
然后就可以访问网站了,你以为这样就结束了吗?NO NO NO.
第一次访问你应该会遇到下面这样的错误提示
这是因为还没重建目录,点击网页下方中间的重建
然后需要输入密码,就是第二步一开始配置文件里需要的密码如果照着上面的代码复制就是password
提示了success了就说明重建成功,接着需要输入的就是访问密码pass。上面的配置文件里设的。输入完密码就可以访问了,如果需要改密码或者不设密码改配置文件那里就行。
增加网盘也一样,配置文件注释都说明了
至此,alist程序搭建已经结束。
常见问题解答
- 如何给文件夹设置密码?
在要加密的目录名称后面加上.password-密码
,列表中会自动消除后面的密码部分。 - 如何隐藏文件夹
在要隐藏的文件夹名称后面加上.hide
即可。 - 如何重建目录树
点击网页底部的rebuild按钮,输入配置文件中设置的server.password确定即可。 - 如何设置根目录?
修改配置文件中的ali_drive.root_folder
为想要设置的文件夹的file_id
即可。文件夹的file_id是什么?根目录就是root,其他目录为点进文件夹之后的url中folder/
后面那一串 - 如何自定义网页底部链接?
修改配置文件中的footer_text
和footer_url
为要设置的内容,或者不填则不会显示。 - 怎么复制文件直链?
点进文件,右上角有复制直链的按钮。 - 修改网站icon?
替换掉dist
目录下的favicon.ico
即可。 - 为什么新上传的文件不显示/删除了的文件还在?
列表展示的是本地数据库里的数据,更新文件之后需要重建。 - 如何更新?
前端:下载新的打包好的文件,删掉原来的dist文件夹,解压新的dist放入原来的位置即可。后端:pkill alist
停掉老的进程,删除旧的alist
,下载新的alist,查看配置文件,补上新的配置项,再次运行即可。 - 运行显示检查更新之后直接报错?
可能是无法访问到GitHub的api,可以在命令行后面加上-skip-update
跳过检查更新。
其他设置
细心的你可能已经发现了配置文件里有这句话“root_folder: root #根目录的file_id”,这就是设置想显示的目录,那么子目录ID怎么找呢?
很简单,访问阿里盘官网,登陆账号进去,访问任意一个目录folder后面的那串就是ID
https://www.aliyundrive.com/drive/folder/xxxxxxxxxx