第一步:确认 Docker Compose 可用
在服务器执行:
1 | docker --version |
如果两个命令都正常显示版本号,就可以继续。
第二步:创建 Caddy 目录
1 | mkdir -p /opt/docker/caddy/{data,config,sites} |
第三步:创建 Docker 网络
1 | docker network create caddy |
这个网络以后可以让网站、OpenList 等容器与 Caddy 通信。
第四步:创建 Caddy 配置
执行:
1 | mkdir -p /opt/docker/caddy/conf |
这只是用于测试的 HTTP 配置,后面添加域名时再开启自动 HTTPS。
然后创建 Compose 文件:
1 | cat > /opt/docker/caddy/compose.yml <<'EOF' |
这里持久化的 data 目录非常重要,以后 Caddy 申请的证书和私钥会保存在里面,容器重建后也不会丢失。
第五步:启动 Caddy
1 | cd /opt/docker/caddy |
如果显示 Up,再执行:
1 | curl http://127.0.0.1 |
正常应该返回:
1 | Caddy is running! |
这说明 Caddy 已经在本机运行。要从公网访问,还需要在 Oracle Cloud 的安全列表或 NSG 中放行 TCP 80、443,HTTP/3 则需要 UDP 443。
然后在你的域名DNS上添加 A 记录,指向 Caddy 的 IP 地址即可
Caddyfile配置
如果是本地文件
1 | xxx.example.com { |
如果是docker容器
xxx.example.com {
reverse_proxy host.docker.internal:端口号
}
加载配置
修改 Caddyfile 后,不需要重启容器,直接热重载即可。
先检查配置有没有错误:
1 | docker exec caddy caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile |
如果配置正确,执行:
1 | docker exec caddy caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile |
这样新配置会立即生效,通常不会中断现有连接。