Files
v2ray_proxy/README.md
mm644706215 0942f30386 update
2025-09-30 20:50:00 +08:00

140 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Proxy Stack — VLESS (WS+TLS / gRPC+TLS) with Caddy (Cloudflare/Alidns + caddy-l4)
该项目提供两种部署模式并同时支持两种传输WebSocket 与 gRPC
- **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。
---
## 目录
```
v2ray_proxy/
├─ README.md
├─ server/
│ ├─ 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 → WS/grpc → gRPC(h2c)
│ │ ├─ l4.json # 仅模式 BL4 路由SNI → upstream
│ │ ├─ env/
│ │ │ ├─ 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 # 默认VLESS-WS /ray
├─ v2ray-client-grpc.json # 备选VLESS-gRPC /grpc
└─ test-speed.ps1 # 代理测速脚本HTTP/SOCKS5
```
---
## 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 Token
- `ALIYUN_ACCESS_KEY_ID` / `ALIYUN_ACCESS_KEY_SECRET`(可选):阿里云 DNS AK/SK
- `DOMAIN`:你的域名(与上面解析一致)
- `DERPER_HOST`可选L4 模式匹配用)
> 可同时放 Cloudflare 与阿里云变量,`Caddyfile` 内按需选择 DNS Provider。Cloudflare Token 至少授予 Zone:Read 与 Zone:DNS:Edit。
---
## 2) 模式 A推荐简单Caddy 直接占用 80/443
```bash
cd server
docker compose up -d --build
```
- 构建自定义 Caddy并按 `caddy/Caddyfile` 配置站点与反代:
- VLESS-WS`/ray``v2ray:10000`
- VLESS-gRPC`/grpc``v2ray:10001`h2c
- 健康检查:访问 `https://<YOUR_DOMAIN>/_health` 返回 200。
---
## 3) 模式 B进阶caddy-l4 前置 + caddy-http 监听 8443
```bash
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` 自动签证书,承担网站与 `/ray``/grpc`
---
## 4) 客户端(选择 WS 或 gRPC 配置)
默认配置为 VLESS-WS
```bash
cd client
docker compose up -d
# 本机代理SOCKS5 127.0.0.1:1080HTTP 127.0.0.1:8080
```
切换为 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) 测速与验证
- 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 分流;无需额外占端口。
- `/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/
```