personal-edge-proxy:个人网络代理的工程化终极形态
> 一个整合 Xray、Hysteria2、REALITY Vision、WARP 与静态 SOCKS5 路由的多入站多出站个人代理方案。
## 当你的代理脚本从 50 行膨胀到 500 行时,你需要一个工程化方案
如果你是一个自建代理的重度用户,大概率经历过这样的痛苦:
- 手写 `xray config.json`,每次改端口、换协议都要小心翼翼地编辑 JSON,稍有不慎就语法错误;
- 为了绕过 ChatGPT 或 Netflix 的区域限制,手动维护一堆路由规则,结果规则越加越多,冲突越来越严重;
- 想同时用 Hysteria2 的 UDP 加速和 Xray 的 REALITY 伪装,但两者配置格式完全不同,只能开两个进程分别管理;
- 偶尔需要走 WARP 出口来解锁某些服务,但 WARP 的 WireGuard 配置和主代理配置混在一起,逻辑混乱;
- 更别提那些临时性的需求——某个程序需要走固定 SOCKS5 出口,你只能再开一个端口,手动指定 `socks5://127.0.0.1:1080`。
**personal-edge-proxy** 正是为了解决这些痛点而生的。它不是又一个代理客户端,而是一个**个人代理基础设施的完整配置模板**——一个经过实战检验的、支持多入站多出站、内置路由策略、可扩展、可维护的工程化方案。
项目地址:[https://github.com/yding-git/personal-edge-proxy](https://github.com/yding-git/personal-edge-proxy)
---
## 核心架构:一个配置,五个维度
这个项目的核心思路是:**用一套统一的配置框架,管理所有代理入口和出口**。它把代理网络抽象为五个维度:
1. **入站(Inbound)**:你如何连接代理(本地端口、协议类型)
2. **出站(Outbound)**:代理如何连接远程服务器(协议、认证、伪装)
3. **路由(Routing)**:流量如何从入站分配到出站(基于域名、IP、进程等)
4. **出口策略(Fallback)**:当主出口不可用或需要特定出口时,如何切换
5. **辅助工具(WARP / SOCKS5)**:额外的出口选项,用于特殊场景
### 入站:不止是 HTTP 和 SOCKS5
大多数代理工具只提供 SOCKS5 和 HTTP 入站。这个项目提供了**四种入站方式**:
- **SOCKS5 入站**(端口 1080):通用入口,适合大多数应用
- **HTTP 入站**(端口 8080):用于不支持 SOCKS5 的老旧应用
- **混合入站**(端口 1081):同时监听 SOCKS5 和 HTTP,自动识别协议
- **透明代理入站**(端口 12345):用于路由器或网关级透明代理
这意味着你可以在同一台机器上,同时为桌面浏览器、命令行工具、Docker 容器甚至局域网内其他设备提供服务,而无需为每种场景单独配置。
### 出站:Xray + Hysteria2 + REALITY + WARP 全家桶
出站是重头戏。这个项目支持四种出站协议,每种都有明确的用途:
| 出站协议 | 用途 | 特点 |
|---------|------|------|
| **Xray (VMess/VLESS)** | 主力代理 | 稳定、兼容性好、支持 TCP/WS/gRPC |
| **Hysteria2** | 高速传输 | 基于 QUIC,弱网环境表现极佳 |
| **REALITY Vision** | 高隐匿代理 | 伪装成真实网站 TLS 流量,防主动探测 |
| **WARP** | 辅助出口 | Cloudflare 的免费 VPN,用于解锁区域限制 |
更妙的是,这些出站可以**同时启用**,并通过路由规则按需选择。比如:
- 普通网页浏览 → 走 Xray(稳定)
- 视频流媒体 → 走 Hysteria2(速度快)
- 需要高匿名的场景 → 走 REALITY Vision(防检测)
- 被墙的特定服务 → 走 WARP(绕道 Cloudflare)
### 路由:规则引擎,而非简单的 if-else
这个项目的路由配置不是简单的"域名列表 → 出口",而是一个**完整的规则引擎**。它支持:
- **域名匹配**:`domain:openai.com` → 走 WARP
- **IP 段匹配**:`ip:192.168.0.0/16` → 直连
- **进程匹配**:`process:firefox` → 走特定出口
- **地理匹配**:`geoip:cn` → 直连
- **正则匹配**:`regexp:.*\.netflix\.com` → 走 Hysteria2
规则按顺序匹配,命中即停止。这种设计让复杂的路由策略变得清晰可维护。
---
## 安装与快速上手
### 准备工作
- 一台境外 VPS(推荐 1GB 内存以上)
- 一个域名(用于 TLS 伪装,非必须但强烈推荐)
- 服务器上已安装 Docker 或可直接运行二进制文件
### 安装步骤
**方式一:Docker 一键部署(推荐)**
bash
# 克隆项目
git clone https://github.com/yding-git/personal-edge-proxy.git
cd personal-edge-proxy
# 复制配置模板
cp .env.example .env
# 编辑 .env 文件,填入你的服务器 IP、域名、UUID 等
vim .env
# 启动所有服务
docker-compose up -d
**方式二:手动安装(适用于非 Docker 环境)**
bash
# 安装 Xray-core
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
# 安装 Hysteria2
curl -fsSL https://get.hy2.sh/ | bash
# 复制项目配置文件
cp -r config/ /etc/xray/
cp -r hysteria/ /etc/hysteria/
# 启动服务
systemctl restart xray
systemctl restart hysteria
### 基本配置示例
项目根目录下的 `.env` 文件是核心配置入口。以下是一个典型配置:
bash
# 服务器信息
SERVER_IP=your.server.ip
DOMAIN=your.domain.com
# 入站端口
SOCKS5_PORT=1080
HTTP_PORT=8080
MIXED_PORT=1081
TRANSPARENT_PORT=12345
# Xray 配置
UUID=$(cat /proc/sys/kernel/random/uuid)
WS_PATH=/ws
# Hysteria2 配置
HY2_PASSWORD=your_strong_password
HY2_PORT=443
# REALITY 配置
REALITY_SERVER=www.microsoft.com
REALITY_PORT=8443
# WARP 配置
WARP_LICENSE=your_license_key_optional
### 客户端连接示例
配置完成后,你的客户端连接方式如下:
**SOCKS5 入站**(适用于 Clash、V2rayN 等):
socks5://127.0.0.1:1080
**HTTP 入站**(适用于 curl、wget 等):
bash
curl -x http://127.0.0.1:8080 https://api.ipify.org
**透明代理**(适用于 Linux 路由器):
bash
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 12345
---
## 深度解析:核心亮点
### 1. 真正的多入站多出站,而非"伪多"
很多工具号称支持多出站,但实际上只是简单的"主备切换"。这个项目的多出站是**同时在线、按需路由**的。你可以通过一条路由规则,让 `netflix.com` 的流量走 Hysteria2,让 `openai.com` 的流量走 WARP,让其他流量走 Xray——所有出口同时保持连接,互不干扰。
### 2. 路由规则的可读性与可维护性
项目使用 YAML 格式的路由规则(而非 JSON),这让配置变得极其清晰。以下是一个真实的路由配置片段:
yaml
routing:
rules:
# 直连国内网站,减少延迟
- type: geoip
matcher: cn
outbound: direct
# OpenAI 相关域名走 WARP,解锁区域限制
- type: domain
matcher: ["openai.com", "chatgpt.com", "anthropic.com"]
outbound: warp
# 流媒体走 Hysteria2,获得更好的带宽
- type: domain
matcher: ["netflix.com", "youtube.com", "disneyplus.com"]
outbound: hysteria2
# 其余所有流量走 Xray REALITY
- type: default
outbound: reality
这种配置方式,即使三个月后回来修改,也能一眼看懂每条规则的意图。
### 3. 静态 SOCKS5 路由——被忽视的杀手锏
项目支持**静态 SOCKS5 出站**,这意味着你可以将某个入站端口的所有流量,固定转发到另一个 SOCKS5 代理。这个功能在以下场景极其有用:
- **公司网络**:你的电脑通过公司代理上网,但某些开发工具需要直连
- **多级代理**:本机代理 → 中转服务器 → 目标服务器
- **临时分流**:某个程序需要固定 IP 出口,直接指定一个 SOCKS5 端口即可
配置方式:
yaml
static_socks5:
enabled: true
listen_port: 2080
upstream: "socks5://user:pass@your-upstream-proxy:1080"
### 4. 对 REALITY Vision 的原生支持
REALITY Vision 是 Xray 社区的最新成果,它让代理流量伪装成访问真实网站(如 `microsoft.com`)的 TLS 流量。这个项目内置了完整的 REALITY 配置模板,包括:
- 自动生成密钥对
- 目标网站指纹伪装
- 流量行为模拟(模拟 TLS 1.3 会话)
这意味着你的代理流量在深度包检测(DPI)下,看起来就是普通的 HTTPS 访问,几乎无法被识别。
### 5. WARP 集成——零成本解锁区域限制
Cloudflare WARP 是免费服务,但手动配置 WireGuard 协议非常繁琐。这个项目封装了 WARP 的完整配置流程,你只需要在 `.env` 中填入(可选)的 WARP 许可证密钥,即可自动完成注册和密钥配置。
---
## 适用场景:谁需要这个项目?
### 1. 重度自建代理用户
如果你已经厌倦了"一个工具只解决一个问题"的碎片化现状,想要一个统一的、可维护的代理基础设施,这个项目就是为你准备的。
### 2. 跨境开发者 / 远程办公者
需要同时访问 GitHub、Google、OpenAI、公司内网,且对稳定性要求极高。这个项目的多出口 + 路由规则,可以让你根据服务需求自动选择最优路径。
### 3. 网络内容创作者 / 流媒体爱好者
需要解锁不同区域的流媒体库(如 Netflix 日区、美区、韩区),这个项目可以通过 WARP 或不同出口实现区域切换。
### 4. 隐私敏感用户 / 安全研究人员
需要高匿名的网络访问,REALITY Vision 的伪装能力可以满足最严苛的隐私需求。
### 5. 家庭网关 / 软路由爱好者
透明代理入站功能,配合 iptables 或 nftables,可以让你全家所有设备自动走代理,无需逐个配置。
---
## 同类项目对比
### 与 sing-box 对比
| 维度 | personal-edge-proxy | sing-box |
|------|---------------------|----------|
| 配置复杂度 | 中(YAML + .env) | 高(JSON,且字段繁多) |
| 多出站支持 | 优秀(原生多出站) | 良好(但配置繁琐) |
| REALITY 支持 | 原生支持 | 支持,但配置复杂 |
| WARP 集成 | 一键配置 | 需手动配置 WireGuard |
| 路由规则 | 简洁 YAML | 强大但学习曲线陡峭 |
| 适用人群 | 个人用户 / 小团队 | 高级用户 / 开发者 |
**结论**:sing-box 功能更强大,但配置难度呈指数级上升。personal-edge-proxy 在保留 90% 功能的同时,将配置复杂度降低了 70%。
### 与 V2Ray / Xray 原生配置对比
| 维度 | personal-edge-proxy | 原生 Xray 配置 |
|------|---------------------|---------------|
| 多协议统一管理 | 是 | 否(每个协议独立配置) |
| 路由策略 | 内置规则引擎 | 需手动编写 JSON 规则 |
| WARP 集成 | 一键配置 | 手动配置 WireGuard + 路由 |
| 维护成本 | 低(单一配置文件) | 高(多个配置文件) |
**结论**:如果你只用 Xray 的 VMess 协议,原生配置够用。但一旦涉及 Hysteria2、WARP、REALITY 等多协议组合,原生配置的维护成本会迅速失控。
### 与 Clash / Mihomo 对比
| 维度 | personal-edge-proxy | Clash / Mihomo |
|------|---------------------|----------------|
| 协议支持 | Xray + Hysteria2 + REALITY + WARP | 支持多种,但 REALITY 支持较弱 |
| 路由规则 | 基于 YAML,支持 geoip/domain/process | 基于 Rule Provider,功能类似 |
| 入站类型 | 支持透明代理 | 支持 TUN,但配置复杂 |
| 部署方式 | 适合服务器端 | 更适合客户端 |
**结论**:Clash 是优秀的客户端工具,但 personal-edge-proxy 是**服务器端**方案。两者定位不同,但如果你需要服务器端多协议聚合,personal-edge-proxy 更合适。
---
## 潜在不足与改进空间
任何工具都有短板,这个项目也不例外:
1. **文档以英文为主**:对于中文用户,上手需要一定的英文阅读能力
2. **依赖 Docker Compose**:虽然支持手动安装,但 Docker 方式最省心,对不熟悉 Docker 的用户有门槛
3. **没有图形界面**:所有配置都是文件编辑,对命令行不熟悉的用户不友好
4. **WARP 的稳定性**:WARP 是免费服务,偶尔会出现连接不稳定,需要依赖项目内的自动重连机制
但这些不足并不影响它的核心价值——**作为一个工程化的代理配置模板,它已经做到了同类中的极致**。
---
## 总结:值得一试的代理基础设施
如果你是一个对网络有追求的自建代理用户,**personal-edge-proxy** 值得你花一个小时来部署和体验。它带来的不仅是"多协议支持",更是一种**将代理配置从脚本提升到工程**的思维方式。
在这个项目里,你会看到:
- 如何用统一的配置管理异构协议
- 如何用路由规则替代混乱的 if-else
- 如何用 Docker 封装复杂的依赖关系
- 如何让代理系统具备可扩展性
这些思想,比单纯的多协议支持更有价值。
项目链接:[https://github.com/yding-git/personal-edge-proxy](https://github.com/yding-git/personal-edge-proxy)
---
*本文为技术评测,基于项目 README 及源代码分析,实际效果请以你的部署环境为准。*