- A+
Alist是一款支持本地存储、阿里云盘、天翼云盘、蓝奏云等多种存储的目录文件列表程序,支持 web 浏览与 webdav,完美解决了单个网盘容量不足、网盘数量太多不方便管理与使用的痛点。
支持的功能
- 多种存储
- 部署方便,开箱即用
- 文件预览(PDF、markdown、代码、纯文本……)
- 画廊模式下的图像预览
- 视频和音频预览(mp4、mp3 等)
- Office 文档预览(docx、pptx、xlsx、...)
-
README.md
预览渲染 - 文件永久链接复制和直接文件下载
- 黑暗模式
- 国际化
- 受保护的路由(密码保护和身份验证)
- WebDav(具体见https://alist-doc.nn.ci/docs/webdav )
- Docker 部署
- Cloudflare workers 中转
- 文件/文件夹打包下载
- 支持视频列表播放和字幕(ass,srt,vtt)
- 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制
项目地址:https://github.com/Xhofe/alist
官方文档:https://alist-doc.nn.ci/docs/intro
部署
先打开 https://github.com/Xhofe/alist 点个 star😁
一键代码
安装
curl -fsSL "https://nn.ci/alist.sh" | bash -s install
DANGER
已经安装过再次执行安装会删除之前的数据,更新请使用更新命令。
更新
curl -fsSL "https://nn.ci/alist.sh" | bash -s update
卸载
curl -fsSL "https://nn.ci/alist.sh" | bash -s uninstall
自定义路径
默认安装在/opt/alist
,要自定义安装路径,添加安装路径为第二个参数,必须是绝对路径(路径以alist结尾时直接安装到给定路径,否则会安装在给定路径alist目录下),如安装到/root
:
# 安装
curl -fsSL "https://nn.ci/alist.sh" | bash -s install /root
# 更新
curl -fsSL "https://nn.ci/alist.sh" | bash -s update /root
# 卸载
curl -fsSL "https://nn.ci/alist.sh" | bash -s uninstall /root
手动部署
运行起来
- 打开 AList Release 下载要部署的系统对应的文件
- 解压下载对文件得到可执行文件:
tar -zxvf alist-xxxx.tar.gz
(Linux) - 赋予程序执行权限:
chmod +x alist-xxxx
- 运行程序:
./alist-xxxx
- 完成,后台默认密码为
alist
守护进程
vim /usr/lib/systemd/system/alist.service
添加以下内容,其中 path_alist 为 alist 所在的路径
(vim /etc/systemd/system/alist.service)二选一,看自己的系统
然后 systemctl daemon-reload
重载配置,现在你就可以使用这些命令来管理程序了:
- 启动:
systemctl start alist
- 关闭:
systemctl stop alist
- 自启:
systemctl enable alist
- 状态:
systemctl status alist
- 重启:
systemctl restart alist
使用 Docker
- 开发版:
docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 --name="alist" xhofe/alist:v2
- 稳定版:
docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 --name="alist" xhofe/alist:latest
- 指定版本:具体见 https://hub.docker.com/r/xhofe/alist
注意:/etc/alist:/opt/alist/data应根据具体路径进行设置。
从源码运行
首先需要有 nodejs、yarn、golang>1.17 的环境
构建前端
clone https://github.com/Xhofe/alist-web 这个项目,执行 yarn&& yarn build,得到 dist 目录下的目标文件
构建后端
将上一步 dist 目录下的文件全部拷贝至 https://github.com/Xhofe/alist 项目下的 public 目录,然后:
反向代理
程序默认监听 5244 端口,要实现 https 访问,需要使用 nginx 反向代理,在配置文件中加入
使用
后台默认密码为 alist
添加账号
所有账号的必填项:
- name(名称):唯一标识符,也是当有多个账号时展示的路径
- index(索引):当有多个账号时,用于排序,越小越靠前
- proxy(带理):是否允许服务器中转下载
本地存储
只需填写根目录路径即可,可以是绝对路径,也可以是程序所在的相对路径
阿里云盘
- refresh_token(刷新令盘):如何获取参考这个issue 通过手机端抓包 / 查找日志(
/data/media/0/Android/data/com.alicloud.databox/files/logs/trace/
)来获取, 或使用 https://media.cooluc.com/decode_token/ - 根目录 file_id:打开阿里云盘官网,点进去你要设置的文件夹时 url 后面的一串,如
https://www.aliyundrive.com/drive/folder/5fe01e1830601baf774e4827a9fb8fb2b5bf7940
就是5fe01e1830601baf774e4827a9fb8fb2b5bf7940
- order_by(排序):可选值为
name
,size
,updated_at
,created_at
- order_direction(排序方向):可选
ASC
(正序),DESC
(倒序)
Onedrive
打开 https://tool.nn.ci/onedrive/request
创建应用
- 在打开的页面,选择所在区域,点击创建应用
- 登陆后选择「注册应用程序」,输入「名称」,选择「任何组织目录中的账户和个人」(注意这里不要看位置选择而是看文字,部分人可能是中间那个选项,不要选成单一租户或者其他选项,否则会导致登陆时出现问题),输入重定向 URL 为 https://tool.nn.ci/onedrive/callback,「注册」即可,然后可以得到
client_id
- 注册好应用程序之后,选择「证书和密码」,点击「新客户端密码」,输入一串密码,选择时间为最长的那个,点击「添加」
(注:在添加之后输入的密码之后会消失,请记录下来client_secret
的值)
获取刷新令牌
将上一步骤中获得的 client_id
和client_secret
填入 https://tool.nn.ci/onedrive/request 这个页面,点击获取刷新令牌,就可以得到刷新令牌了
获取 Sharepoint site_id(未测试)
如果需要挂载 Sharepoint,完成上一步后,在显示刷新令牌的界面会出现一个输入站点地址,输入站点地址后点击获取 site_id 即可。
添加账号
将上述过程中获取得到的值依次填入即可。
天翼云盘
填写账号(手机号),密码即可。可能会触发验证码,可等一段时间再重试。
根目录 ID:与阿里云盘类似,官网 url 最后面一串,如:
https://cloud.189.cn/web/main/file/folder/-11
->-11
https://cloud.189.cn/web/main/file/folder/71398114617385472
->71398114617385472
GoogleDrive(支持团队盘)
参照 https://install.kenci.workers.dev/ 获取client_id
,client_secret
,refresh_token
;或:
- Open Google Drive API
- Create a OAuth client ID
- Install rclone software locally
- Get refresh_token with rclone
123Pan
填写账号密码即可。
元信息(meta)设置
此处的 path(路径)是访问 alist 页面时的 pathname,如要设置 https://alist.nn.ci/ 本地存储
则路径是 / 本地存储
设置密码
填写密码字段即可
隐藏文件 / 文件夹
填写 hide 字段,填写要隐藏的文件(夹)名称,以 ,
分隔,比如要隐藏 https://alist.nn.ci/ 本地存储
下的 README.md
和index.tsx
文件,则填写 README.md,index.tsx
即可。
常见问题
- 向前不兼容版本记录
v2.0.0-beta5 - 阿里云盘视频无法播放,下载显示 InvalidArgument?
由于 referrer 的限制,必须使用移动端 token - 视频播放不了?
然后检查一下是不是编码不支持,一般浏览器不支持 h.265(hevc)等编码视频,ac3 等编码音频,Safari 不支持的更多,建议使用软件播放。 - 获取中转链接?
允许中转之后,复制对应文件直链,将 / d 改成 / p 即可。 - 前端文件在哪里?
为方便安装,前端文件与程序打包在一起了,如需修改,请按照从源码运行
自行修改编译或填写自定义样式 / 脚本字段。 - 密码忘了怎么半?
命令行./alist-xxxx -password
查看。 - 自定义样式 / 脚本不生效?
是否前后端分开了?自定义部分为后端处理,只有在不分开时才起作用。 - 上传的文件不显示 / 删除的文件还在?
程序缓存一小时自动失效,后台右上角可手动清除缓存。
Q&A
- 如何给文件夹设置密码?
在要加密的目录名称后面加上.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就是在哪里重建。
1
