请未来的首富帮我写个能跑起来的 caddy 2 的 Caddyfile,不是我懒,详见内文

2021-01-30 05:55:48 +08:00
 cathedrel

放狗搜了两天,网上的例子基本都是 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 的配置文件吧,或者用非程序员也能懂的白话文指出问题在哪儿,谢谢了,好人一生平安,好人必成首富

7414 次点击
所在节点    程序员
54 条回复
cathedrel
2021-01-30 17:19:39 +08:00
@squkw
就是有个 webdav 的问题:我在另一台 linux 的桌面电脑上想用 Nemo 直接连接 Nas 的 webdav 服务,一直不行,提示“HTTP 错误:对方发送了致命 TLS 警报:内部错误”

journalctl -xef -u caddy.service 的话显示有这么一句:
cathedrel
2021-01-30 17:20:26 +08:00
@squkw
"logger":"tls","msg":"stapling OCSP","error":"no OCSP stapling for [nas.local]: no OCSP server specified in certificate"

不知道是不是自签证书的问题,有解决办法吗?
cathedrel
2021-01-30 17:22:19 +08:00
@boris93 也是看在 caddy 的配置文件确实不难的前提下选了这货试试,谁知道文档那么坑
cathedrel
2021-01-30 17:22:53 +08:00
@matrix67 这个看起来也不错,收藏了,谢谢
WordTian
2021-01-30 18:31:53 +08:00
2 的文档确实坑,用这货转发 http 代理的请求都转发不了,坑的一匹
matrix67
2021-01-30 18:56:09 +08:00
@cathedrel 自签证书

mkdir /root/webdev

openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout webdav.key -out webdav.pem
huiyifyj
2021-01-30 19:07:48 +08:00
看来不止是我一个人觉得 caddy 的文档难懂 🌚
ruimz
2021-01-30 20:44:20 +08:00
@Alphagocc caddy2 不支持 caddy1 的 Caddyfile 。光是官网列出来的变化就有这么多 https://caddyserver.com/docs/v2-upgrade#caddyfile
cathedrel
2021-01-30 22:29:21 +08:00
@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 关了也是一样,奇怪了,哪里不对吗?
missdeer
2021-01-30 23:14:21 +08:00
就是从 nginx 转到 caddy v1 再转回 nginx 的,太坑了
wym0823
2021-01-30 23:58:01 +08:00
chfs 这个小工具你值得拥有
matrix67
2021-01-31 09:27:00 +08:00
@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 就不通了。
docx
2021-01-31 10:43:09 +08:00
没什么特定需求的话,用还是 v1 吧。
v2 我也看不太懂,改的什么玩意。
matrix67
2021-01-31 10:45:34 +08:00
@matrix67

还有这个项目的防御式编程做的也不太好,比如 config 写到 a.yaml 然后执行 webdav --config b.yaml, 它竟然服务能起来,而且是在高位端口随机取一个,而不是报 config 文件没找到。这可真是坑的一批

当然它吞配置好像按照 环境变量、配置文件等等优先级来的,但是明显指定一个不存在的 config 能起来真是让我觉得很奇怪 2333
squkw
2021-01-31 11:10:10 +08:00
@cathedrel 我自己是没开 https 。所以没遇到你的问题,第一个大括号里面加一行 auto_https off
dingyaguang117
2021-01-31 15:35:48 +08:00
Caddy 文档真垃圾,除了自动维护 https 证书
cathedrel
2021-01-31 18:18:31 +08:00
@matrix67 是的,这玩意也确实有点坑,一开始我 webdav --config webdev.config (对,.config,就跟着它 github 学的),总是显示一个随机的端口,我还在想这要怎么设置防火墙呢?后来试着用你的.json 方式,它才显示我指定的端口,这才明白是它的问题不是我的问题,但是新问题又来了:不管它是运行在随机端口还是我指定的端口,依然“HTTP 错误:无法连接:没有到主机的路由”,关了 firewalld 也是这样,同一时间 ping nas.local 或者 ping IP 都是通的,奇怪了耶,下面怎么抓包?
matrix67
2021-01-31 18:36:06 +08:00
@cathedrel

在你客户端 telnet nas.local.ip 9999 这个输出的是啥
cathedrel
2021-01-31 18:45:34 +08:00
@matrix67

Server lookup failure: nas.local:10001:telnet, 未知的名称或服务

或者:

Server lookup failure: 192.168.1.123:10001:telnet, 未知的名称或服务

很奇怪,明明可以 ping 通 nas.local 或者其 IP,同一时间这台电脑上 ssh user@nas.local 都连接成功的,nas 上的防火墙也关了,这问题大概出在哪儿??

前面用 caddy 做 webdav 服务器的时候连接时是报证书错误,难不成是这个 webdav 项目在网络广播上有什么问题??
matrix67
2021-01-31 19:33:16 +08:00
@cathedrel 这就很奇怪了。

或者客户端上面有没有防火墙。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX