windows配置webdav服务器(caddy)+内网穿透(frp)攻略

折腾了一下怎么用windows自建webdav。感觉很不错,给大家分享一下。用的caddy来搭建webdav,frp远程穿透,同时在frp的服务器上做了一个反代来实现域名访问。不过说实话这个方法别的操作系统也可以使用。

一、本地webdav

使用caddy。本人不熟悉nginx,配置条数太多没东西学,caddy的好处应该是证书的管理比较方便。下载好带webdav插件的caddy。直接上caddyfile的配置。

https://localhost:14913 {
    root * E:/your_web_dav_folder
    tls internal
    basicauth {
            yourname hashed_password
        }
    route {
        rewrite /dav /dav/
        webdav /dav/* {
            prefix /dav
        }
        file_server browse
    }
}

运行的方法: 将上述配置命名为Caddyfile,放到下载的caddy的exe同一目录下。然后cmd窗口执行 ./caddy的程序.exe run就可以开始执行。第一次运行应该会要求安装证书,记得安装。(可以直接用四、的方式来运行,不过我觉得可以先用这个跑一下)\
配置的解析:https\://localhost:14913是访问的地址,root那里是网站的根目录,tls internal是用caddy自签名的证书,用来开启https。basicauth是配置用户名和密码,其中hashed_password可以用./caddy的程序 hash-password来得到。route里面是webdav的配置,file_server browser是允许访问https\://localhost:14913来看文件列表(这个用来看配置有没有问题我觉得很方便)。\
验证:访问https\://localhost:14913可以看到E:/your_web_dav_folder中的文件,同时可以挂载https\://localhost:14913/dav,这里的“dav”应该是prefix所控制的。

二、frp内网穿透

直接上配置吧。感觉这个比较简单,大家可以参考frp的官方文档。

frpc.ini:

[common]
server_addr = YOUR_PUBLIC_IP
server_port = 7000
token = your_password

[caddy_webdav]
type = tcp
local_ip = 127.0.0.1
local_port =14913
remote_port = 20156

frps.ini:

[common]
bind_port = 7000
token =  your_password

frp也可以直接把内网的https的服务(webdav也是基于https)用type=https来直接暴露,但是我运行的时候遇到了一些问题,好像frps对host的处理不太方便,所以我选择type=tcp然后用caddy反代它。

三、frp服务器上用caddy反代

同样上Caddyfile的配置:

your_domain.com {
    tls hello@vibhuvi.com
    reverse_proxy https://localhost:20156 {
        header_up Host {upstream_hostport}
    }
}

这里当然要这个域名解析到相应的ip。

之后,需要让这个frp所在的服务器信任本地的Caddy的自签名的证书。本地的Caddy的证书默认位于C:\Users\用户名\AppData\Roaming\Caddy\pki\authorities\local\root.crt,传到服务器上安装了就可以。文档中的说明参见文档

测试发现https\://your_domain.com可以浏览文件,https\://your_domain.com/dav可以挂载,也就宣告成功。不过windows挂载的时候,映射网络驱动器好像有点问题,需要安装别的客户端。

四、将本地的Caddy、frp设为服务开机启动。

frp的开机启动可以用计划任务,或者用WinSW设定服务。这个博客很不错。\
Caddy的WinSW可以看官网文档。一个坑是,设定为服务的时候,running的用户变了。建议安装运行服务(此时跑不通,似乎缺少权限)->手动前往C:\Windows\System32\config\systemprofile\AppData\Roaming\Caddy\pki\authorities\local\root.crt来安装证书->重启这个服务。记得让frps所在服务器信任这个证书。