首页 教程

简介

本文后续将在https://alist-doc.nn.ci/ 更新。
AList是一款支持多种存储的目录文件列表程序,后端基于gin,前端使用react。

点击链接加入群聊【Alist使用交流】:https://jq.qq.com/?_wv=1027&k=OVPJcv2b
或搜索群号:920516758
提问之前请确定在本文中找不到答案,且阅读过https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

项目地址

预览

部署

先打开 https://github.com/Xhofe/alist 点个star😁

手动部署

运行起来

  1. 打开AList Release下载要部署的系统对应的文件
  2. 解压下载对文件得到可执行文件:tar -zxvf alist-xxxx.tar.gz(Linux)
  3. 赋予程序执行权限:chmod +x alist-xxxx
  4. 运行程序:./alist-xxxx
  5. 完成,后台默认密码为alist

守护进程

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-xxxx -conf data/config.json
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后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

从源码运行

首先需要有nodejs、yarn、golang>1.17的环境

构建前端

clone https://github.com/Xhofe/alist-web 这个项目,执行yarn&& yarn build,得到dist目录下的目标文件

构建后端

将上一步dist目录下的文件全部拷贝至 https://github.com/Xhofe/alist 项目下的public目录,然后:

appName="alist"
builtAt="$(date +'%F %T %z')"
goVersion=$(go version | sed 's/go version //')
gitAuthor=$(git show -s --format='format:%aN <%ae>' HEAD)
gitCommit=$(git log --pretty=format:"%h" -1)
gitTag=$(git describe --long --tags --dirty --always)
ldflags="\
-w -s \
-X 'github.com/Xhofe/alist/conf.BuiltAt=$builtAt' \
-X 'github.com/Xhofe/alist/conf.GoVersion=$goVersion' \
-X 'github.com/Xhofe/alist/conf.GitAuthor=$gitAuthor' \
-X 'github.com/Xhofe/alist/conf.GitCommit=$gitCommit' \
-X 'github.com/Xhofe/alist/conf.GitTag=$gitTag' \
"
go build -ldflags="$ldflags" alist.go

反向代理

程序默认监听5244端口,要实现https访问,需要使用nginx反向代理,在配置文件中加入

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5244;
    }

使用

后台默认密码为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(排序):可选值为namesizeupdated_atcreated_at
  • order_direction(排序方向):可选ASC(正序),DESC(倒序)

Onedrive

打开https://tool.nn.ci/onedrive/request

创建应用

  • 在打开的页面,选择所在区域,点击创建应用
  • 登陆后选择「注册应用程序」,输入「名称」,选择「任何组织目录中的账户和个人」(注意这里不要看位置选择而是看文字,部分人可能是中间那个选项,不要选成单一租户或者其他选项,否则会导致登陆时出现问题),输入重定向 URL 为 https://tool.nn.ci/onedrive/callback,「注册」即可,然后可以得到client_id
  • 注册好应用程序之后,选择「证书和密码」,点击「新客户端密码」,输入一串密码,选择时间为最长的那个,点击「添加」
    (注:在添加之后输入的密码之后会消失,请记录下来 client_secret 的值)

获取刷新令牌

将上一步骤中获得的client_idclient_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;或:

  1. Open Google Drive API
  2. Create a OAuth client ID
  3. Install rclone software locally
  4. Get refresh_token with rclone

123Pan

填写账号密码即可。

元信息(meta)设置

此处的path(路径)是访问alist页面时的pathname,如要设置https://alist.nn.ci/本地存储则路径是/本地存储

设置密码

填写密码字段即可

隐藏文件/文件夹

填写hide字段,填写要隐藏的文件(夹)名称,以,分隔,比如要隐藏https://alist.nn.ci/本地存储下的README.mdindex.tsx文件,则填写README.md,index.tsx即可。

常见问题

  • 向前不兼容版本记录
    v2.0.0-beta5
  • 阿里云盘视频无法播放,下载显示InvalidArgument?
    由于referrer的限制,必须使用移动端token
  • 视频播放不了?
    然后检查一下是不是编码不支持,一般浏览器不支持h.265(hevc)等编码视频,ac3等编码音频,Safari不支持的更多,建议使用软件播放。
  • 获取中转链接?
    允许中转之后,复制对应文件直链,将/d改成/p即可。
  • 前端文件在哪里?
    为方便安装,前端文件与程序打包在一起了,如需修改,请按照从源码运行自行修改编译或填写自定义样式/脚本字段。
  • 密码忘了怎么半?
    命令行 ./alist-xxxx -password查看。
  • 自定义样式/脚本不生效?
    是否前后端分开了?自定义部分为后端处理,只有在不分开时才起作用。
  • 上传的文件不显示/删除的文件还在?
    程序缓存一小时自动失效,后台右上角可手动清除缓存。

请我喝杯奶茶

image.png



文章评论

    像鱼 访客ChromeAndroid
    3天 前   回复

    大佬,视频文件过大播放会没有声音,这个有解决办法么

    dwada 访客ChromeWindows
    8天 前   回复

    博主,网盘添加页面,那个代理是什么意思?开启和关闭有啥影响吗?代理是指用服务器下载网盘文件后,再通过服务器传给下载者?

      Xhofe 站长ChromeMac
      8天 前   回复

      只是是否允许代理下载,前端所有的预览和复制下载链接什么的都是直接从网盘下载,将复制的下载链接中的/d改成/p就是通过代理下载,关闭了之后/p会提示不允许,打开通过这个链接就可以通过服务器中转下载。

        cnsre运维博客 访客ChromeWindows
        4天 前   回复

        那是否就是说,如果服务器的带宽小的话,还是推荐不走代理下载的?

    执念 访客ChromeWindows
    8天 前   回复

    博主好,首页防置的readme说明文件,首次加载偶尔出现一直转圈,必须刷新页面才可显示,请问是我这里的问题还是?

      Xhofe 站长ChromeMac
      8天 前   回复

      并未发现这个问题

        执念 访客ChromeWindows
        8天 前   回复

        ok

          Xhofe 站长ChromeMac
          8天 前   回复

          我看了一下你的网站 你填写了设置里的首页readme url,那个设置是用来有多个账号时设置首页的readme的,你这里只有一个账号 不需要填写 而且填写的不是readme文件 所以冲突报错。

            执念 访客ChromeWindows
            8天 前   回复

            感谢感谢,解决了

    木林森 访客ChromeWindows
    9天 前   回复

    和彩云的计划上吗

    Alist网盘列表搭建教程 访客BrowserSystem
    9天 前   回复

    [...]目录列表程序Alist使用教程地址:https://www.nn.ci/archives/alist.html[...]

    明非 访客ChromeWindows
    9天 前   回复

    大佬,怎么获取refresh_token啊,我请求https://auth.aliyundrive.com/v2/oauth/token_login这个接口一直报错

    苏寅 访客ChromeWindows
    10天 前   回复

    如何在不加密首页(根目录)的情况下,隐藏首页下的部分文件夹?

      Xhofe 站长ChromeMac
      10天 前   回复

      元信息添加,不填写密码即可。

        苏寅 访客ChromeWindows
        5天 前   回复

        如果我单纯的想加密一个文件而不隐藏内容该怎么设置?

          Xhofe 站长ChromeAndroid
          5天 前   回复

          路径:文件路径
          密码:密码
          隐藏:填空

            苏寅 访客ChromeWindows
            5天 前   回复

            我就是这样弄的,发现没效果。截图在群里发过

              Xhofe 站长SafariMac
              4天 前   回复

              那就是路径输错了 自查字打错/多输了空格
              如果是复制导航栏/前后是带空格的

                苏寅 访客ChromeWindows
                4天 前   回复

                我去看了下,果然有空格,把空格去掉就ok了。

        苏寅 访客ChromeWindows
        9天 前   回复

        果真可以,棒棒哒!

    zwdiqi 访客ChromeWindows
    10天 前   回复

    您好 添加个刚出来的网络网盘吧 有2t免费 不限速的空间 www.123pan.com

      Xhofe 站长ChromeMac
      10天 前   回复

      不是听说容易跑路吗

目录