前几天挂载了onedrive教育版到了服务器,但是今天想着万一以后没有教育邮箱了,onedrive教育版可能就用不了了,并且我的onedrive教育版只有1T空间,而我的阿里云盘目前有2T。
正文
(1)tickstep / aliyunpan
在docker hub 上找到个镜像https://hub.docker.com/r/tickstep/aliyunpan-webdav,追踪到了这个GitHub 项目:
关键是支持ARM,我这里主要是用他的web-dav共享盘的功能
安装
docker run -d --name=aliyunpan-webdav --restart=always -p 23077:23077 -e TZ="Asia/Shanghai" -e ALIYUNPAN_REFRESH_TOKEN="<your refreshToken>" -e ALIYUNPAN_AUTH_USER="admin" -e ALIYUNPAN_AUTH_PASSWORD="admin" -e ALIYUNPAN_PAN_DRIVE="File" -e ALIYUNPAN_PAN_DIR="/" tickstep/aliyunpan-webdav:v0.2.0
ALIYUNPAN_REFRESH_TOKEN RefreshToken
ALIYUNPAN_AUTH_USER webdav登录用户名
ALIYUNPAN_AUTH_PASSWORD webdav登录密码
ALIYUNPAN_PAN_DRIVE 网盘类型,可选: File-文件 Album-相册
ALIYUNPAN_PAN_DIR 网盘文件夹的webdav服务根目录,直接填名称就行,如我的/VPS
或者用docker-compose运行
version: '3'
services:
webdav:
image: tickstep/aliyunpan-webdav:<tag>
container_name: aliyunpan-webdav
restart: always
ports:
- 23077:23077
environment:
- TZ=Asia/Shanghai
# refresh token用于登录
- ALIYUNPAN_REFRESH_TOKEN=b9123...13e66a1
# webdav 登录用户名
- ALIYUNPAN_AUTH_USER=admin
# webdav 登录密码
- ALIYUNPAN_AUTH_PASSWORD=admin
# 指定网盘文件夹作为webdav服务根目录
- ALIYUNPAN_PAN_DIR=/
# 上传下载链接类型:1-默认 2-阿里ECS环境(ECS必须是经典网络类型)
- ALIYUNPAN_TRANSFER_URL_TYPE=1
# 上传数据块大小,单位为KB,默认为1024KB,建议范围1024KB~10240KB
- ALIYUNPAN_BLOCK_SIZE=10240
nginx
server {
listen 443;
server_name your.host.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /path/to/your/file.pem;
ssl_certificate_key /path/to/your/file.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# webdav server
location /{
root html;
proxy_pass http://127.0.0.1:23077;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
使用rclone挂载到服务器
挂载参见上一篇文章:
按照步骤挂载成功:
然后输入命令:
rclone mount aliyunadv:/ /www/wwwroot/aliyundav --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --uid 1000 --gid 1000
#uid 和 gid 是有权操作的用户,输入 id www 查询
(2)alist-org / alist
安装
在查找过程中,我又发现了更好用的挂载dav的软件Alist,并且资料比较详细:
直接按照文档介绍的在docker里run起来,然后进入后台设置,成品图:
nginx配置
参考文章:https://alist-doc.nn.ci/docs/install/reverse-proxy
在我的npm里添加如下反向代理代码:
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_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244;
# 上传的最大文件尺寸
client_max_body_size 20000m;
}
用rclone挂载:
用rclone挂载参考这篇文章:https://blog.csdn.net/shamqu/article/details/123288539
其中的挂载命令,我之前踩坑应该是命令错了,不能照搬onedrive的
rclone mount alist:/ /www/wwwroot/alist --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --uid 1000 --gid 1000
alist的网页端做的不错,可以挂载多种网盘,所以我把上一种方法挂载的阿里云盘又再次挂载在他的网页端了。
成品图:
宝塔里容量显示不正常,不过不影响使用
宝塔里通过dav操作文件容易超时,我一般用Alist里直接挂载的
Alist网页端
添加挂载命令到开机启动
新建文件start_dav.sh,并写入之前的挂载命令命令
#! /bin/bash
rclone mount aliyunadv:/ /www/wwwroot/aliyundav --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --uid 1000 --gid 1000
建立start_alist.sh
#! /bin/bash
rclone mount alist:/ /www/wwwroot/alist --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --uid 1000 --gid 1000
然后使用crontab -e设置开机启动:
crontab -e
#进入编辑,输入如下行
#例如:
#@reboot /home/test.sh #开机马上启动这个脚本,如果脚本中有依赖系统中其他服务,会发生因为其他服务启动不完全,而导致自己脚本失败的情况
#@reboot sleep 60; /home/test.sh #最好加上休眠一会,等待其他服务启动完全了,再启动自己的脚本
#@reboot (sleep 60; sh /home/test.sh) #设置脚本在启动后的60s启动、/home\test.sh 就是脚本的存放地址
@reboot (sleep 40; sh /root/start_dav.sh)
@reboot (sleep 40; sh /root/start_alist.sh)
保存后重启服务器,全部正常