1.新建 Dockerfile 构建镜像
TypeScript
# Dockerfile
# 使用官方构建镜像作为基础
FROM caddy:2-builder AS builder
# 设置 Go 模块代理为国内镜像(关键步骤)
ENV GOPROXY=https://goproxy.cn,direct \
GO111MODULE=on \
CGO_ENABLED=0
# 运行 xcaddy 来构建,并添加阿里云 DNS 模块
RUN xcaddy build \
--with github.com/caddy-dns/alidns
# 使用最新的官方 Caddy 镜像作为运行环境
FROM caddy:latest
# 将构建好的 Caddy 文件从构建阶段复制过来
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
2.新建 Caddyfile 配置文件
TypeScript
{
http_port 8080
# 开启调试日志
debug
}
:8080 {
respond "Hello from Caddy on port 8080" 200
}
http://192.168.1.141:8080 {
handle_path /hinas* {
reverse_proxy 192.168.1.141:80
}
handle {
respond "Path not matched: {uri}" 404
}
}
home.jcdone.cn {
# 全局配置:自动 HTTPS,Caddy 会自动申请证书
tls {
dns alidns {
access_key_id {env.ALIYUN_ACCESS_KEY_ID}
access_key_secret {env.ALIYUN_ACCESS_KEY_SECRET}
}
# 增加超时时间
propagation_timeout 5m
}
# 开启压缩
encode gzip zstd
# 规则2:访问 /alist 转发到 AList
# 假设 AList 运行在 192.168.1.100 的 5244 端口
handle_path /hinas* {
# 去掉 /hinas 前缀再转发给后端
uri strip_prefix /hinas
reverse_proxy 192.168.1.141:80 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
header_up X-Forwarded-Prefix /hinas
}
}
}
3.新建 /mnt/sda1/docker-data/caddy/config he /mnt/sda1/docker-data/caddy/data 目录
4.执行docker 命令
TypeScript
docker run -d \
--name caddy-alidns \
--restart unless-stopped \
--network host \
--dns 223.5.5.5 \
--dns 223.6.6.6 \
-e ALIYUN_ACCESS_KEY_ID="LTAI58VxU" \
-e ALIYUN_ACCESS_KEY_SECRET="YGUzJpCrXyCqO" \
-v /mnt/sda1/docker-data/caddy/Caddyfile:/etc/caddy/Caddyfile \
-v /mnt/sda1/docker-data/caddy/data:/data \
-v /mnt/sda1/docker-data/caddy/config:/config \
caddy-alidns:latest
5.如果没有问题,ssl证书将会被申请