最近家里买了一个铁马威的4盘位硬盘盒,正好把原来拆下来的几个硬盘塞进去用了。WIN11环境下,用着很方便。灵机一动,想这能不能做个家用的私有云啊。
网上查资料,能建WEBDAV的方法很多,类似linux下的apache、windows下的chfs、webdav等,其中chfs比较方便,但可定制的内容少一些。威力较强的就是caddy了,linux和windows环境都可以用。然后就开始了caddy2的排坑。。。
1、caddy的下载,地址是Caddy - The Ultimate Server with Automatic HTTPS,国内联通过去,网速是真的慢啊。这个网站是“caddy + 模块”动态自动定制的,第一次没把webdav模块加上,然后傻眼了,还得重新下载。所以如果要用webdav的话,一定一定要把下面的附加模块中的webdav模块点中,然后下载按钮旁边会有“extra features:1”,这样就不会走冤枉路。
2、下载下来的文件是“caddy_windows_amd64_custom.exe”,如果觉得太长,可以把它改名为“caddy.exe”,然后根据官网的教程,生成一个caddyfile的文件:
localhost:8080 {
@get method GET
file_server @get browse {
root D:\\download
}
}
localhost:443 {
route * {
basicauth {
admin $2a$14$GrHF9k0DiyER2eEZVLvkqeRLk9rBal6ugK.Gq8kqJepZMZpaHbmtO
}
webdav {
root D:\\download
}
}
}
3、执行caddy: 然后命令行:caddy.exe adapt --config caddyfile,打印一堆东西就没动静了,因为英语不是很好,以为这样是运行,其实这是把配置文件转换为了json格式的输出。再看官网文档,需要“caddy run --config caddyfile", 好吧,那就这样执行,然后得到”Error: loading initial config:“中止了。难道配置文件有错误,但看不出来哪错了啊。。。官网说需要json格式的配置文件,想到adapt是转换用的,可以用"caddy.exe adapt --config caddyfile > caddy.json",那就这样试试,但因为刚开始配置文件确实有错误,这样也产生错误了。一遍遍试,好累啊。已经好晚了,真想放弃。。。
4、再网上查,看其他前辈都是不需要转换json格式直接运行的,我的咋就不行呢?偶尔看到有人用”caddy.exe run"直接执行的,不知为啥鬼使人差地试了一下,并把把配置文件最小化,居然可以运行了,但它到底用的是哪个配置文件,这时心里没底,因为当前目录有最小化的caddyfile和以前有错误的caddy.json。把json文件删除,居然也可以运行,知道这样缺省配置文件是caddyfile。这样,终于可以一遍编辑配置文件一遍试验了。
5、然后就是产生了上述那个配置文件,用户admin后面的base64串,是需要用"caddy.exe hash-password "生成的,当时是用最简单的123456生成。我的需求一是浏览器可以文件浏览,二是webdav可以访问。
6、现在可以用浏览器访问试试看了,在edge中输入“http://127.0.0.1:8080",晕,edge报错,地址栏有一个”?”的信息,这有啥问题?再查官网文档,查到原来caddy是会自动把http转成https的,caddy在当前用户的AppData\Roaming\Caddy目录下生成root证书、intermediate证书和localhost证书,这样WEB服务就是根据TLS的HTTPS访问了。根据这个信息,用"https://127.0.0.1:8080"打开edge,居然还是有错误。真郁闷啊,已经晚上2点多了,真想放弃不干了。漫无目的的一遍遍试着,不知道怎么输入了"https://localhost:8080",哈哈,居然正确出现了文件浏览,耶!想起来了,浏览器是需要证书与网站名匹配的,127.0.0.1原则上是与localhost一致,但名字真不一样,这就导致edge这个死脑筋的认为不是同一个人。
7、但我想用http访问怎么办呢?https需要认证和加密数据,这么伟大的WEB服务器就不能直接用http?又得网上杳,官网文档英语的,看得头大。最终还是国内百度靠谱,终于有一篇文章说是想要http直接访问,localhost前面需要加"http://localhost....",试验一下,果然前辈们都是趟过地雷的,直接OK。
8、到这里,应该主要问题已经解决了。后续,就是我家联通宽带正好有公网地址,通过华硕路由器的DDN,得到一个非正式的域名,打通外网直接访问内部的webdav了。这个以前已经有成熟的经验了,windows端可以用raidrive,安卓端,可以用X-plore,正好在查的过程中,试验了万由云的U-file,也很好用,一切似乎都OK了
9、睡觉了。。。