放狗搜了两天,网上的例子基本都是 v1 版本的配置方式,跟 v2 不通用,caddy 官网的文档太简单我看不懂。。。
家里面自己一个人用的 debian 10 文件服务器,目标是用 caddy 开 webdav,下载了官网带 webdav 模块的文件,安装配置成功,Caddyfile 很简单的 3 行配置可以跑起来:
nas.local
root * /mnt/nas
file_server browse
这样的配置文件可以实现在家里另一台电脑上浏览器里输入 nas.local 即可网页形式浏览 nas 上的文件,而且是自动跳转 https 的( caddy 自己的证书)
然后我想加上全局的验证和 webdav 功能就无论如何不能成功:
nas.local
basicauth / name pass
root * /mnt/nas
file_server browse
webdav /dav {
scope /mnt/nas
modify true
}
用 journalctl -xef -u caddy.service 查看错误,name 有问题,scope 有问题,modify 有问题,可是网上找来找去找不到没问题的模板。。。
请未来的首富帮忙写个 caddy v2 的配置文件吧,或者用非程序员也能懂的白话文指出问题在哪儿,谢谢了,好人一生平安,好人必成首富
1
hymzhek 2021-01-30 07:43:47 +08:00 1
|
2
Showfom 2021-01-30 08:02:23 +08:00 via iPhone
额 不会 caddy 倒是换 nginx 的话我会- -
|
3
hash 2021-01-30 08:19:59 +08:00 10
换 Nginx 吧, caddy 这种号称小白也能上手的我就没上过手,每次都觉得自己是个傻子后放弃
|
4
squkw 2021-01-30 08:46:55 +08:00 1
我上个月刚配置了一次,大概这样
使用 caddy hash-password 把密码加密 { order webdav last } nas.local { encode zstd gzip root * /mnt/nas basicauth { root 加密后的密码 } webdav { root /mnt/nas } } |
5
wancaibida 2021-01-30 10:10:44 +08:00 via iPhone
实话说 caddy 的文档真的坑
|
6
boris93 2021-01-30 10:28:21 +08:00 via Android
换回 nginx 吧
我用过 caddy 1,这玩意要把插件一起编译进去,这个太坑了 文档也真的是太少 |
7
GreatFinger 2021-01-30 10:50:34 +08:00 via Android
如果实在不熟悉 caddyfile 可以用 nginx adapter
|
8
matrix67 2021-01-30 11:08:56 +08:00 1
别用 caddy 了,推荐 https://github.com/hacdias/webdav,go 二进制丢上去就可以用。配置文件简单多了
webdav --config /root/webdev/webdev.json { "address": "0.0.0.0", "port": 10086, "auth": true, "tls": true, "cert": "/root/webdev/webdav.pem", "key": "/root/webdev/webdav.key", "prefix": "/", "users": [ { "username": "user", "password": "yourpassword", "modify": false, "scope": "/mnt" } ] } |
9
darksword21 2021-01-30 11:10:22 +08:00
我之前也是用 caddy v1,后来 v2 出来之后不知道为什么看不懂,又学了 nginx 换掉了
|
10
Qzier 2021-01-30 11:35:36 +08:00 1
caddy v1 的配置挺简单的,和 nginx 很像,而且官网文档详细,v2 版本改成 json 后,语法不一样不说,连个详细文档都没有了,我还是继续用 v1 版本。
|
11
hotsymbol 2021-01-30 12:04:26 +08:00
别用 Caddy 了,换 Nginx 吧
|
12
imydou 2021-01-30 12:54:03 +08:00 1
|
13
skyrem 2021-01-30 13:02:47 +08:00 via Android
v2 个个都是人才,说话又好听
|
14
hanxiV2EX 2021-01-30 13:23:34 +08:00 via Android
直接用 v1 吧
|
15
felixin 2021-01-30 14:17:55 +08:00 via Android
traefik
|
16
Alphagocc 2021-01-30 15:08:01 +08:00
Caddy 2 默认不支持 webdav
用 xcaddy 加上那个 1 楼那个 webdav 插件重新编译。 编译倒是 go 环境一装,命令一敲,全自动。 另外 caddy2 支持 caddy1 的 Caddyfile |
17
cathedrel OP |
18
labulaka521 2021-01-30 17:11:10 +08:00
同没看懂 放弃🐶
|
21
cathedrel OP @squkw
就是有个 webdav 的问题:我在另一台 linux 的桌面电脑上想用 Nemo 直接连接 Nas 的 webdav 服务,一直不行,提示“HTTP 错误:对方发送了致命 TLS 警报:内部错误” journalctl -xef -u caddy.service 的话显示有这么一句: |
22
cathedrel OP @squkw
"logger":"tls","msg":"stapling OCSP","error":"no OCSP stapling for [nas.local]: no OCSP server specified in certificate" 不知道是不是自签证书的问题,有解决办法吗? |
25
WordTian 2021-01-30 18:31:53 +08:00 via Android
2 的文档确实坑,用这货转发 http 代理的请求都转发不了,坑的一匹
|
26
matrix67 2021-01-30 18:56:09 +08:00 1
@cathedrel 自签证书
mkdir /root/webdev openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout webdav.key -out webdav.pem |
27
huiyifyj 2021-01-30 19:07:48 +08:00
看来不止是我一个人觉得 caddy 的文档难懂 🌚
|
28
ruimz 2021-01-30 20:44:20 +08:00
@Alphagocc caddy2 不支持 caddy1 的 Caddyfile 。光是官网列出来的变化就有这么多 https://caddyserver.com/docs/v2-upgrade#caddyfile
|
29
cathedrel OP @matrix67 我把 caddy 的 webdav 功能关了,尝试用你推荐的这个项目,服务器端可以运行起来,显示 Listening on [::]:xxxxx,但是客户端一直连接不了,提示:
HTTP 错误:无法连接:没有到主机的路由 配置文件是这样的: address: 0.0.0.0 port: 9999 auth: true tls: true cert: /opt/webdav/tls.pem key: /opt/webdav/tls.key prefix: / users: - username: admin password: admin scope: /mnt/nas modify: true 防火墙开放了 9999 端口,也能 ping 通 nas.local 或者其 IP,但还是说没有到主机的路由,把 firewalld 关了也是一样,奇怪了,哪里不对吗? |
30
missdeer 2021-01-30 23:14:21 +08:00
就是从 nginx 转到 caddy v1 再转回 nginx 的,太坑了
|
31
wym0823 2021-01-30 23:58:01 +08:00 via Android
chfs 这个小工具你值得拥有
|
32
matrix67 2021-01-31 09:27:00 +08:00 1
@cathedrel
1. 你如果配置是 9999 的话,那么服务端执行 webdav --config webdev.yaml, 应该显示的是 Listening on [::]:9999 到这一步应该都是没问题的。 2. 客户端一直连接不了,HTTP 错误:无法连接:没有到主机的路由。 这应该是网络上有问题,应该还没到应用层面上。 3. 你能 ping 通 nas.local,那么接下来就要测试一下 telnet nas.local.ip 9999 如果没打出 Escape character is '^]'. 一直是 Trying xxxx 说明有问题。 这个时候要服务器端和客户端连边都抓一下包看看,看看是哪边的防火墙的问题。 4. 如果 3 这步是好的,那接下来调试都可以看 webdav 输出了。 我感觉,是不是你的 config 没生效,显示 Listening on [::]:xxxxx 肯定不对,你要确认显示的是 Listening on [::]:9999. 因为 config 没生效,所以你客户端连服务器 9999 就不通了。 |
33
docx 2021-01-31 10:43:09 +08:00
没什么特定需求的话,用还是 v1 吧。
v2 我也看不太懂,改的什么玩意。 |
34
matrix67 2021-01-31 10:45:34 +08:00 1
@matrix67
还有这个项目的防御式编程做的也不太好,比如 config 写到 a.yaml 然后执行 webdav --config b.yaml, 它竟然服务能起来,而且是在高位端口随机取一个,而不是报 config 文件没找到。这可真是坑的一批 当然它吞配置好像按照 环境变量、配置文件等等优先级来的,但是明显指定一个不存在的 config 能起来真是让我觉得很奇怪 2333 |
36
dingyaguang117 2021-01-31 15:35:48 +08:00 via iPhone 1
Caddy 文档真垃圾,除了自动维护 https 证书
|
37
cathedrel OP @matrix67 是的,这玩意也确实有点坑,一开始我 webdav --config webdev.config (对,.config,就跟着它 github 学的),总是显示一个随机的端口,我还在想这要怎么设置防火墙呢?后来试着用你的.json 方式,它才显示我指定的端口,这才明白是它的问题不是我的问题,但是新问题又来了:不管它是运行在随机端口还是我指定的端口,依然“HTTP 错误:无法连接:没有到主机的路由”,关了 firewalld 也是这样,同一时间 ping nas.local 或者 ping IP 都是通的,奇怪了耶,下面怎么抓包?
|
39
cathedrel OP @matrix67
Server lookup failure: nas.local:10001:telnet, 未知的名称或服务 或者: Server lookup failure: 192.168.1.123:10001:telnet, 未知的名称或服务 很奇怪,明明可以 ping 通 nas.local 或者其 IP,同一时间这台电脑上 ssh [email protected] 都连接成功的,nas 上的防火墙也关了,这问题大概出在哪儿?? 前面用 caddy 做 webdav 服务器的时候连接时是报证书错误,难不成是这个 webdav 项目在网络广播上有什么问题?? |
41
cathedrel OP @matrix67 主操作电脑是 manjaro,默认安装了 ufw,我刚刚看了一下,“家庭”是关闭的,“公共的”和“办公室”是开启的,但是所有的“传出”都是默认允许的,“传入”被禁止,这应该完全不影响吧?
|
42
matrix67 2021-01-31 20:53:27 +08:00 1
|
44
YouLMAO 2021-01-31 22:09:06 +08:00 via Android
中国的首富,是一种诅咒死亡的话
|
45
cathedrel OP @matrix67 这会发现之前完全不能连接是服务器的防火墙问题,真是奇怪,明明给 firewalld 开了 10001 端口,也 reload 了,但就是连不上,现在我是 disable firewalld 然后重启系统再运行 webdav --config webdev.json,能连上了!一开始提示证书机构未知,接受证书后就说“请确认您的用户信息”,意思用户名或者密码错误,我在 json 里面设置的很简单啊,怎么回事?
服务器上的输出: 2021/01/31 22:41:39 http: TLS handshake error from 192.168.1.10:36796: read tcp 192.168.1.123:10001->192.168.1.10:36796: read: connection reset by peer json 里面关于 user 的如下: "users": [ { "username": "admin", "password": "ooadmin", "modify": true, "scope": "/mnt/nas" } ] } 用户名 admin 密码 ooadmin,怎么也不可能打错,这又是什么奇怪的问题? 还有个奇怪的点:webdav 客户端用 nas.local 是连不上的,必须用 ip 才能连上,但是同一台电脑里 ssh 和 ping 都可以连上 nas.local,怪事频出啊 |
46
cathedrel OP @matrix67 另外,台式机的防火墙不关是开启还是关闭还是开启状态下完全允许传入传出,webdav 都是这样德行
|
47
cathedrel OP @matrix67 又在手机上试了一下(前面全部是在电脑上试的),连不上,不管是 nas.local 或者 IP,都连不上,手机上也没有更多的提示,服务器端也是完全没有任何接入的提示,我现在怀疑这个 webdav 服务端可能有点什么问题,不过它的 issue 页面又好像没什么那么多吐槽的,太奇怪了
|
48
qinghon 2021-02-01 00:27:59 +08:00 via Android 1
突然有点奇怪为啥 nginx 没人写个插件自动维护 https
|
49
cathedrel OP @squkw 你好首富,头大,问题一个接一个
我的配置文件就照抄的你在 4 楼的样子,只是 basicauth 上面加了一行 file_server browse,运行起来就只能是在浏览器里浏览文件,webdav 客户端一直说请确认用户信息,好像是用户名和密码对不上的意思,可是很简单的用户名和密码不可能错(就 123 ),而且浏览器的页面就是这个用户名和密码进去的,这是什么问题呢? webdav 可以 /需要另外设置登入信息吗? |
51
matrix67 2021-02-01 09:41:18 +08:00
@cathedrel #45
> webdav 客户端用 nas.local 是连不上的,必须用 ip 才能连上 这个问题是你客户端 dns 解析的问题。 > TLS handshake error 这个是你客户端 ssl 没选上的问题。 你先把服务端 https 那些都选项都删了,只使用 http 试试。要是能连上,再 debug ssl 问题。 |
52
reed2020 2021-02-01 09:59:41 +08:00
caddy2 的文档和配置真是一言难尽,caddy1 还挺好的
|