今天再给大家推荐一个利用阿里云盘来搭建的个人分享网盘程序!
相对于Teambition 主要是利用Cookie模拟用户登陆,然后调用相关接口。
本文代码使用的是标准的OAuth2实现接口的调用,相对来说更稳定一些!
开源仓库
原作者:https://github.com/Xhofe/alist
下面的项目是博主为了部署方便整合了一个仓库,且支持了Docker部署!
https://github.com/malaohu/alist-oneclick-deploy
常见编译
golang打包后不同的的可执行文件适用不同的平台!以下供大家参考!
darwin/386
:对应 Mac x86darwin/amd64
:对应 Mac amd64linux/386
:对应 Linux x86linux/amd64
:对应 Linux amd64Windows/386
:对应 Windows x86Windows/amd64
:对应 Windows amd64
准备工作
获取Token
登陆阿里云盘,打开控制台获取!
目录指定
该仓库默认是根目录所有文件都可分享,如果你只想分享某一个目录里的文件,那么需要获取目录ID。
配置文件
以下是具体的配置文件内容介绍!按需修改!
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 #一次性最大文件数量
NGINX配置
如果绑定域名,可用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; }
项目部署
手动
1)首选需要准备一台服务器。
2)由于我们部署的是golang编译后的文件,所有不用预装golang环境!
3)下载开源项目,
前往AList Release下载对应系统的程序,解压得到一个运行文件
alist
前往AList-web下载打包好的前端,解压得到一个dist目录放到
alist
同级目录下在同级目录下新建一个配置文件
conf.yml
,复制上面的配置内容,按需修改!
4)启动项目
chmod +x alist nohup ./alist > log.log 2>&1 &
5)如果想绑定域名,直接修改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; }
自动
这里主要针对小白童鞋!可执行下方的命令简单的部署 !
git clone https://github.com/malaohu/alist-oneclick-deploy.git cd alist-oneclick-deploy sh install.sh
Docker
#下载镜像 docker pull malaohu/alist #启动镜像 docker run -d --net=host --name alist malaohu/alist [token] [folder] #后面的俩个参数分别是TOKEN 和 要分享的目录 #例如: docker run -d --name alist malaohu/alist 5972ed0bd4f54d3d974fa41a8231e root
如果启动Docker容器后,如果无法访问网络,那么在启动命令中加入 –net=host 参数。
例如:
docker run -d --net=host --name alist malaohu/alist 5972ed0bd4f54d3d974fa41a8231e root
演示地址
https://alist.nn.ci/
常见问题
Q:如何给文件夹设置密码?
A:在要加密的目录下新建一个名称为.password-要设置的密码的文件或者文件夹就可以了。
Q:如何设置根目录?
A:修改配置文件中的ali_drive.root_folder 为想要设置的文件夹的file_id即可。
Q:如何自定义网页底部链接?
A:修改配置文件中的footer_text和footer_url为要设置的内容,或者不填则不会显示。
Q:怎么复制文件直链?
A:进入文件预览,可以预览的文件复制按钮在右上角,不可预览的复制按钮在正中间(backend_url必须设置正确)。
Q:修改网站icon?
A:替换掉dist目录下的favicon.ico即可。
Q:为什么新上传的文件不显示/删除了的文件还在?
A:为了提高响应速度,对文件的列表是有缓存的,默认开启。
Q:如何开关缓存?
A:配置文件中的cache.enable设置为true或false即可,打开会占用更多的内存,但会大幅优化使用体验,默认打开。经测试下载地址是会失效的,所以请自行设置缓存的时间。下个版本将给文件去掉缓存,只缓存文件夹。更新文件的时候可以手动刷新缓存。
Q:如何刷新缓存?
A:程序会自动按照配置文件中的cache.cleanup_interval自动清理过期缓存,如需手动刷新,手动访问后端地址/cache/配置文件中设置的刷新密码,如https://alist.nn.ci/cache/alist。
Q:如何更新?
A:前端:下载新的打包好的文件,删掉原来的dist文件夹,解压新的dist放入原来的位置即可。后端:pkill alist 停掉老的进程,删除旧的alist,下载新的alist,查看配置文件,补上新的配置项,再次运行即可。
Q:要安装Windows版本?
A:自行编译,或者在Github Actions可以找到每次提交的build。