轶哥

📚 Having fun with AI Agent. Always learning.

    Linux/Win/OMV5 安装WebDAV服务
    •   更新:2021-08-09 00:21:27
    •   首发:2021-08-09 00:21:27
    •   教程
    •   14769

    此安装方法通用于所有*unix系统、Windows系统。

    在OMV5(openmediavault)中安装WebDAV服务器端的方法不同于旧版本。在OMV5之前的版本,可以直接在管理界面的“插件”中安装并启用WebDAV服务,但是新版本去除了此插件,需要手工进行安装。目前相关资料较为匮乏,网上的WebDAV镜像质量也参差不齐。

    通过对比目前较为受欢迎的WebDAV服务器端软件,https://github.com/hacdias/webdav 较为稳定(唯一遗憾的是,此仓库作者提供的Docker镜像竟然在Docker Hub中排名非常靠后,以至于完全搜不到)。

    此开源项目是使用GoLang开发的,因此兼容性非常强悍,仅作者预编译针对不同操作系统和CPU架构的二进制文件就有34种,可以说涵盖了几乎所有运行环境。

    作者默认使用此软件的都是专业选手,因此没有手把手的文档可以参考。这对于非程序员甚至非GoLang程序员不太友好。

    配置文件

    作者给出的配置参考已经非常详细,但需要注意的是,你需要全部复制并做出对应修改,程序中并没有做默认值合并。注释中的will be merged仅仅针对当前配置文件下文的用户默认值。

    二进制安装

    访问https://github.com/hacdias/webdav/releases/,对应下载作者预编译的二进制版本。

    参考Systemd Example,注册为*unix服务,实现开机自动启动。此步骤有疑问的话,搜索对应操作系统+systemd关键词。

    需要特别注意的是:

    • 二进制文件所在的执行目录需要和Systemd配置文件中的ExecStart目录保持一致。
    • 作者说明了支持JSON, YAML and TOML配置文件格式,因此你需要加上相应后缀,否则配置文件不生效。例如JSON添加.json、YAML添加.yml

    OMV5(Debian)中二进制文件安装例子:

    wget https://github.com/hacdias/webdav/releases/download/v4.1.0/linux-amd64-webdav.tar.gz
    tar -zxvf linux linux-amd64-webdav.tar.gz
    vim /etc/systemd/system/webdav.service
    

    webdav.service(注意确保路径/opt/webdav.config.yml下的配置文件已存在):

    [Unit]
    Description=WebDAV server
    After=network.target
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/bin/webdav --config /opt/webdav.config.yml
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    

    设置开机启动并启动服务:

    systemctl enable webdav
    systemctl start webdav
    

    Docker安装

    使用SSH连接后,执行命令:

    docker run --restart always --name=webdav -itd \
    -v /export:/data \
    -v /opt/webdav.config.yml:/opt/webdav.config.yml \
    -p 8081:80 \
    hacdias/webdav:v4.1.0 --config /opt/webdav.config.yml
    

    命令内容一目了然了,相应配置文件参考:

    # Server related settings
    address: 0.0.0.0
    port: 80
    auth: true
    tls: false
    prefix: /
    
    # Default user settings (will be merged)
    scope: .
    modify: true
    rules: []
    
    cors:
      enabled: false
      credentials: false
    
    users:
      - username: admin
        password: "{bcrypt}$2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        scope: /data
      
    

    scope即为根目录本地映射地址。password可以用明文,也可以加密,Bcrypt密码在线生成地址: https://bcrypt-generator.com/

    配置文件同样需要注意后缀问题。

    关于内网穿透

    为NAS搭建内网穿透有很多种方案。

    针对SSL证书部署,可以采用:

    1. 直接在配置文件中设置tlstrue并配置相应的SSL证书地址。
    2. 配置文件中保持tlsfalse,在FRP或其它内网穿透工具中配置HTTPS并加载相应证书。
    3. 配置文件中保持tlsfalse,在FRP或其它内网穿透工具中仅穿透TCP协议(可配置加密和压缩),在公网服务器(FRP或其它内网穿透工具所在的服务器)中配置Nginx反向代理搞定证书问题。

    强烈推荐第三个方案,简单也安全。

    关于Nginx反向代理的关键配置信息,此webdav服务端作者hacdias已经在README.md中注明。

    其它

    请大家不要咨询在OMV中如何安装Docker如何在Portainer中安装webdav之类的问题。此类问题太过于基础(例如后者,可以先进SSH直接执行命令,然后回到Portainer中看Container配置发生了什么变化)。

    推荐大家使用Mountain Duck这样的工具挂载带有SSL证书的WebDAV地址,可以实现和OneDriveDropbox一样的智能同步功能(始终在此设备上保留释放空间)。

    打赏
    交流区(9)
    全新改版、拭目以待

    博主你好,我在使用这个docker。官方的文档里没有docker的run说明。找了好久找到你的博文

    请教,你的这个run命令是从哪里看到的呢,我尝试it进去,但是完全没办法。容器里面没查看路径等命令,特别是你的data目录

    感谢

    2022年3月27日 03:43回复
    轶哥

    官方文档里面肯定是有run的相关说明的哈。这个是根据具体的镜像组合的命令。这是详细内容:https://docs.docker.com/engine/reference/commandline/run/

    2022年3月27日 03:50回复
    全新改版、拭目以待

    不是docker的run。是hacdias/webdav 这个镜像的目录结构。你的data 目录是如何得到。是从alpine镜像结构获取

    我尝试

    docker run -d --name webdav hacdias/webdav

    docker exec -it webdav /bin/bash

    docker exec -it webdav /bin/sh

    docker exec -it webdav ls

    进去查看目录信息

    完全没信息

    OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: "ls": executable file not found in $PATH": unknown

    2022年3月27日 04:01回复
    轶哥

    这个不需要进入到容器内部呀,你的目录和配置里面的目录保持一致即可。

    2022年3月27日 04:11回复
    全新改版、拭目以待

    嗯 你的data目录是怎么得到,你是直接指定一个目录,名字随便取,与挂载相同

    还是这个alpine镜像确实有data这个目录

    2022年3月27日 04:18回复
    轶哥

    随便取,保证和配置路径一致。另外这个镜像只有个给golang程序运行(二进制)的运行环境,没有开放bash/busyBox。docker文档一开始就有说“不要试图进入镜像”。

    2022年3月27日 04:21回复
    全新改版、拭目以待

    感谢👍 ,博主真棒

    2022年3月27日 05:43回复
    轶哥

    谢谢!

    2022年3月27日 06:09回复
    尚未登陆
    发布
      上一篇 (苹果磁吸充电宝并不是智商税)
    下一篇 (关于JavaScript作用域与函数提升的一道思考题)  

    评论回复提醒