Please enable Javascript to view the contents

阿里云盘-WebDAV开机自动挂载

 ·  ☕ 4 分钟

重要

目前主流的网盘系统都支持WebDAV连接方式,在windows系统下链接WebDAV以及是很常见的事情,如果能在Linux下链接WebDAV变成本地磁盘,那么可以把部分文件放置在WebDAV空间,甚至还可以通过网页转成外链链接。

1.简介

常用的文件共享协议有三种:FTP、Samba、WebDAV

WebDAV 基于 HTTP 协议的通信协议,在广域网上共享文件有天然的优势,移动端文件管理APP也大多支持WebDAV协议。使用HTTPS还能保安全性。Apache和Nginx支持WebDAV,可作为WebDAV文件共享服务器软件。也可以使用专门的WebDAV软件部署。

webdav 是 GitHub 上开源的项目,基于 Go 语言实现,不仅跨平台,还支持 ARM 架构,可在㠌入式设备中部署 WebDAV 服务器。

2. 操作

2.1 运行阿里云盘-webDAV

环境准备

1. 参数说明
变量名称描述示例
ALIYUNPAN_REFRESH_TOKENRefreshToken024534dbe2384807b24abfd1ab84fd7d
ALIYUNPAN_AUTH_USERwebdav登录用户名,随意设置,磁盘挂载的时候使用admin
ALIYUNPAN_AUTH_PASSWORDwebdav登录密码,随意设置,磁盘挂载的时候使用admin
ALIYUNPAN_PAN_DIR网盘文件夹的webdav服务根目录/
ALIYUNPAN_TRANSFER_URL_TYPE上传下载链接类型:1-默认 2-阿里ECS环境(ECS必须是经典网络类型)1
ALIYUNPAN_BLOCK_SIZE上传数据块大小,单位为KB,默认为1024KB,建议范围1024KB~10240KB10240
2. 获取refresh-token
3. https配置(可选)

nginx配置

 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
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;
        }
   }

部署

1. docker-run部署
1
2
3
4
5
6
7
docker run -d --name=aliyundisk \
	--restart=always -p 23077:23077 \
	-e TZ="Asia/Shanghai" \
	-e ALIYUNPAN_REFRESH_TOKEN="024534dbe2384807b24abfd1ab84fd7d" \
	-e ALIYUNPAN_AUTH_USER="admin" \
	-e ALIYUNPAN_AUTH_PASSWORD="admin" \
	-e ALIYUNPAN_PAN_DIR="/" tickstep/aliyunpan-webdav:v0.1.4
2. docker-compose部署
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

2.2 挂载webdav

1. 安装davfs2工具

centos

1
yum install davfs2

ubuntu

1
apt install davfs2

2. 挂载磁盘

执行命令后,按提示输入用户名密码(ALIYUNPAN_AUTH_USER和ALIYUNPAN_AUTH_PASSWORD的值)

1
2
mkdir /aliyun-disk
mount -t davfs https://pan.cloud.com/dav /aliyun-disk

3. 设置开机自动挂载

  • 编辑davfs2.conf配置文件,将use_locks的1改为0
1
vim /etc/davfs2/davfs2.conf 
  • 修改secrets文件,添加账号信息

普通用户可以修改此文件~/.davfs2/secrets

1
vim /etc/davfs2/secrets

在底部添加账号信息,如

1
https://pan.cloud.com/dav user password
  • 添加开机挂载命令

/etc/rc.d/rc.local文件或者/etc/profile.d/aliyundisk.sh中追加下面内容

开机自动运行的几种方法:

/etc/rc.d/rc.local: 文件会在 Linux 系统各项服务都启动完毕之后再被运行

crontab @rebot: 任务在系统重启之后自动运行某个命令

systemd:适用systemd系统

/etc/profile.d/xx.sh: /etc/profile会遍历/etc/profile.d/*.sh

  • /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
  • /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。
  • ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。
  • ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。你可以在这里设置你的个性化终端了.
  • ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是**”父子”关系**。
  • ~/.bash_profile: 是交互式、login 方式进入 bash 运行的。~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
1
mount -t davfs http://127.0.0.1:23077 /aliyundisk/

4. 避坑

不能通过/etc/fstab的auto选项, 实现开机自动挂载

1
http://127.0.0.1:23077 /aliyundisk/  davfs   noauto,user   0   0

因为/etc/fstab在网络初始化之前执行,只有在建立网络连接之后才能装载webDAV共享,所以不能auto在/etc/fstab文件中使用该选项。自动挂载将失败。

3. 可视化管理工具推荐

阿里云盘可视化管理工具-小白羊版

Reference

网络存储文件共享之WebDAV

Linux配置WebDAV-server为共享存储

阿里云盘命令行客户端,支持webdav文件服务

阿里云盘可视化管理工具-小白羊版

分享

Hex
作者
Hex
CloudNative Developer

目录