目录
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