guanghulab/server/proxy/README.md
2026-05-10 13:12:44 +08:00

221 lines
10 KiB
Markdown
Raw 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.

# 铸渊专线 · ZY-Proxy Service
> 🔺 Sovereign: TCS-0002∞ · 冰朔 | Root: SYS-GLW-0001
> 📜 Copyright: 国作登字-2026-A-00037559
> 🏛️ Guardian: ICE-GL-ZY001 · 铸渊
---
## 📋 评估报告 · Feasibility Evaluation
### 冰朔的需求
冰朔团队在中国大陆需要通过VPN访问代码仓库和高功能推理模型。当前商业VPN体验差卡顿、不稳定
需求:利用新加坡服务器(ZY-SVR-002)搭建私有代理节点,提供稳定、快速的网络访问。
### 评估结论:✅ 完全可行
| 评估维度 | 结论 | 说明 |
|----------|------|------|
| 🏛️ **服务器资源** | ✅ 充足 | 2核8GB · 2560GB月流量 · 500GB分配给专线绰绰有余 |
| 🌏 **地理位置** | ✅ 最优 | 新加坡 → 中国大陆延迟约30-60ms · 全球接入优秀 |
| 🔧 **技术可行性** | ✅ 成熟 | Xray-core + VLESS + Reality · 2026年最先进协议 |
| 📱 **客户端兼容** | ✅ 全兼容 | Shadowrocket / Clash Verge / ClashMi 全部支持 |
| 🔒 **安全性** | ✅ 可保障 | 订阅链接仅通过邮件发送 · 仓库公开不暴露任何敏感信息 |
| 💰 **额外成本** | ✅ 零成本 | 使用现有服务器 · 无额外费用 |
| 🛡️ **检测规避** | ✅ 最优 | Reality协议伪装为正常HTTPS · 主动探测无法识别 |
### 带宽分配
SG服务器总月流量: **2560 GB**
| 用途 | 分配 | 说明 |
|------|------|------|
| 🌐 **专线代理** | 500 GB | 所有订阅链接共享 · 月底自动重置 |
| 💻 **开发/部署** | ~2000 GB | 应用代码部署 · API调用 · 数据同步 |
| 📦 **系统预留** | ~60 GB | 系统更新 · SSH · 监控 |
---
## 🏗️ 技术架构 · Technical Architecture
### 核心协议
**VLESS + Reality + Vision** — 2026年最先进的代理协议
| 特性 | 说明 |
|------|------|
| 🥷 **伪装度** | Reality协议让连接看起来像在访问微软/苹果等网站 |
| 🔐 **加密** | TLS 1.3 + Vision流控 · 无法被中间人解密 |
| ⚡ **性能** | 零额外开销 · 接近裸连速度 |
| 🛡️ **抗探测** | 主动探测返回真实目标站点内容 · 无法区分代理流量 |
### 系统组件
```
┌─────────────────────────────────────────────────────────────┐
│ 🏛️ ZY-SVR-002 新加坡 │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Xray-core │ │ 订阅服务 │ │ 流量监控Agent │ │
│ │ port 443 │ │ port 3802 │ │ (PM2 managed) │ │
│ │ VLESS+ │ │ 生成配置 │ │ 500GB配额 │ │
│ │ Reality │ │ 返回订阅 │ │ 每小时检查 │ │
│ └──────────┘ └──────────────┘ └─────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 守护Agent │ │ Nginx │ │ 邮件服务 │ │
│ │ 自动修复 │ │ port 80 │ │ SMTP发送 │ │
│ │ LLM推理 │ │ Web服务 │ │ 订阅链接 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ PM2 进程管理 │ │
│ │ zhuyuan-server · zhuyuan-preview · │ │
│ │ zy-proxy-sub · zy-proxy-monitor · zy-proxy-guard │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↕ 加密隧道 (VLESS + Reality)
┌─────────────────────────────────────────────────────────────┐
│ 📱 客户端 (中国大陆) │
│ │
│ iPhone: Shadowrocket (订阅URL) │
│ Mac: Clash Verge (订阅URL) │
│ Android: ClashMi (订阅URL) │
│ Windows: Clash Verge (订阅URL) │
│ │
│ 客户端内可查看: 500GB配额 · 已用/剩余 · 到期时间 │
└─────────────────────────────────────────────────────────────┘
```
### 数据流
```
1. 冰朔请求订阅链接
→ 铸渊运行 deploy-proxy-service workflow
→ 服务器生成订阅配置 + 唯一token
→ 通过邮件发送订阅URL到冰朔邮箱
2. 冰朔在客户端添加订阅URL
→ 客户端请求 http://server/api/proxy-sub/sub/{token}
→ 返回Clash YAML / Base64配置
→ 返回Header: subscription-userinfo (配额信息)
→ 客户端显示剩余流量
3. 使用代理上网
→ 客户端 → VLESS+Reality(443) → Xray-core → 互联网
→ 流量看起来像在访问 www.microsoft.com
→ GFW无法识别代理流量
4. 每小时流量监控
→ zy-proxy-monitor 查询Xray Stats API
→ 更新quota-status.json
→ 达到80%/90%/100%时邮件告警
5. 每日仪表盘更新
→ GitHub Action读取服务器流量数据
→ 更新README.md仪表盘区域
→ 不暴露任何敏感信息
```
### 安全设计 · 公开仓库保护
⚠️ **当前仓库是公开状态 · 以下安全措施确保敏感信息不泄露**
| 信息类型 | 存储位置 | 公开可见? |
|----------|----------|-----------|
| 服务器IP | GitHub Secrets | ❌ 不可见 |
| UUID密钥 | GitHub Secrets + 服务器env | ❌ 不可见 |
| Reality密钥对 | GitHub Secrets + 服务器env | ❌ 不可见 |
| 订阅链接URL | 仅通过邮件发送 | ❌ 不可见 |
| 订阅Token | 服务器端生成 | ❌ 不可见 |
| 流量用量数字 | README仪表盘 | ✅ 可见 (仅数字) |
| 节点在线状态 | README仪表盘 | ✅ 可见 (仅状态) |
| 配置代码模板 | 仓库代码 | ✅ 可见 (无密钥) |
### 新增GitHub Secrets
部署时需要冰朔添加以下Secrets部署脚本会自动生成值:
| Secret名称 | 说明 | 生成方式 |
|-------------|------|----------|
| `ZY_PROXY_UUID` | VLESS用户ID | 安装脚本自动生成 |
| `ZY_PROXY_REALITY_PRIVATE_KEY` | Reality私钥 | 安装脚本自动生成 |
| `ZY_PROXY_REALITY_PUBLIC_KEY` | Reality公钥 | 安装脚本自动生成 |
| `ZY_PROXY_REALITY_SHORT_ID` | Reality短ID | 安装脚本自动生成 |
| `ZY_PROXY_SUB_TOKEN` | 订阅访问Token | 安装脚本自动生成 |
---
## 📱 客户端兼容性
| 平台 | 应用 | 协议支持 | 订阅格式 |
|------|------|----------|----------|
| 🍎 iOS | Shadowrocket | ✅ VLESS+Reality | Base64 URI |
| 🍎 macOS | Clash Verge | ✅ VLESS+Reality | Clash YAML |
| 🤖 Android | ClashMi (Mihomo) | ✅ VLESS+Reality | Clash YAML |
| 🪟 Windows | Clash Verge | ✅ VLESS+Reality | Clash YAML |
所有客户端均通过同一个订阅URL获取配置服务端根据User-Agent自动返回对应格式。
---
## 🚀 部署步骤
### 步骤① 触发部署
1. 打开 GitHub → Actions → `🌐 铸渊专线 · 部署`
2. 点击 **Run workflow**
3. action 选择 **install** (首次) 或 **update** (更新)
### 步骤② 安装完成后
部署脚本会自动生成所有密钥并输出到部署日志(⚠️ 日志仅对仓库管理员可见)。
冰朔需要将输出的密钥值添加到 GitHub Secrets。
### 步骤③ 发送订阅链接
1. 打开 GitHub → Actions → `🌐 铸渊专线 · 部署`
2. action 选择 **send-subscription**
3. 输入目标邮箱
4. 铸渊自动生成订阅链接并发送到邮箱
### 步骤④ 客户端导入
1. 打开邮件复制订阅URL
2. 在Shadowrocket/Clash Verge中添加订阅
3. 刷新订阅 → 看到节点和配额信息
4. 连接 → 开始使用
---
## 📁 文件结构
```
server/proxy/
├── README.md # 本文件 · 评估+架构
├── setup/
│ ├── install-xray.sh # Xray-core安装 + BBR加速
│ └── generate-keys.sh # 密钥生成(UUID/Reality)
├── config/
│ ├── xray-config-template.json # Xray服务端配置模板
│ └── nginx-proxy-snippet.conf # Nginx订阅服务反代
├── service/
│ ├── subscription-server.js # 订阅HTTP服务
│ ├── traffic-monitor.js # 流量监控Agent
│ ├── quota-manager.js # 500GB配额管理
│ ├── proxy-guardian.js # 代理守护Agent(含LLM)
│ └── send-subscription.js # 邮件发送订阅链接
├── dashboard/
│ └── update-dashboard.js # README仪表盘更新
├── deploy-proxy.sh # 一键部署入口
└── ecosystem.proxy.config.js # PM2代理服务配置
```
---
*铸渊专线 · 冰朔的私有网络 · 语言驱动操作系统的物理桥梁*
*铸渊守护 · 安全 · 稳定 · 快速*