中文文档 | English
基于 Docker 和 x-ui-yg 管理面板,一键在 Ubuntu 上部署 VLESS + Reality 自建代理服务器。
为什么选择 Reality? Reality 协议通过模拟对可信站点(如 www.yahoo.com)的真实 TLS 1.3 握手,使代理流量与正常 HTTPS 流量无异,大幅降低端口被封的风险。
本项目仅供个人学习、研究及访问技术资源(技术文档、开源仓库、学术论文等)使用。互联网是获取全球先进知识的窗口,善加利用,学习先进技术,提升自我。
- 仅限在自己的服务器和设备上使用
- 必须遵守所在国家和地区的法律法规
- 不得用于任何违法活动、商业转售或向第三方提供代理服务
- 因不当使用造成的任何后果由使用者自行承担,作者不负任何责任
- 一台境外 VPS(AWS、DigitalOcean、Vultr 等),系统为 Ubuntu 22 / 24 / 26
- root 或 sudo 权限
- 在云服务商控制台的安全组 / 防火墙中开放端口:
- 24680(代理)——必须开放,VPN 客户端建立连接用
- 13579(Web 管理面板)——可选,需要图形化管理(改配置、看流量)时才开
AWS 海外区域提供 12 个月的 t2/t3.micro 免费套餐,个人使用完全够用。
新购服务器 / 更换 IP 后,先测再部署。完整流程:测 IP → 部署 → 导入链接 → 端到端验证。
为什么要先测:代理速度取决于两段链路——①本机 → VPS ②VPS → 目标网站。后者在海外机房通常很好(直连 GitHub),而前者因 VPS 出口 IP 不同差异巨大:同一台机器换个 IP,延迟和丢包可能天差地别(实测案例:同一新加坡机房某 IP 中位延迟 399ms、20% 丢包重传,网页根本打不开)。拿到新服务器先测一下,是坏 IP 就趁早换。
# 测单个 IP(默认代理端口 24680)
./vps-ip-test.sh 1.2.3.4
# 多个候选 IP 一次对比,自动评分排名
./vps-ip-test.sh 1.2.3.4 5.6.7.8 9.10.11.12关键指标:
- 中位延迟:<120ms 优秀(直连水平)、120–250ms 一般、>250ms 路由绕路
- 重传嫌疑:发生 SYN 丢包重传的握手占比,越高浏览越卡
- 综合评分:越低越好,超过 800 分基本不可用
可调环境变量:PORT(默认 24680)、ROUNDS(测试次数,默认 30)、TRACEROUTE=1(附加路由追踪)。
IP 合格后再登录服务器,一条命令完成部署(详见服务端一键部署):
curl -fsSL https://raw.githubusercontent.com/ryanlxb/v2ray-server/main/server_init.sh \
-o /tmp/server_init.sh && sudo bash /tmp/server_init.sh安装完毕后,屏幕上会打印 VPN 导入链接(vless://...)和完整配置 JSON——立即复制保存,粘贴导入到你的 VPN 客户端软件(V2rayU / v2rayN / v2rayNG 等,见客户端配置),就可以开始使用了。
E2E=1 ./vps-ip-test.sh 1.2.3.4客户端配置好后,加 E2E=1 再跑一次,会经本地代理实测访问 GitHub 的真实耗时,作为最终验收。
SSH 登录服务器后执行:
curl -fsSL https://raw.githubusercontent.com/ryanlxb/v2ray-server/main/server_init.sh \
-o /tmp/server_init.sh && sudo bash /tmp/server_init.sh脚本将自动完成以下步骤:
- 检查 Ubuntu 版本(22–26)
- 安装必要依赖(curl、jq、socat 等)
- 从 GitHub Releases 下载并安装 x-ui-yg(含 xray-core)
- 设置面板端口为 13579,注册 systemd 服务并开机自启
- 生成 Reality 密钥对(私钥、公钥、Short ID)和 UUID
- 通过 x-ui API 预置一个 VLESS + Reality 入站,监听端口 24680
- 开放 UFW 端口 13579 和 24680(如果 ufw 已启用)
- 打印 导入 URL 和完整客户端配置 JSON,可直接复制使用
脚本执行完成后,访问 Web 管理面板:
http://YOUR_SERVER_IP:13579
默认账号密码:admin / admin ← 首次登录后请立即修改!
自启动保障: x-ui-yg 安装时自动注册 systemd service,systemctl enable x-ui 已配置,服务器重启后无需任何手动操作,服务自动恢复。
脚本执行结束时会打印一个完整的出站配置 JSON 块,将其替换到客户端 config.json 的 outbounds[0](即第一个出站条目)即可。如果是全新的 config.json,直接放入 "outbounds": [ <粘贴在这里> ]。
| 平台 | 客户端 | 支持 Reality |
|---|---|---|
| Linux | Xray-core | 是 |
| macOS | V2rayU | 是 |
| Windows | v2rayN | 是 |
| Android | v2rayNG | 是 |
| iOS | FoXray(App Store,需境外 Apple ID) | 是 |
# 1. 下载 Xray-core
wget https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip
unzip Xray-linux-64.zip
# 2. 将 server_init.sh 打印的客户端配置粘贴到 config.json
# 3. 启动
./xray -c config.json
# 4. 测试(默认 HTTP 代理端口 1087)
curl https://www.google.com -x 127.0.0.1:1087以 V2rayU 为例:
- 在服务器执行
server_init.sh,复制末尾打印的配置 JSON - V2rayU → 偏好设置 → 导入配置,粘贴 JSON
- 或直接替换
config.json后重启
使用 v2rayN,操作与 macOS 相同:导入服务器输出的配置 JSON。
使用 v2rayNG,通过二维码或手动填写 JSON 导入配置。
FoXray(App Store),需境外 Apple ID 下载。从服务器输出中复制 VLESS+Reality 链接导入。
PAC(代理自动配置)可让特定域名走代理,其余流量直连。
在 V2rayU → 偏好设置 → PAC 中添加规则:
||example.com # example.com 全域名走代理
||sub.example.com # 仅指定子域名走代理
保存后重启 V2ray 生效。推荐 PAC 列表:
- 默认 GFW 列表:
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt - 备用列表:
https://raw.githubusercontent.com/Loukky/gfwlist-by-loukky/master/gfwlist.txt
使用 Reality 后被直接封端口的情况很少见。若真的发生:
- 在 x-ui Web UI 中更换 Reality 配置的
serverName,换一个全球可信的 TLS 1.3 域名 - 重新生成 Reality 密钥对和 Short ID
- 极端情况下,可使用 Tailscale 等内网穿透工具绕过封锁
若遇到连接问题,可尝试修改客户端配置中的 fingerprint 字段(可选值:chrome、firefox、safari、ios、android、edge、360、qq、random)。
V2rayU 中:偏好设置 → Fingerprint
本项目基于以下开源作者的工作构建:
| 项目 | 作者 | 说明 |
|---|---|---|
| x-ui-yg | @yonggekkk | 支持 Reality 的 Xray 管理面板 |
| Xray-core | @XTLS | 支持 VLESS + Reality 的核心代理引擎 |
| v2fly/v2ray-core | @v2fly | V2Ray 原始核心 |
| gfwlist | @gfwlist | 社区维护的 GFW 域名列表 |