2c10b421b406de2f5b5e7bb780bdaa1318f83c29
Proxy Stack — VLESS(WS+TLS) with your custom Caddy (Cloudflare/Alidns + caddy-l4)
这包兼容两种部署模式:
- A. 标准模式(无 L4):
server/docker-compose.yml直接让 Caddy 占用 80/443;v2ray 走/ray路由,适合多数“网站 + 代理共存”的情况。 - B. L4 前置模式:
server/docker-compose-l4.yml用 caddy-l4 独占 80/443,根据 SNI 把DERPER/其他 TLS 流量直接四层转发,caddy-http仅监听 8443;适合你需要在 443 上同时承载多种非 HTTP TLS upstream(如 Tailscale derper)时。
两种模式均保持 复用 443 端口;未来增加站点/服务仅需改 Caddyfile 或 l4.json。
目录
proxy-stack-vless-wss-caddy-v2/
├─ README.md
├─ server/
│ ├─ Dockerfile.caddy-l4 # 你的 caddy 构建(含 cloudflare/alidns/caddy-l4)
│ ├─ docker-compose.yml # 模式 A(无 L4,Caddy 直接 80/443)
│ ├─ docker-compose-l4.yml # 模式 B(有 L4,Caddy-HTTP 监听 8443)
│ ├─ caddy/
│ │ ├─ Caddyfile # 站点与 /ray 反代(模式A/B都用)
│ │ ├─ l4.json # 仅模式B使用:L4 路由(SNI → upstream)
│ │ ├─ env/
│ │ │ └─ caddy.env.example # DNS 证书与 ACME 环境变量示例
│ │ └─ site/index.html # 占位站点
│ └─ v2ray/config.json # VLESS WS 入站(/ray)
└─ client/
├─ docker-compose.yml
└─ v2ray-client.json
1) 准备域名与证书环境变量
- DNS A 记录:将
<YOUR_DOMAIN>指向 VPS 公网 IP(如需子域proxy.<YOUR_DOMAIN>,请自行替换)。 - 将
server/caddy/env/caddy.env.example复制为caddy.env并填入:ACME_EMAIL:Let's Encrypt/ZeroSSL 证书邮箱CF_API_TOKEN(可选):Cloudflare DNS API TokenALIYUN_ACCESS_KEY_ID/ALIYUN_ACCESS_KEY_SECRET(可选):阿里云 DNS AK/SKDOMAIN:你的域名(与上面解析一致)DERPER_HOST(可选,L4 模式匹配用)
你可同时放 Cloudflare 与阿里云变量,Caddyfile 里按需选择 DNS Provider。
2) 模式 A(推荐,简单):Caddy 直接占用 80/443
cd server
docker compose up -d --build
- 将自动构建你自定义的 caddy 镜像,并用
caddy/Caddyfile配置站点与/ray反代。 - 健康检查:访问
https://<YOUR_DOMAIN>/_health返回 200。
3) 模式 B(进阶):caddy-l4 前置 + caddy-http 监听 8443
cd server
docker compose -f docker-compose-l4.yml up -d --build
caddy-l4独占 80/443,并按caddy/l4.json的 SNI 规则把DERPER_HOST直接四层转发,其他 TLS 走caddy-http:8443。caddy-http同样装的是你自定义的 caddy(可自动签发证书),承担网站与/ray。
4) 客户端
cd client
# 修改 v2ray-client.json 的 <YOUR_DOMAIN> 与 <UUID> 后:
docker compose up -d
# 得到本机代理:SOCKS5 127.0.0.1:1080;HTTP 127.0.0.1:8080
Docker 构建走代理:
DOCKER_BUILDKIT=1 docker build --build-arg HTTP_PROXY=http://127.0.0.1:8080 --build-arg HTTPS_PROXY=http://127.0.0.1:8080 -t img:latest .
5) 常见问题
- 证书失败:检查 80/443 是否放行;DNS 是否生效;
caddy.env中 DNS Token 是否正确。 - 端口复用:在
Caddyfile新增handle/route或在l4.json新增 SNI 分流;无需额外占端口。 - 性能:选好 LA 节点/带宽;必要时在 v2ray 启用
mux。
法律合规自行确认;仅用于合法用途。
Description