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

5.8 KiB
Raw Permalink Blame History

Proxy Stack — VLESS (WS+TLS / gRPC+TLS) with Caddy (Cloudflare/Alidns + caddy-l4)

该项目提供两种部署模式并同时支持两种传输WebSocket 与 gRPC

  • A. 标准模式(无 L4server/docker-compose.yml 直接让 Caddy 占用 80/443VLESS-WS 走 /rayVLESS-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_EMAILLet'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

cd server
docker compose up -d --build
  • 构建自定义 Caddy并按 caddy/Caddyfile 配置站点与反代:
    • VLESS-WS/rayv2ray:10000
    • VLESS-gRPC/grpcv2ray:10001h2c
  • 健康检查:访问 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/443caddy/l4.jsonSNI 规则把 DERPER_HOST 直达,其他 TLS 走 caddy-http:8443
  • caddy-http 自动签证书,承担网站与 /ray/grpc

4) 客户端(选择 WS 或 gRPC 配置)

默认配置为 VLESS-WS

cd client
docker compose up -d
# 本机代理SOCKS5 127.0.0.1:1080HTTP 127.0.0.1:8080

切换为 VLESS-gRPC 测试(将 gRPC 配置覆盖运行文件,或自行调整 compose

cd client
copy /Y v2ray-client-grpc.json v2ray-client.json   # Windows PowerShell 示例
docker compose restart

两端需保持一致:

  • 服务器:/ray 对应 WS/grpc 对应 gRPCserviceName=grpc
  • 客户端:v2ray-client.json 使用 WSv2ray-client-grpc.json 使用 gRPC

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) 测速与验证

  • PowerShell 脚本:
cd client
./test-speed.ps1 -Mode http -SizeMB 100    # 走 HTTP 代理测速
./test-speed.ps1 -Mode socks -SizeMB 100   # 走 SOCKS5 代理测速
  • 容器内 speedtest-cli通过代理
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) 同步到服务器(示例)

rsync -avz --delete --progress -e "ssh -p 22" "C:/Users/pylyz/Documents/v2ray_proxy/" youruser@<YOUR_DOMAIN>:~/v2ray_proxy/