TL;DR
Debian 12 + Xray-core 1.8.16+ + VLESS+Reality + Microsoft SNI,30 分钟完整跑通。本文是 2026 年新手自建 Reality 的标准教程,包含 VPS 选购、防火墙、systemd、客户端导入与故障排查。本文 2026-05-20 实测核对。
自建是机场之外的另一条路。本文不讨论”自建 vs 机场”的选择 (有专题),只给完整的部署教程。
一、前置准备
VPS 选购建议
| 维度 | 推荐 |
|---|---|
| 配置 | 1 核 512MB 起 (够用) / 2 核 2GB (高带宽) |
| 系统 | Debian 12 (本文教程) |
| 地区 | 美西 (CN2 GIA) / 日本 (低延迟) / 新加坡 |
| 带宽 | 1 Gbps 共享 (够用) / 不限流量 |
| 月费 | ¥30-50 入门 / ¥80-150 高带宽 |
| 服务商 | Vultr / DigitalOcean / BandwagonHost / RackNerd |
域名 (可选)
Reality 不需要域名。但建议买一个 ¥30/年的 .top/.xyz/.online 域名,后续加其他协议时方便。本教程不依赖域名。
二、SSH 登录与系统初始化
1. SSH 登录
# 用 VPS 提供商给的 IP 与密码登录
ssh root@vps_ip
# 改 root 密码
passwd
# 装基础工具
apt update && apt upgrade -y
apt install -y curl wget vim ufw sudo
2. 创建普通用户 (可选,提高安全性)
adduser myuser
usermod -aG sudo myuser
# 后续用 myuser 登录,sudo 操作
3. 时间同步
timedatectl set-ntp true
timedatectl status
# 应输出 "System clock synchronized: yes"
4. 开 BBR (TCP 拥塞控制)
echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control
# 应输出: net.ipv4.tcp_congestion_control = bbr
BBR 在中美链路下能让 Xray 吞吐提升 30-50%。必开。
三、防火墙配置
# 默认拒绝所有入站,允许所有出站
ufw default deny incoming
ufw default allow outgoing
# 允许 SSH (你的 SSH 端口,默认 22)
ufw allow 22/tcp
# 允许 Xray (Reality 走 443)
ufw allow 443/tcp
# 启用防火墙 (会断开当前 SSH 然后允许重新连)
ufw enable
# 检查状态
ufw status verbose
注意:如果 SSH 端口被改过 (如 2222),allow 那个端口,不要 22。
四、安装 Xray-core
用官方一键脚本 (维护得很好):
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root
# 验证安装
xray version
# 输出: Xray 1.8.16 (或更新)
# 验证 systemd 服务
systemctl status xray
# 默认应是 active (inactive 直到配置完启动)
文件位置:
- 二进制:
/usr/local/bin/xray - 配置:
/usr/local/etc/xray/config.json - systemd:
/etc/systemd/system/xray.service - 日志:
journalctl -u xray
五、生成 Reality 密钥与 UUID
# 1. 生成 X25519 密钥对
xray x25519
# 输出:
# Private key: yBP...your_private_key
# Public key: jH3...your_public_key
# 2. 生成 UUID
xray uuid
# 输出: 00000000-0000-0000-0000-000000000000
# 3. 生成 shortId (任意偶数长度的 16 进制字符串,< 16 字符)
openssl rand -hex 8
# 输出: 0123456789abcdef
把三个值记下来:
- PrivateKey:
yBP... - PublicKey:
jH3... - UUID:
00000000-... - ShortId:
0123456789abcdef
六、编辑 Xray 配置
nano /usr/local/etc/xray/config.json
粘贴以下内容 (替换 UUID / privateKey / shortIds):
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "REPLACE-WITH-YOUR-UUID",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:443",
"xver": 0,
"serverNames": [
"www.microsoft.com",
"microsoft.com"
],
"privateKey": "REPLACE-WITH-YOUR-PRIVATE-KEY",
"shortIds": [
"",
"REPLACE-WITH-YOUR-SHORTID"
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "block"
}
]
}
}
保存退出 (Ctrl+O / Ctrl+X)。
七、启动 Xray 服务
# 启动并设置开机自启
systemctl enable --now xray
# 检查状态
systemctl status xray
# 应是 active (running)
# 查看启动日志
journalctl -u xray -n 50
# 应看到 "started xxx" 没有 error
如果有 error:
- 配置 JSON 语法错误:用
jq . /usr/local/etc/xray/config.json验证 - 端口冲突:
ss -tlnp | grep 443看 443 是否被其他服务占用 - 密钥格式错:重新
xray x25519生成
八、客户端配置
客户端 (Karing / Hiddify Next / Mihomo / sing-box)
VLESS+Reality 节点 URI 格式:
vless://UUID@vps_ip:443?type=tcp&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR_PUBLIC_KEY&sid=YOUR_SHORTID&flow=xtls-rprx-vision#我的节点
替换:
UUID:你的 UUIDvps_ip:VPS 公网 IPYOUR_PUBLIC_KEY:刚才生成的 Public key (不是 Private!)YOUR_SHORTID:刚才生成的 shortId (或空字符串)
把这个 URI 复制到客户端 → 添加节点 → 粘贴。
客户端 yaml (Mihomo / Clash Verge Rev 等)
proxies:
- name: "我的 Reality 节点"
type: vless
server: vps_ip
port: 443
uuid: REPLACE-WITH-YOUR-UUID
network: tcp
tls: true
flow: xtls-rprx-vision
servername: www.microsoft.com
reality-opts:
public-key: REPLACE-WITH-YOUR-PUBLIC-KEY
short-id: REPLACE-WITH-YOUR-SHORTID
client-fingerprint: chrome
九、测试连接
客户端开启节点后:
1. 测连通性:浏览器访问 ipleak.net,IP 应显示 VPS 出口 IP
2. 测速度:fast.com (Netflix) 或 speedtest.net
3. 测 DNS:dnsleaktest.com,确认 DNS 不漏
如果连不上:
- 服务端 ufw 是否开了 443:
ufw status - 服务端 Xray 是否在跑:
systemctl status xray - 客户端 UUID / PublicKey / ShortId 是否完全一致
- 客户端 SNI 是否填 www.microsoft.com
十、加多用户 / 多端口
多用户
编辑 config.json 的 inbounds.settings.clients:
"clients": [
{"id": "uuid-1", "flow": "xtls-rprx-vision"},
{"id": "uuid-2", "flow": "xtls-rprx-vision"},
{"id": "uuid-3", "flow": "xtls-rprx-vision"}
]
重启 Xray:systemctl restart xray。每个用户用自己的 UUID 在客户端导入。
多端口 (抗封)
把 port 改为字符串多端口:
"port": "443,8443,9443"
UFW 也要开:ufw allow 8443/tcp && ufw allow 9443/tcp。客户端可以同时配多个端口节点做 url-test。
十一、流量监控 (可选)
简单方式:用 vnstat:
apt install -y vnstat
systemctl enable --now vnstat
# 看月度流量
vnstat -m
进阶:用 3X-UI 之类的 Web 面板,提供完整的多用户管理 + 流量统计 + UI 配置。
十二、常见故障排查
故障 1: 客户端连接失败
- 检查 UFW:
ufw status应有443/tcp ALLOW - 检查 Xray:
systemctl status xray应 active - 检查 SNI 站点:
curl -v https://www.microsoft.com -o /dev/null应通 - 客户端 PublicKey / ShortId 与服务端是否一致
故障 2: 偶发 handshake timeout
参考冲浪笔记 Xray handshake timeout 修复专题。
故障 3: 跑一会就慢
- 流量耗尽:看 VPS 服务商面板的本月流量
- BBR 没开:
sysctl net.ipv4.tcp_congestion_control应是 bbr - VPS 服务商限速:换更好的服务商
自建 vs 机场的实际选择
自建优势:独享带宽 + 完全控制 + 单价低。 自建劣势:被封需自己换 IP + 维护成本 + 单点故障。
如果你不想 24/7 维护,机场仍是低维护选择。冲浪笔记长期跟踪的兼容 Clash / Singbox / V2Ray 的订阅在节点池中以 Reality / AnyTLS / Hysteria 为主,5 端同步配置,适合自建作为备份的场景 (机场为主 + 自建为备)。
总结
Debian 12 + Xray + Reality 完整流程:
- VPS 准备:1 核 512MB + 美西/日本
- 系统初始化:apt update + ufw + 时间同步 + BBR
- 安装 Xray:官方一键脚本
- 生成密钥:xray x25519 + xray uuid + openssl rand
- 编辑配置:VLESS + Reality + Microsoft SNI
- 启动服务:systemctl enable —now xray
- 客户端导入:vless:// URI 或 yaml
30 分钟跑通。后续可加多用户 / 多端口 / 多协议混合。本文 2026-05-20 实测核对。