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:你的 UUID
  • vps_ip:VPS 公网 IP
  • YOUR_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 完整流程:

  1. VPS 准备:1 核 512MB + 美西/日本
  2. 系统初始化:apt update + ufw + 时间同步 + BBR
  3. 安装 Xray:官方一键脚本
  4. 生成密钥:xray x25519 + xray uuid + openssl rand
  5. 编辑配置:VLESS + Reality + Microsoft SNI
  6. 启动服务:systemctl enable —now xray
  7. 客户端导入:vless:// URI 或 yaml

30 分钟跑通。后续可加多用户 / 多端口 / 多协议混合。本文 2026-05-20 实测核对。