共计 4984 个字符,预计需要花费 13 分钟才能阅读完成。
简介
AList 是一款阿里云盘的目录文件列表程序,后端基于 golang
最好的 http 框架 gin
,前端使用vue
和ant design
。
本程序仅供学习研究使用!!!发现任何 bug 请提 issue,部署上遇到问题欢迎加群交流。
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部 rebuild!!!
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部 rebuild!!!
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部 rebuild!!!
项目地址:
更新
2021.5.1
- 在线预览视频时间延长到 4 小时 (#96)
- 指定路径与深度 rebuild
- 优化请求:分次请求
- 增加右键菜单
- 支持多选、导出直链 / 秒传(需要 rebuild,借助https://bbs.tampermonkey.net.cn/thread-427-1-1.html)
- 直链编码
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://xpan.xlhhy.cn/(小懒公开库)

一键部署
- 脚本安装:
bash -c "$(curl -sS https://cdn.xlhhy.cn/alist/alist.sh)"
- Heroku 部署: https://github.com/sbwml/alist-heroku
部署完成后可访问 http://ip:5244 进行查看
获取 refresh_token
傻瓜方法:https://media.cooluc.com/get_token/(已弃用)- 手动方法:https://media.cooluc.com/decode_token/
- 二次验证账户 ¹:二次验证账户指的是通过“傻瓜方法”获取 refresh_token 出现应用内部错误或通过“手动方法”获取出现二次验证的账户。遇到这种情况的账户无法通过以上两种方式获取 refresh_token,只能使用 安卓设备 安装 阿里云盘 客户端进行获取。具体方法如下:
- 1、下载 阿里云盘 客户端,安装并登录账户。
- 2、下载 MT 管理器 并安装。
- 3、使用 MT 管理器 进入 Android/data/com.alicloud.databox/files/logs/trace/ 用户 UUID²/yunpan 目录,该目录下保存很多 .log(如:2021-04-20-12.log)日志文件,打开文件日期最新的 log 日志文件。在文本内搜索 refreshToken(通常在第 7 行),该字符后面的一串字符则是需要获取的 refresh_token,把它拷贝出来即可。
- 用户 UUID²:用户 UUID 是一串由数字和字母组成的字符串,该字符由阿里云盘自动生成,每个账户都具备唯一的 UUID。如果手机上曾经登录过多个账户,无法判断哪个 UUID 对应的账号。这种情况下建议使用 MT 管理器 删除 Android/data/com.alicloud.databox/files/logs 目录,重新登录阿里云盘客户端,此时日志路径只存在当前最后登录的账户 UUID。
手动部署
使用 gin 作为静态资源服务器
- 前往 AList Release 下载对应系统的程序,解压得到一个示例配置文件和一个系统名称文件夹里面包含运行文件
alist
- 前往 AList-web 下载打包好的前端,解压得到一个 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
download: true
static: dist
site_url: '*'
password: password #用于重建目录
ali_drive:
api_url: https://api.aliyundrive.com/v2
max_files_count: 200
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
:
$ tree
.
├── alist
├── conf.yml
└── dist
├── favicon.ico
├── index.html
└── static
├── css
│ ├── about.f0b54b1c.css
│ ├── app.4f0c3e9a.css
│ └── chunk-vendors.8f913079.css
├── img
│ └── alist.bcb68ba0.png
└── js
├── about.8108f65b.js
├── app.34cb39e5.js
└── chunk-vendors.131f0f41.js
5 directories, 12 files
在该文件夹下面执行下面的命令(Linux)
chmod +x alist
nohup ./alist > log.log 2>&1 &
ok,程序已经跑起来了。你可以 cat log.log 看看有没有报错。或者访问 http://ip:5244 进行查看。
守护进程(可选)
vim /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 stop alist
- 状态:
systemctl status alist
- 启用:
systemctl enable alist
- 禁用:
systemctl disable alist
使用 mysql(可选)
需要使用 utf8mb4 编码,修改 database 部分配置:
database:
type: mysql
user: 用户名
password: 密码
host: 127.0.0.1
port: 3306
name: 数据库名
自定义静态资源服务器
与使用 gin 作为静态资源服务器操作步骤差不多,不同的地方在于:
- 下载 AList-web 的源码,修改
.env.production
中的VUE_APP_API_URL
为具体部署的后端地址,然后yarn && yarn build
自行部署 conf.yml
中的server.site_url
填写前端部署的域名或者默认为 ’*’,需要正确填写,否则会报错。- 建议直接使用 gin 作为静态资源服务器,使用 nginx 的话因为路由使用了 history 模式(没有 #号好看一点),所以还需要设置一下 nginx:
参考:https://router.vuejs.org/zh/guide/essentials/history-mode.html
反向代理
给 alist 绑定一个域名,通过域名访问
这里演示使用宝塔反向代理设置
1. 在宝塔面板新建一个网站

2. 点开网站设置 - 反向代理

3. 添加反向代理
目标 URL 填写:http://127.0.0.1: 端口,这个端口是你部署的时候配置的端口

点击提交就可以通过域名访问了。
常见问题解答
- 如何给文件夹设置密码?
在要加密的目录名称后面加上.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 跳过检查更新。 - 怎么指定路径重建?
在哪个路径点 rebuild 就是在哪里重建。 - The input parameter limit is not valid. limit should be less than 200?
Xhofe/alist-web#22
