This commit is contained in:
mm644706215
2025-09-30 20:50:00 +08:00
parent 2c10b421b4
commit 0942f30386

View File

@@ -1,9 +1,9 @@
# Proxy Stack — VLESS(WS+TLS) with your custom Caddy (Cloudflare/Alidns + caddy-l4)
# Proxy Stack — VLESS (WS+TLS / gRPC+TLS) with Caddy (Cloudflare/Alidns + caddy-l4)
这包兼容两种部署模式:
该项目提供两种部署模式并同时支持两种传输WebSocket 与 gRPC
- **A. 标准模式(无 L4**`server/docker-compose.yml` 直接让 Caddy 占用 80/443v2ray`/ray` 路由,适合多数“网站 + 代理共存”的情况
- **B. L4 前置模式**`server/docker-compose-l4.yml` 用 caddy-l4 独占 80/443根据 SNI 把 `DERPER`/其他 TLS 流量直接四层转发,`caddy-http` 监听 8443合你需要在 443 上同时承载多种非 HTTP TLS upstream如 Tailscale derper
- **A. 标准模式(无 L4**`server/docker-compose.yml` 直接让 Caddy 占用 80/443VLESS-WS`/ray`VLESS-gRPC 走 `/grpc`。适合“网站 + 代理共存”。
- **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。
@@ -11,22 +11,25 @@
## 目录
```
proxy-stack-vless-wss-caddy-v2/
v2ray_proxy/
├─ README.md
├─ server/
│ ├─ Dockerfile.caddy-l4 # 你的 caddy 构建(含 cloudflare/alidns/caddy-l4
│ ├─ docker-compose.yml # 模式 A无 L4Caddy 直接 80/443
│ ├─ docker-compose-l4.yml # 模式 B有 L4Caddy-HTTP 监听 8443
│ ├─ Dockerfile.caddy-l4 # 自定义 Caddy含 cloudflare/alidns/caddy-l4
│ ├─ docker-compose.yml # 模式 ACaddy 直接 80/443
│ ├─ docker-compose-l4.yml # 模式 Bcaddy-l4 占 80/443caddy-http 8443
│ ├─ caddy/
│ │ ├─ Caddyfile # 站点与 /ray 反代模式A/B都用
│ │ ├─ l4.json # 仅模式B使用L4 路由SNI → upstream
│ │ ├─ Caddyfile # 站点 + 反代:/ray → WS/grpc → gRPC(h2c)
│ │ ├─ l4.json # 仅模式 BL4 路由SNI → upstream
│ │ ├─ env/
│ │ │ ─ caddy.env.example # DNS 证书与 ACME 环境变量示例
│ │ └─ site/index.html # 占位站点
│ └─ v2ray/config.json # VLESS WS 入站(/ray
│ │ │ ─ caddy.env.example # ACME 与 DNS Provider 示例
│ │ │ └─ caddy.env # 你的实际变量ACME_EMAIL、CF_API_TOKEN 等)
│ └─ site/index.html # 占位站点
│ └─ v2ray/config.json # 入站10000(WS /ray)、10001(gRPC serviceName=grpc)
└─ client/
├─ docker-compose.yml
─ v2ray-client.json
─ v2ray-client.json # 默认VLESS-WS /ray
├─ v2ray-client-grpc.json # 备选VLESS-gRPC /grpc
└─ test-speed.ps1 # 代理测速脚本HTTP/SOCKS5
```
---
@@ -41,7 +44,7 @@ proxy-stack-vless-wss-caddy-v2/
- `DOMAIN`:你的域名(与上面解析一致)
- `DERPER_HOST`可选L4 模式匹配用)
> 可同时放 Cloudflare 与阿里云变量Caddyfile按需选择 DNS Provider。
> 可同时放 Cloudflare 与阿里云变量,`Caddyfile` 内按需选择 DNS Provider。Cloudflare Token 至少授予 Zone:Read 与 Zone:DNS:Edit。
---
@@ -52,7 +55,9 @@ cd server
docker compose up -d --build
```
- 将自动构建自定义的 caddy 镜像,并 `caddy/Caddyfile` 配置站点与 `/ray` 反代
- 构建自定义 Caddy `caddy/Caddyfile` 配置站点与反代
- VLESS-WS`/ray``v2ray:10000`
- VLESS-gRPC`/grpc``v2ray:10001`h2c
- 健康检查:访问 `https://<YOUR_DOMAIN>/_health` 返回 200。
---
@@ -64,30 +69,71 @@ 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`
- `caddy-l4` 独占 80/443`caddy/l4.json`**SNI** 规则把 `DERPER_HOST`,其他 TLS 走 `caddy-http:8443`
- `caddy-http` 自动签证书,承担网站与 `/ray``/grpc`
---
## 4) 客户端
## 4) 客户端(选择 WS 或 gRPC 配置)
默认配置为 VLESS-WS
```bash
cd client
# 修改 v2ray-client.json 的 <YOUR_DOMAIN> 与 <UUID> 后:
docker compose up -d
# 得到本机代理SOCKS5 127.0.0.1:1080HTTP 127.0.0.1:8080
# 本机代理SOCKS5 127.0.0.1:1080HTTP 127.0.0.1:8080
```
**Docker 构建走代理:**
切换为 VLESS-gRPC 测试(将 gRPC 配置覆盖运行文件,或自行调整 compose
```bash
cd client
copy /Y v2ray-client-grpc.json v2ray-client.json # Windows PowerShell 示例
docker compose restart
```
两端需保持一致:
- 服务器:`/ray` 对应 WS`/grpc` 对应 gRPCserviceName=grpc
- 客户端:`v2ray-client.json` 使用 WS`v2ray-client-grpc.json` 使用 gRPC
**Docker 构建走代理(可选):**
```bash
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) 常见问题
## 5) 测速与验证
- PowerShell 脚本:
```powershell
cd client
./test-speed.ps1 -Mode http -SizeMB 100 # 走 HTTP 代理测速
./test-speed.ps1 -Mode socks -SizeMB 100 # 走 SOCKS5 代理测速
```
- 容器内 speedtest-cli通过代理
```bash
docker exec -it v2ray-client sh -c 'apk add --no-cache speedtest-cli >/dev/null 2>&1 || true; \
export HTTPS_PROXY=http://127.0.0.1:8080; speedtest-cli --secure'
```
## 6) 常见问题
- 证书失败:检查 80/443 是否放行DNS 是否生效;`caddy.env` 中 DNS Token 是否正确。
- ACME 限速:避免频繁重启触发过多签发;调试请用 Staging正式证书就绪后保持稳定。
- 端口复用:在 `Caddyfile` 新增 `handle`/`route` 或在 `l4.json` 新增 SNI 分流;无需额外占端口。
- 性能:选好 LA 节点/带宽;必要时在 v2ray 启用 `mux`
- `/ray` 404确保 `Caddyfile``/ray` 使用独立 `handle @vless_ws`,在静态站点 `handle` 之前匹配
- Windows 本机连不上 1080/8080重启 Docker/WSL显式绑定 `127.0.0.1:端口:容器端口` 或改用高位端口。
- 性能:不同时间/节点有差异gRPC 常较 WS 更稳HTTP/2 多路复用、指纹更像常规流量),不保证一定更快。
> 法律合规自行确认;仅用于合法用途。
---
## 7) 运维与建议
- 去掉 compose `version` 字段以消除告警;为镜像固定版本标签(避免 `latest`)。
- 增加 `healthcheck`、资源限制;开启访问日志后可按路径过滤或降级日志级别。
- 将 UUID/域名/路径抽为环境变量,便于轮换;必要时前置 CDN 或使用 Reality/XTLS-Vision更强抗探测改动更大
## 8) 同步到服务器(示例)
```bash
rsync -avz --delete --progress -e "ssh -p 22" "C:/Users/pylyz/Documents/v2ray_proxy/" youruser@<YOUR_DOMAIN>:~/v2ray_proxy/
```