记录一下用Caddy2搭建webdav服务

前置说明:

如果是通过 apt/yum 安装的 caddy 服务,若是使用 caddy list-modules | grep http.handlers.webdav 命令没输出对应的模块,需要从官网(https://caddyserver.com/download?package=github.com%2Fmholt%2Fcaddy-webdav)下载带编译模块的版本,替换/usr/bin/caddy文件,并将/usr/bin/caddy文件权限设置为755即可

如果是通过 apt/yum 安装的 caddy 服务,需要在 /lib/systemd/system/caddy.service 文件内的 [Service] 部分添加一个"ReadWriteDirectories=/opt/webdav"参数,用于给 /opt/webdav 目录读写权限

[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target

[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
ReadWriteDirectories=/opt/webdav   <-------------------------参考

[Install]
WantedBy=multi-user.target

webdav模块更多说明详见官网 https://github.com/mholt/caddy-webdav

哈希密码使用 caddy hash-password 来生成,不能配置明文密码,配置文件内admin部分就是验证登录的账号密码

Caddy 可以自动生成本地ssl证书, 将监听的 ':2233' 改成 'https://:2233' 即可,无需再做其他操作, 访问时需要使用 https 协议

log部分配置来源于https://ti.bi/posts/caddy_config.html

webdav部分配置来源于https://www.jianshu.com/p/9892e1d7ba6b

配置文件内容:
# 这部分是提供webdav服务
:2233 {
    route {
        basicauth {
            admin $2a$14$uKDyQK9fFJlrL9VXpShX.eLv1nweTR3E.az23SfOy35jMZSUPGatq
        }
        webdav {
            prefix /dav
            root /opt/webdav
        }
    }
    # 日志文件配置,不需要这部分的可以全删除
    log {
        output file /opt/webdav/caddy_webdav.log {
            roll_size 100MiB
            roll_keep 5
            roll_keep_for 720h   # 保留30天
        }
        format filter {
            wrap console {
                time_local
                time_format wall
                duration_format ms
            }
            request>headers delete
            request>remote_ip delete
            request>remote_port delete
            #request>host delete
            request>tls delete
            resp_headers delete
            bytes_read delete
            user_id delete
        }
    }
}

# 这部分是提供http访问,用于在线查看目录文件
:2234 {  
    basicauth {
        admin $2a$14$uKDyQK9fFJlrL9VXpShX.eLv1nweTR3E.az23SfOy35jMZSUPGatq
    }  
    root /opt/webdav
    file_server browse

    # 日志文件配置,不需要这部分的可以全删除
    log {
        output file /opt/webdav/caddy_web.log {
            roll_size 100MiB
            roll_keep 5
            roll_keep_for 720h   # 保留30天
        }
        format filter {
            wrap console {
                time_local
                time_format wall
                duration_format ms
            }
            request>headers delete
            request>remote_ip delete
            request>remote_port delete
            #request>host delete
            request>tls delete
            resp_headers delete
            bytes_read delete
            user_id delete
        }
    }
}

客户端访问:

webdav客户端访问:http://your-domain.com:2233/dav

浏览器在线查看:http://your-domain.com:2234/

1763107282043

posted @ 2025-11-14 15:50  Ojox  阅读(80)  评论(0)    收藏  举报