使用新项目 Alist 利用阿里云盘来搭建的个人分享网盘程序,本文记录下搭建过程,其实非常简单。
准备工作
阿里云盘账号:https://www.aliyundrive.com/
- 注册后有 1T 容量
- 我是之前注册的,用的邀请码:aliyun
- 一台VPS,本教程以 Debian 10 为例
- 一个域名
- 动手能力
项目地址
后端:https://github.com/Xhofe/alist/releases (注意选择对应系统版本,Linux 一般选择 linux_amd64
)
前端:https://github.com/Xhofe/alist-web/releases
作者的文档:https://www.nn.ci/archives/alist.html
获取Refresh Token
登录阿里云盘后,F12
打开开发者工具,切换到 Application
选项卡,点开 Local storage
,会有一个token
项,点开,在下方找到 refresh_token
如下图:
部署程序
首先部署后端,SSH 连接 VPS,执行:
mkdir -p alist && cd alist && wget https://github.com/Xhofe/alist/releases/download/v0.1.5/alist_0.1.5_linux_amd64.tar.gz && tar -zxvf alist_0.1.5_linux_amd64.tar.gz
后续如果版本更新了,注意更换安装地址
然后安装前端:
wget https://github.com/Xhofe/alist-web/releases/download/v0.1.5/refs.tags.v0.1.5.tar.gz && tar -zxvf refs.tags.v0.1.5.tar.gz
此时目录结构应该是这样的:
/root/alist
目录下,应该包含一个可运行文件 alist
和一个目录 dist
然后在 /root/alist
目录下,创建配置文件:
nano conf.yml
修改以下内容后,复制到 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: #自定义js脚本,可以是脚本的链接,也可以直接是脚本内容,如document.querySelector('body').style="background-image:url('https://api.mtyqx.cn/api/random.php');background-attachment:fixed"
autoplay: true #视频是否自动播放
preview:
url: https://view.alist.nn.ci/onlinePreview?url= #extensions中包含的后缀名预览的地址,默认使用了kkFileView,可以自行搭建
pre_process: [base64,encodeURIComponent] #对地址的处理,支持base64,encodeURIComponent,encodeURI
extensions: [doc,docx,ppt,pptx,xls,xlsx,pdf] #使用上面的url预览的文件后缀
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] #要预览的文本文件的后缀,可以自行添加
max_size: 5242880
server:
port: "5244" #程序监听端口
search: false
static: dist
site_url: '*' #建议直接填*,若有信任域名要求,可填写其他具体域名,逗号分割
cache:
enable: true #是否开启缓存
expiration: 60 #缓存失效时间(单位:分钟)
cleanup_interval: 120 #清理失效缓存间隔
refresh_password: password #手动清理缓存密码
ali_drive:
api_url: https://api.aliyundrive.com/v2
root_folder: root #根目录
refresh_token: #必填!!!
max_files_count: 3000 #一次性最大文件数量
其中最重要的是,必须填写你自己的 refresh_token
其他部分按作者注释修改
设置权限:
chmod +x alist
后台运行:
nohup ./alist > log.log 2>&1 &
查看日志:
cat log.log
使用 Nginx 设置反代
首先安装 Nginx,依然是使用 LNMP 一键脚本安装:
apt install screen -y
screen -S lnmp
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh nginx
新增站点:
lnmp vhost add
第一步输入域名,其他全部 n
回车即可
注意申请 SSL 证书
添加完毕后,修改配置文件:
nano /usr/local/nginx/conf/vhost/刚添加的域名.conf
在443的server部分,添加以下内容:
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;
}
添加完毕后,测试下配置:nginx -t
没问题的话,重启 nginx:lnmp nginx restart
之后打开域名就可以正常访问了
如果失败,查看文件 /root/alist/log.log
根据报错信息处理。
解决防盗链
阿里云盘加入了防盗链机制,按照作者文档,目前暂时可通过以下方法解决:
进入 dist
文件夹,编辑 index.html
:
nano /root/alist/dist/index.html
在文件头添加:<meta name="referrer" content="never">
如下图:
保存后退出,刷新网站页面即可。
其他问题
以下内容搬运自作者文档:
- 如何给文件夹设置密码?
在要加密的目录下新建一个名称为.password-要设置的密码
的文件或者文件夹就可以了。 - 如何设置根目录?
修改配置文件中的ali_drive.root_folder
为想要设置的文件夹的file_id
即可。 - 如何自定义网页底部链接?
修改配置文件中的footer_text
和footer_url
为要设置的内容,或者不填则不会显示。 - 怎么复制文件直链?
进入文件预览,可以预览的文件复制按钮在右上角,不可预览的复制按钮在正中间。 - 修改网站icon?
替换掉dist
目录下的favicon.ico
即可。 - 为什么新上传的文件不显示/删除了的文件还在?
为了提高响应速度,对文件的列表是有缓存的,默认开启。 - 如何开关缓存?
配置文件中的cache.enable
设置为true
或false
即可,打开会占用更多的内存,但会大幅优化使用体验,默认打开。经测试下载地址是会失效的,所以请自行设置缓存的时间。下个版本将给文件去掉缓存,只缓存文件夹。更新文件的时候可以手动刷新缓存。 - 如何刷新缓存?
程序会自动按照配置文件中的cache.cleanup_interval
自动清理过期缓存,如需手动刷新,手动访问后端地址/cache/配置文件中设置的刷新密码
,如https://alist.nn.ci/cache/alist
。 - 如何更新?
前端:下载新的打包好的文件,删掉原来的dist文件夹,解压新的dist放入原来的位置即可。后端:pkill alist
停掉老的进程,删除旧的alist
,下载新的alist,查看配置文件,补上新的配置项,再次运行即可。 - 要安装
Windows
版本?
自行编译,或者在Github Actions可以找到每次提交的build。
下载速度
目前下载可以跑满带宽:
不知道后期会不会被限速。
2 comments
老哥,我在设置完反代,访问域名显示的是403,forbidden,看日志INFO[2021-02-01 15:55:05] 初始化缓存...
INFO[2021-02-01 15:55:05] 初始化定时任务:刷新token
INFO[2021-02-01 15:55:05] 初始化路由...
INFO[2021-02-01 15:55:05] Starting server @ 0.0.0.0:5244
INFO[2021-02-01 17:55:05] 刷新token...
没有看到什么问题
使用nginx -t测试,显示的是# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
不知道哪里出了问题