logo NodeSeekbeta

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

  • xhj003 不错

  • frp 甚至可以用来配置http和socks5代理,还是很好用的

  • 收藏了慢慢学(chi)习(hui) xhj001

  • 单纯想远程访问本地文件, 或者也可以试试 Alist 挂载本地磁盘, 比 webdav 灵活点, 性能的话都是 Go 写的大差不差?

  • @Hantong #4
    刚开始尝试webdav,想着有的软件支持webdav同步。

  • 是个好东西

  • 感谢分享

  • 谢谢分享

  • 半懂不懂,等一会去试试

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有62046位seeker

🎉欢迎新用户🎉