内网部署 NAS,在配 TLS 的时候,想到了群友推荐的 Caddy,试用了一下果然很神。和 nginx 相比,不需要复杂的配置文件,几行配置就能完成反代+自动 HTTPS。
目标:设置域名解析内网 ip,并为域名配置 TLS
省流:caddy + cloudflare 模块,用于 Let's Encrypt 的挑战认证
cloudflare 域名可以参考 玩转 Cloudflare ,注意需要设置为“仅DNS”,使用 cloudflare 的代理肯定访问不了内网。
使用 xcaddy 编译带 cloudflare 插件的 caddy
sudo pacman -S xcaddy # archlinuxcn 源,用 AUR 也可以
xcaddy build --with github.com/caddy-dns/cloudflare
sudo pacman -Rs xcaddy # 删除
把生成的 ./caddy 拷贝到服务器
https://dash.cloudflare.com/profile/api-tokens 如图,给 Zone.DNS 读写权限:
在任意文件夹下新建 Caddyfile
{
acme_dns cloudflare [API_KEY]
}
example.com {
reverse_proxy localhost:5244
}
sub.example.com {
reverse_proxy 192.168.3.42:8080
}
运行
sudo ./caddy run
服务就跑起来了。sudo ./caddy start
可以扔到后台访问,当然,跑起来没问题之后,建议还是使用 systemd 统一管理。编辑 /etc/caddy/Caddyfile,并将刚刚编译的 caddy 覆盖 /usr/bin/caddy,注意每一次更新 caddy 都要重新覆盖。