3x-ui 面板部署 VLESS + REALITY 节点完整教程

3x-ui 部署 VLESS REALITY 节点教程封面

这篇教程记录一次从零开始部署 VLESS + REALITY 节点的完整流程,面板使用开源项目 MHSanaei/3x-ui。它本质上是一个管理 Xray-core 的 Web 面板,适合把复杂的入站、客户端、流量限制和订阅配置都集中到网页里维护。

先说明边界:本文面向个人加密通信、跨区域网络访问测试和服务端配置学习。部署前请确认自己所在地区的法律法规、云服务器服务条款以及实际使用场景,别把它用在不合规的事情上。

一、准备工作

建议准备一台干净的 VPS,系统优先选 Debian 12 或 Ubuntu 22.04/24.04,CentOS、Rocky、AlmaLinux 也能跑。服务器需要有公网 IPv4,最好是 root 权限。REALITY 节点本身不强制需要域名和证书,但面板如果要公开访问,建议用域名加 HTTPS 或直接限制为本地访问。

部署前先确认三件事:

  • 端口:节点端口可以用 443,也可以用 8443、2053 之类的自定义端口。如果服务器已经有 Nginx、Caddy 或宝塔站点占用 443,就不要硬抢 443。
  • 防火墙:云厂商安全组和系统防火墙都要放行 SSH 端口、节点端口,以及你决定公开的面板端口。
  • 时间同步:服务器时间偏差太大会造成 TLS/REALITY 握手异常,先打开 NTP。
apt update
apt install curl ca-certificates socat -y
timedatectl set-ntp true
timedatectl status

如果使用 Ubuntu 的 UFW,可以按下面的思路放行端口。这里的 32451 只是示例面板端口,实际以安装后显示的端口为准。

ufw allow 22/tcp
ufw allow 443/tcp
ufw allow 32451/tcp
ufw enable
ufw status

如果你打算只通过 SSH 隧道访问面板,就不要公开面板端口,只放行 SSH 和节点端口即可。

二、安装 3x-ui 面板

3x-ui 官方推荐的一键安装命令如下。当前官方仓库已经进入 3.x 分支,安装脚本会自动拉取最新 Release,并创建 x-ui 管理命令。

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
3x-ui 安装命令和随机面板信息示意图
安装完成后会生成随机用户名、密码、面板端口和 WebBasePath。示意图里的账号信息不要照抄,实际以你的服务器输出为准。

安装脚本现在会尽量随机化面板入口,通常会输出类似下面几项:

  • Username:面板用户名。
  • Password:面板密码。
  • Port:面板监听端口。
  • WebBasePath:面板访问路径。
  • Access URL:完整访问地址。

这些信息一定要保存。装完以后可以用下面几个命令确认状态:

x-ui status
x-ui settings
systemctl status x-ui --no-pager

常用管理命令也很简单:

x-ui
x-ui restart
x-ui restart-xray
x-ui log
x-ui update

三、先把面板安全做好

节点能不能跑通是一回事,面板安全是另一回事。面板暴露在公网时,建议至少完成下面几项:

  • 不要使用默认或短密码,用户名和密码都换成长随机字符串。
  • 保留随机 WebBasePath,不要改成 /admin/xui 这种容易猜的路径。
  • 面板端口不要和节点端口混用。
  • 有域名时给面板配置 HTTPS;没有域名时可以只监听 127.0.0.1,通过 SSH 隧道访问。
  • 打开面板的双因素认证、登录限制或 Fail2Ban 相关功能。
3x-ui Panel Settings 页面官方截图
3x-ui 的 Panel Settings 页面。这里可以调整面板认证、路径、端口、证书和其他安全项。

如果不想公开面板,可以让面板只监听本机,然后在本地电脑开 SSH 隧道:

ssh -L 2222:127.0.0.1:32451 root@你的服务器IP

浏览器访问 http://127.0.0.1:2222/你的WebBasePath 即可进入面板。这种方式麻烦一点,但面板不直接暴露在公网,安全性会好很多。

四、新增 VLESS + REALITY 入站

登录面板后进入 Inbounds,点击 Add Inbound。3x-ui 的核心逻辑是:先创建一个入站,再给这个入站添加一个或多个客户端。

3x-ui Inbounds 页面官方截图
3x-ui 官方 Inbounds 页面截图,新增入口在 Add Inbound。
3x-ui Add Inbound 弹窗官方截图
3x-ui 官方 Add Inbound 弹窗。协议选 VLESS 后,把 Security 切换到 Reality。

入站建议按下面的方式填写:

项目 推荐值 说明
Remark reality-vless-443 只是备注,方便自己识别。
Protocol vless 协议选择 VLESS。
Listen IP 留空或 0.0.0.0 留空通常表示监听所有网卡。
Port 443 或自定义端口 确认没有被其他服务占用,并在防火墙放行。
Transmission TCP (RAW) REALITY 常见组合就是 TCP + VLESS。
Security Reality 不是 TLS,也不是 None。
Dest www.microsoft.com:443 伪装目标,要是一个真实可访问的 HTTPS 站点。
Server Names / SNI www.microsoft.com 要和 Dest 的域名匹配。
Fingerprint chrome 客户端也要保持一致。
Short ID 随机十六进制字符串 例如 0123456789abcdef,客户端要填写同一个。
SpiderX / 一般默认即可。
VLESS REALITY 入站参数示意图
REALITY 入站关键字段示意:Dest、SNI、Public Key、Short ID 是最容易填错的地方。

REALITY 的密钥有一对:Private Key 放服务器端,Public Key 给客户端使用。3x-ui 面板里通常有生成按钮,直接生成即可。不要把私钥发给别人,也不要把私钥填进客户端。

Dest 和 SNI 的选择要保守。它们不是让你套 CDN,而是给 REALITY 握手使用的真实 HTTPS 目标。建议选一个稳定、能从服务器正常访问的站点,例如 www.microsoft.com:443www.apple.com:443 这类。选好以后,Dest 写域名加端口,Server Names 写域名本身。

如果节点端口使用 443,先确认服务器上没有其他服务占用:

ss -tulpn | grep ':443'

如果看到 Nginx、Caddy、宝塔网站正在监听 443,就换一个节点端口,例如 8443 或 2053,然后在客户端链接里也使用对应端口。

五、添加客户端

入站创建好以后,在这个入站下面添加客户端。客户端可以理解为“一个可用账号”,每个客户端都有独立 UUID、流量限制、到期时间和备注。

3x-ui Add Client 弹窗官方截图
3x-ui 官方 Add Client 弹窗。Email 是备注,ID 是客户端 UUID。

客户端建议这样填:

  • Email:填一个方便识别的名字,例如 macbookiphonehome-pc
  • ID:点击生成 UUID,不要手写。
  • Flow:如果面板提供这个选项,选择 xtls-rprx-vision
  • Total Flow:不限制就填 0
  • Duration:不限制就留空,需要临时账号再设置到期时间。

保存后回到 Inbounds 列表,展开入站,点击二维码或分享按钮,面板会生成客户端链接。

六、客户端怎么填

以 v2rayN、Nekoray、Shadowrocket、Stash 这类客户端为例,字段本质上都一样:

客户端字段 填写内容
地址 / Address 你的服务器公网 IP 或域名
端口 / Port 入站端口,例如 443
用户 ID / UUID 客户端 ID
传输协议 / Network tcp
安全 / Security reality
Flow xtls-rprx-vision
Public Key 面板生成的公钥,不是私钥
Short ID 入站里填写的 Short ID
SNI / Server Name 入站里的 Server Names,例如 www.microsoft.com
Fingerprint chrome
SpiderX /

分享链接大致长这样,实际使用时把大写占位符替换成自己的真实值:

vless://UUID@SERVER_IP:443?type=tcp&security=reality&pbk=PUBLIC_KEY&fp=chrome&sni=www.microsoft.com&sid=0123456789abcdef&spx=%2F&flow=xtls-rprx-vision#3x-ui-reality

如果客户端支持直接导入 3x-ui 的二维码或分享链接,优先用导入,少手填字段就少出错。

七、测试是否跑通

测试时不要只看客户端显示“已连接”,还要看面板有没有流量变化。建议按顺序检查:

  1. 客户端导入链接后连接节点。
  2. 打开一个网页或测速地址,产生实际流量。
  3. 回到 3x-ui 的 Inbounds 页面,看入站和客户端流量是否增长。
  4. 如果没流量,查看 Xray 日志和系统端口监听。
x-ui log
x-ui restart-xray
ss -tulpn | grep ':443'

云服务器还要确认安全组。很多时候系统里端口已经监听了,但云厂商安全组没放行,外部依然连不上。

八、常见问题排查

现象 优先检查
客户端超时 节点端口是否监听、防火墙和云安全组是否放行、服务器 IP 是否写错。
一连接就断 Public Key、Short ID、SNI、Fingerprint 是否和面板一致。
面板能开,节点不通 面板端口和节点端口是两回事,检查 Inbound 的端口。
443 端口启动失败 Nginx、Caddy、宝塔站点可能已经占用 443,换端口或调整反代。
手机能用,电脑不能用 客户端版本是否支持 REALITY 和 Vision,配置是否完整导入。
突然全部失效 服务器时间、Xray 日志、证书/密钥字段、服务商防火墙策略。

九、备份和升级

3x-ui 默认数据库目录是 /etc/x-ui,核心数据库通常是 x-ui.db。升级前建议先备份:

cp /etc/x-ui/x-ui.db /root/x-ui.db.$(date +%F).bak
x-ui update
x-ui restart

如果你在面板里维护了很多客户端,最好定期从面板导出数据库,或者把 /etc/x-ui/x-ui.db 纳入自己的服务器备份。更新 3x-ui 和 Xray-core 前,也建议先保留一份数据库和当前配置。

十、最后给一套推荐配置

如果只是个人使用,我会按下面这套来配:

  • 面板使用随机端口、随机 WebBasePath、强密码,最好只通过 SSH 隧道访问。
  • 节点协议用 VLESS,传输用 TCP RAW,安全层用 REALITY
  • 客户端 Flow 使用 xtls-rprx-vision
  • Dest / SNI 选择稳定的大站 HTTPS 域名,并保持服务端、客户端完全一致。
  • 每台设备单独一个客户端 UUID,方便限速、限流和排查。
  • 每次大改前备份 /etc/x-ui/x-ui.db

到这里,一个完整的 3x-ui + VLESS + REALITY 节点就搭好了。这个方案的难点不在安装,而在 REALITY 相关字段必须严格一致:私钥留在服务端,公钥填客户端;SNI 和 Dest 要匹配;Short ID、Fingerprint、Flow 不要漏。只要这几项不乱,后续维护基本就是在面板里增删客户端和看流量。

参考资料:3x-ui GitHub 仓库3x-ui 官方安装文档3x-ui 官方配置文档XTLS REALITY 项目说明