首页 教程,项目

简介

AList是一款阿里云盘的目录文件列表程序,后端基于golang最好的http框架gin,前端使用vueant design。没有专门学过前端,大佬轻喷😘

点击链接加入群聊【Alist使用交流】:https://jq.qq.com/?_wv=1027&k=OVPJcv2b
或搜索群号:920516758
更新计划:https://www.notion.so/AList-993f3a1a43fc464588f018b46369672e,有好的建议可以评论或在issue中告诉我。

本程序仅供学习研究使用!!!发现任何bug请提issue,部署上遇到问题欢迎加群交流。
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部rebuild!!!
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部rebuild!!!
更新的时候后端和前端文件都需要替换!!!!以及补上配置文件新的配置项!!!!第一次启动需要网页底部rebuild!!!

项目地址:

更新

2021.5.1

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

预览

alist预览

如何部署

首先第一步,Star本项目AList(bushi

获取refresh_token

web端token已失效,请参考这个issue通过手机端抓包/查找日志(/data/media/0/Android/data/com.alicloud.databox/files/logs/trace/)来获取refresh_token,或使用这个小工具https://alist.now.sh/my/%E8%BD%AF%E4%BB%B6/web.exe
为什么不直接使用access_token,因为有效期只有两小时。经Syc大佬的提醒,获取refresh_token其实没这么麻烦,我们只需要登陆阿里云盘之后,打开开发者工具,切换到Application选项卡,点开Local storage,会有一个token项,点开就可以看到refresh_token了,此处感谢一下Syc大佬。

请输入图片描述

部署

使用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
  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,然后自行修改配置文件中默认的值
  • 现在的情况应该是,目录下有两个文件alistconf.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 enable alist
  • 状态: systemctl status 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:
location / {
  try_files $uri $uri/ /index.html;
}

参考:https://router.vuejs.org/zh/guide/essentials/history-mode.html

反向代理

程序默认监听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;
    }

常见问题解答

  • 如何给文件夹设置密码?
    在要加密的目录名称后面加上.password-密码,列表中会自动消除后面的密码部分。
  • 如何隐藏文件夹
    在要隐藏的文件夹名称后面加上.hide即可。
  • 如何重建目录树
    点击网页底部的rebuild按钮,输入配置文件中设置的server.password确定即可。
  • 如何设置根目录?
    修改配置文件中的ali_drive.root_folder 为想要设置的文件夹的file_id即可。文件夹的file_id是什么?根目录就是root,其他目录为点进文件夹之后的url中folder/后面那一串
  • 如何自定义网页底部链接?
    修改配置文件中的footer_textfooter_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

Buy me a coffee

If you are using this project and happy with it or just want to encourage me to continue creating stuff,buy me a coffee by click this 。Thanks:

  • zsbai :请一杯奶茶🥤
  • 白鹭
  • 不知名
  • 永胜
  • MFYDev
  • HakimYu
  • Moc̶k̶i̶n̶gbird



文章评论

    tari 访客ChromeWindows
    2021-03-19 12:55   回复

    能将后端和前端打包成一个可执行文件吗?如果需要自定义前端可以设定一个命令行参数将内置的静态资源提取到当前目录下或自己到alist前端仓库手动下载/构建,类似Cloudreve那样。这样部署起来简单省事

      Xhofe 站长ChromeLinux
      2021-03-19 18:43   回复

      go打包静态资源我得学习一下

    awa 访客ChromeWindows
    2021-03-18 22:34   回复

    请问自定义文件夹的file_id是啥

      Xhofe 站长ChromeLinux
      2021-03-19 18:42   回复

      登录阿里云盘,点进你要设置的文件夹,url后面那一串就是文件夹的file_id。

        小独特 访客ChromeWindows
        2021-03-24 16:30   回复

        作者,你好。遇到点问题,root_folder: root #根目录的file_id 此位置file_id是一串码还是url后面的绝对地址呢。方便加个联系方式吗

          小独特 访客ChromeWindows
          2021-03-24 17:18   回复

          已经解决,原来是没rebuild一下

    萝卜 访客ChromeWindows
    2021-03-18 20:27   回复

    分享的时候出现的title是alist-web

      Xhofe 站长ChromeLinux
      2021-03-18 20:35   回复

      title默认是alist-web,请求到后端信息之后才会修改成配置文件中设置的。需要直接显示设置的名称的话,可以直接修改dist/index.html中的title标签。

    Boger 访客ChromeWindows
    2021-03-18 12:29   回复

    会添加文件夹内批量下载功能嘛::(狗头)

      Xhofe 站长ChromeMac
      2021-03-18 14:28   回复

      因为直接在列表前面添加多选框感觉不太好看 ,所以我还在🤔想怎么做。

    awa 访客ChromeWindows
    2021-03-17 23:33   回复

    请问
    此处json解析失败应该是[drive1]refresh_token失效
    这个怎么办,,,,

      Xhofe 站长ChromeMac
      2021-03-18 14:31   回复

      ?你是添加了多个盘吗,如果只有一个盘,后面的drive1可以删了。我只是演示可以添加多个,并不是一定要添加

        awa 访客ChromeAndroid
        2021-03-18 14:51   回复

          Xhofe 站长ChromeLinux
          2021-03-18 15:15   回复

          那就是refresh_token失效了 需要获取一下最新的

            awa 访客ChromeAndroid
            2021-03-18 19:16   回复

            获取了最新的还是这样

              awa 访客ChromeAndroid
              2021-03-18 19:18   回复

              而且这个refresh_token旧版能用

                Xhofe 站长ChromeLinux
                2021-03-18 19:58   回复

                配置文件私我一下:i@nn.ci

                  Xhofe 站长ChromeLinux
                  2021-03-18 20:33   回复

                  作如下处理:
                  先pkill alist结束掉之前掉进程,然后去获取最新的refresh_token替换到配置文件中,
                  最后再启动程序。

        awa 访客ChromeAndroid
        2021-03-18 14:43   回复

        一个盘也这样

    zoycil 访客ChromeWindows
    2021-03-17 21:03   回复
      Xhofe 站长ChromeMac
      2021-03-18 14:30   回复

      本次更新需要修改配置文件,更新之后/首次运行都需要手动rebuild一下。

    songshuxiao 访客ChromeWindows
    2021-03-17 18:20   回复

    大佬能否把项目上传到Gitee上,最近电脑网络上不了Github。

      Xhofe 站长ChromeLinux
      2021-03-18 15:00   回复
    白莲 访客ChromeAndroid
    2021-03-16 23:04   回复

    卡在了守护进程,还有,底下小字按照你说的来还是去不掉,该程序能不能加到自己的域名中,访问自己的域名就行的那种,求解决

      Xhofe 站长ChromeMac
      2021-03-17 9:07   回复

      守护进程是可选的,如果要添加守护进程,就不要执行上面的nohup ./alist > log.log 2>&1 &来启动了,更改底部文字链接需要修改配置文件之后重启,需要域名80/443访问需要添加nginx反向代理。

目录