搭建Alist目录程序

事前说明

这个程序是由Xhofe Blog大佬制作而成!!!

宝塔配置

首先在宝塔添加站点 添加成功后在网站路径删掉404.htmlindex.html文件

安装Alist Release

前往Alist Release中下载属于你对应的系统程序 解压到你的网站根目录中 也就是你刚刚删掉404和index文件的地方

安装Alist WEB

前往Alist WEB中下载压缩好的前端程序
配置截图

新建文件

在根目录新建一个文件 文件名为conf.yml 把以下内容复制进去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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

访问这个网站 照着提示一步步操作获取refresh_token即可

配置refresh_token

获取到refresh_token 把内容填到conf.yml这个配置文件中
注:只需填refresh_token这一项即可 其余可根据情况 酌情填写
现在的情况 根目录中会有 dist alist conf.yml conf.yml.example这些文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ 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

启动程序

赋予权限:chmod +x alist
启动程序:nohup ./alist > log.log 2>&1 &
程序已经启动 如不确认 可输入cat log.log 命令进行查询运行状态
然后在浏览器中输入http://ip:5244
对了 记得放行5244端口 不然没法运行

守护进程

输入命令:vi /usr/lib/systemd/system/alist.service
添加以下内容 其中path_alist是网站路径

1
2
3
4
5
6
7
8
9
10
11
12
[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

进程配置

添加完后输入命令:

1
2
3
4
5
重置:systemctl daemon-reload
启动:systemctl start alist
关闭:systemctl stop alist
自启:systemctl enable alist
状态:systemctl status alist

数据库配置

需要使用utf8mb4编码,修改database部分配置:

1
2
3
4
5
6
7
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填写前端部署的域名或者默认为’*’,需要正确填写,否则会报错
nginx中 配置以下内容:

location / {
try_files $uri $uri/ /index.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_text和footer_url为要设置的内容,或者不填则不会显示
  • 怎么复制文件直链?
    点进文件,右上角有复制直链的按钮
  • 修改网站icon?
    替换掉dist目录下的favicon.ico即可
  • 为什么新上传的文件不显示/删除了的文件还在?
    列表展示的是本地数据库里的数据,更新文件之后需要重建
  • 如何更新?
    前端:下载新的打包好的文件,删掉原来的dist文件夹,解压新的dist放入原来的位置即可。后端:pkill alist 停掉老的进程,删除旧的alist,下载新的alist,查看配置文件,补上新的配置项,再次运行即可
  • 运行显示检查更新之后直接报错?
    可能是无法访问到GitHub的api,可以在命令行后面加上-skip-update跳过检查更新
  • 怎么指定路径重建?
    在哪个路径点rebuild就是在哪里重建

本教程到此结束