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所在服务器信任这个证书。