前言

3x-ui 是一个基于 Xray 的开源管理面板,适合在 VPS 上快速搭建并管理入站规则。它是 X-UI 的增强分支,强调更高的稳定性与更广的协议支持。本文给出一套最小可用的安装与配置流程,并以 VLESS + Reality 为例,演示如何搭建一个抗检测能力强的代理节点。

Note

本文统一以 3x-ui v2.9.4 为准,后文的命令、菜单编号与字段均基于该版本。官方最新版已进入 v3.x(前端重写、部分字段变动),但本文不涉及——个人自用 v2.9.4 已足够,界面与教程也更稳定。版本说明见 v2.9.4 Release

Important

官方提示:仅供个人学习与自用,不建议用于生产环境,禁止用于任何非法用途。


一、准备工作

安装脚本会在安装过程中自动申请域名证书,因此域名解析80 端口必须在运行脚本前就绪,否则中途会失败。开始前先准备:

  • 一台 VPS(推荐 Debian 12 或 Ubuntu 22.04 及以上),具备 root 权限
  • 一个已解析到 VPS 的域名:安装时用它申请面板 HTTPS 证书(例如 xui.example.com);需提前在 DNS 添加 A 记录,指向 VPS 公网 IP
Note

注意区分两类「域名」:上面这个是面板自己的域名;而 VLESS+Reality 节点握手伪装用的是目标域名,不需要你拥有(见 4.2),两者互不相干。

1.1 需要开放的端口

端口用途何时放行
80/tcp申请 / 续期域名证书运行安装脚本前——脚本用它做 Let’s Encrypt 验证;之后续期也靠它,需长期保持
面板端口登录 3x-ui 面板安装后;端口在安装时随机或自定义生成
入站端口Reality 节点连接创建入站后,推荐使用 443/tcp;若 443 已被占用,再改用其他高位端口

1.2 放行方法

① 安装前——放行 80。 此时面板还没装,用云服务商安全组加系统防火墙放行;若用 ufw

1
sudo ufw allow 80/tcp

② 安装后——放行面板端口与入站端口。 装完后用 3x-ui 自带的防火墙管理更省事:运行 x-ui → 选择 「防火墙管理(Firewall Management)」(v2.9.4 中通常是 21),多个端口用英文逗号分隔,例如 面板端口,入站端口。也可继续用 ufw

1
2
3
sudo ufw allow <面板端口>/tcp
sudo ufw allow <入站端口>/tcp
sudo ufw reload
Warning

最容易踩的坑:3x-ui 创建入站后,对应端口在系统层面默认仍是关闭的。「面板能打开、节点却连不通」几乎都是入站端口没放行——创建 Reality 入站后,记得回到这里放行它。

Note

使用云服务商安全组(AWS、GCP、Vultr 等)时,以上端口需在系统防火墙与安全组中同时放行,少一处都连不通。


二、安装(官方脚本一条龙)

MHSanaei
MHSanaei/3x-ui

Xray panel supporting multi-protocol multi-user expire day & traffic & IP limit (Vmess, Vless, Trojan, ShadowSocks, Wireguard, Hysteria, Tunnel, Mixed, HTTP, Tun)

38.7k7.3kTypeScriptGPL-3.0

确认上一节的域名解析与 80 端口已就绪后,使用官方安装脚本,并在命令末尾指定版本号(建议先查看脚本内容再运行)。该脚本需以 root 身份运行

1
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v2.9.4
Tip

若你是 sudo 用户(AWS、GCP、Lightsail 等默认登录用户如 adminubuntu 都是),请先执行 sudo -i 切到 root,再运行上面的命令。不要直接用 sudo bash <(curl ...)——进程替换 <(...) 创建的文件描述符会被 sudo 关闭,导致 bash: /dev/fd/63: No such file or directory。或者先把脚本下载成文件,再 sudo bash install.sh v2.9.4 运行(也方便先 cat 审阅)。

Warning

如果不在命令末尾写版本号,官方脚本会直接安装 GitHub 当前 latest 版本。本文为了稳定复现,建议固定安装 v2.9.4

脚本以交互方式一步到位,依次完成数据库、端口、账号与 SSL 证书的配置——用户名、密码、访问路径(webBasePath)均随机生成,几乎无需人工干预。

① 选择数据库

1
2
3
1) SQLite     (default — recommended for < 500 clients)
2) PostgreSQL (recommended for high client counts / many nodes)
Choose [1]:

个人自用直接选 1(SQLite),数据库文件位于 /etc/x-ui/x-ui.db

② 自定义面板端口

1
Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]

y 可指定固定高位端口;直接回车则随机分配。随后脚本自动生成用户名、密码与随机访问路径。

③ SSL 证书设置

证书直接在安装阶段申请并写入面板,无需事后手动操作:

1
2
3
4
5
1. Let's Encrypt for Domain (90-day validity, auto-renews)
2. Let's Encrypt for IP Address (6-day validity, auto-renews)
3. Custom SSL Certificate (Path to existing files)
4. Skip SSL
Choose an option (default 2 for IP):

默认是 2(IP 证书),用域名证书必须手动输入 1,随后:

  • 输入你的域名(需已解析到本机);
  • 验证端口直接回车用 80
  • 脚本自动安装 acme.sh 并签发证书;
  • 遇到 Would you like to modify --reloadcmd?n(用默认,续期后自动重启面板加载新证书);
  • 遇到 Would you like to set this certificate for the panel?y,脚本自动把证书路径写入面板。

完成后打印最终凭据,Access URL 已是 https://

1
2
3
4
5
6
Username:    <随机生成>
Password:    <随机生成>
Port:        <面板端口>
WebBasePath: <随机路径>
Database:    SQLite (/etc/x-ui/x-ui.db)
Access URL:  https://<你的域名>:<面板端口>/<webBasePath>

请立即记录这些凭据,尤其是密码——密码经加密存储,安装后 x-ui settings 也查不到明文,忘记只能重置(见第三节)。

Note

安装中可能出现两条无害报错,可忽略:

  • Failed to restart x-ui.service: Unit x-ui.service not found / rc-service: command not found——签发证书时面板服务尚未创建,续期时即正常;
  • flag provided but not defined: -getApiToken——最新 install.sh 调用了 v2.9.4 尚未提供的参数,仅使 API Token 显示为空,不影响使用。

更完整的说明可参考项目 Wiki:https://github.com/MHSanaei/3x-ui/wiki


三、首次登录与基础安全

安装时若选了域名 SSL,证书已配好,直接用打印出的 HTTPS 地址访问即可(结尾随机路径不可省略):

1
https://<你的域名>:<面板端口>/<webBasePath>/
Tip

x-ui settings 可查看 Access URL、端口、访问路径与用户名,但不显示密码明文(密码为加密存储)。忘记密码只能重置:运行 x-ui 进入菜单 → 选择 「Reset Username & Password」,按提示设置新账号密码,重置后面板会自动重启生效。

凭据虽已随机化,登录后仍建议:

  1. 面板设置 → 按需修改管理员用户名与密码;
  2. 视情况调整面板端口与访问路径(Sub Path),改动后记得同步防火墙 / 安全组;
  3. 开启面板自带的登录失败限制 / Fail2ban(如有)。

3.1 关于证书

先分清两件事:

  • VLESS + Reality 节点不需要你自己的证书。Reality 借用目标网站的 TLS 握手特征,客户端用的是 Reality 公钥、Short ID、SNI 等参数,与你 VPS 上的证书无关。
  • 面板建议启用 HTTPS 证书,用来保护登录面板时的账号、密码与操作请求,与 Reality 节点是两码事。

按第二节的流程,安装时选了「Let’s Encrypt for Domain」的话,证书已自动签发并写入面板,路径如下,可直接用 https:// 访问:

1
2
/root/cert/<你的域名>/fullchain.pem
/root/cert/<你的域名>/privkey.pem
Tip

域名证书有效期约 90 天,由 acme.sh 自动续期;续期同样走 80 端口,务必保持 80/tcp 长期放行。安装阶段那条 x-ui.service not found 的 reload 报错可忽略——续期时服务已存在,会正常重启面板加载新证书。

安装时若选了「Skip SSL」想后补:运行 x-ui → 选择 「SSL 证书管理(SSL Certificate Management)」(通常为 18)申请域名证书,再用菜单里的 「Set Cert paths for the panel」 自动把证书配到面板。

若暂时不配证书,至少做到:

  • 保留随机 webBasePath,不要改成 //admin 这类常见路径;
  • 使用强密码,开启面板的失败登录限制 / Fail2ban(如有);
  • 面板端口不要和节点端口混用;
  • 更稳妥的做法是只允许固定 IP 访问面板端口,或通过 SSH 隧道访问。
Tip

面板端口或路径改动后,别忘了同步更新防火墙与安全组规则。


四、VLESS + Reality 节点搭建

4.1 为什么选择 VLESS + Reality

Reality 是 Xray 独有的传输层安全方案,核心思路是借用真实网站的 TLS 握手——连接看上去与访问合法网站无异,无需自己申请证书,也没有自签证书的特征。配合 VLESS 协议,是目前抗检测能力较强的方案之一。

优点:

  • 无需域名,无需申请 SSL 证书
  • 流量特征极难被识别(TLS 指纹与目标网站一致)
  • 配置相对简单

适合场景: 个人自用,对抗 DPI 深度包检测。


4.2 选择目标伪装域名(SNI)

Reality 需要指定一个目标域名(dest / SNI),Xray 会向该域名发起真实的 TLS 握手以获取合法证书指纹。在 v2.9.4 中,面板默认填入 microsoft.com:443(SNI 为 microsoft.com, www.microsoft.com),可直接用于初步测试连通性。

目标域名的最低标准

  • 国外、未被 GFW 封锁的域名;
  • 支持 TLS 1.3 与 X25519
  • 支持 HTTP/2(h2)
  • 未套 CDN、访问不跳转。
Note

目标域名不需要你拥有或控制——你只是在握手阶段"借用"其 TLS 证书指纹,真实流量不会流向该网站。

Tip

默认的 microsoft.com 等大厂域名虽然能用,但使用者过多、特征明显,且对方随时可能调整配置。更稳妥的做法是扫描自己 VPS 同机房 IP 段内的冷门域名作为目标——具体方法见站内文:Reality 如何正确「偷」域名:RealiTLScanner 扫描 + RealityChecker 检测


4.3 在面板中创建入站

进入面板 → 入站列表添加入站,按以下参数填写:

基本信息

字段填写内容
启用开启
备注任意(如 vless-reality
协议vless
监听留空(监听所有)
端口推荐 443
总流量0 表示不限制
流量重置从不
到期时间留空表示不过期
Tip

创建后请记下面板分配 / 你填写的端口,回到第一节「1.2 放行方法」放行它,否则无法连接。

Note

Reality 入站优先推荐 443,外观更接近普通 HTTPS 访问。若服务器上已有 Nginx、Caddy、Apache 或其他服务占用 443,再选择一个高位端口,并确保系统防火墙与云安全组都已放行。

客户端(Client)

展开 客户端 区域,保持 decryption = noneencryption = noneAuthentication 保持默认或点击 Get New keys 生成客户端认证信息;如果当前版本显示 Flow 字段,将其设为 xtls-rprx-vision

传输(Transport)

字段填写内容
传输TCP (RAW)
Proxy Protocol关闭
HTTP 伪装关闭
Sockopt关闭;确有路由 / 出站绑定需求时再单独配置
TCP Masks默认即可
External Proxy关闭;只有需要外置前置代理时才开启

安全(Reality)

字段填写内容
安全选择 Reality
Show关闭
Xver0
uTLSchrome
Target<你的目标域名>:443,如截图中的 www.tesla.com:443 只是示例
SNI<你的目标域名>,不带端口,需与 Target 的域名部分一致
Reality 密钥若面板显示 Public Key / Private Key,使用对应生成按钮;私钥留服务端,导出链接使用公钥 pbk
Short ID自动生成即可
mldsa65 Seed留空;不需要后量子签名时不要点 Get New Seed
mldsa65 Verify留空;只有启用 mldsa65 Seed 后才需要配套填写

Sniffing

字段填写内容
开启开启
HTTP / TLS / QUIC / FAKEDNS全部勾选
Metadata Only关闭
Route Only关闭
IPs Excluded保持默认 IP/CIDR/geoip:*/ext:*
Domains Excluded保持默认 domain:*/ext:*

完整参数示意:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
协议:      VLESS
端口:      443(推荐;若被占用再换高位端口)
客户端:    Authentication / UUID 自动生成
Flow:      xtls-rprx-vision(如果面板显示该字段)
传输:      TCP (RAW)
安全:      reality
uTLS:      chrome
Target:    <你的目标域名>:443
SNI:       <你的目标域名>
Reality密钥: Public / Private Key 自动生成(导出链接使用 pbk)
ShortId:   <自动生成>
Sniffing:  开启,勾选 HTTP / TLS / QUIC / FAKEDNS

填写完毕后点击 添加 / 保存


4.4 获取客户端配置

回到入站列表,找到刚创建的入站(标签会显示 vless tcp reality),点击该行前方的 三个点(⋮)/ 操作导出链接二维码

生成的分享链接格式类似:

1
vless://<UUID>@<服务器IP>:<端口>?encryption=none&flow=xtls-rprx-vision&security=reality&sni=<你的目标域名>&fp=chrome&pbk=<公钥>&sid=<ShortId>&type=tcp#vless-reality

将该链接导入客户端(v2rayN、v2rayNG、Shadowrocket、NekoBox 等)即可使用。

Important

链接中包含你的服务器 IP 与认证信息,请勿公开分享


4.5 客户端关键参数说明

参数说明
security=reality启用 Reality 传输层
sni伪装目标域名,与服务端 SNI 一致
fpTLS 指纹,建议设为 chromefirefox
pbk服务端公钥,客户端用于验证
sidShort ID,服务端用于识别合法客户端
flow=xtls-rprx-visionXTLS Vision 流控,提升性能与抗检测

五、备份与维护

固定使用 v2.9.4,不必为追新频繁升级。但在调整配置或迁移服务器前,务必先备份数据目录(默认位于 /etc/x-ui/,含数据库 x-ui.db 与全部设置):

1
cp -r /etc/x-ui/ /root/x-ui-backup-$(date +%Y%m%d)/
Note

v2.9.4 重做了 VLESS reverse 并移除了旧版 reverse。若你从更早版本带着 reverse 配置迁移过来,请在 Xray 配置页点击 Reset to Default,否则相关配置可能不生效。

迁移、还原等更完整的操作可参考项目 Wiki:https://github.com/MHSanaei/3x-ui/wiki


六、常见问题

节点连不上 / 面板能开但节点不通

  • 最常见原因:入站端口未放行。回到第一节用 x-ui 防火墙管理放行该端口;
  • 同步检查云服务商安全组。

无法访问面板

  • 确认地址、端口与访问路径(webBasePath)与 x-ui settings 输出一致;
  • 确认防火墙 / 安全组已放行面板端口;
  • 检查服务状态:systemctl status x-ui

修改端口或路径后访问不了

  • 同步修改防火墙与安全组规则,确保新端口已放行。

面板 HTTPS 证书申请失败

  • 确认域名已经解析到当前 VPS:dig +short <你的域名>
  • 确认 80/tcp 在系统防火墙和云安全组里都已放行;
  • 确认 80 端口没有被 Nginx、Caddy、Apache 等服务占用。

证书配置好了,但 Reality 仍然连不上

  • 面板证书只保护管理后台,不影响 Reality 入站;
  • Reality 连接失败应重点检查入站端口、防火墙、pbksidsnidest 与目标域名可用性。

节点可以连接但速度慢

  • 检查 VPS 线路,Reality 本身不会引入额外延迟;
  • 尝试更换 SNI 目标域名,部分域名延迟较高(建议按 偷域名 的方法找同机房低延迟目标)。

客户端提示"证书错误"或连接失败

  • 确认客户端 pbk(公钥)与服务端一致;
  • 确认 sni 与服务端配置的域名一致;
  • 确认服务端端口已在防火墙放行;
  • 检查目标域名是否可正常访问:curl -I https://<你的目标域名>

查看 Xray 日志

1
2
3
x-ui log
# 或
journalctl -u x-ui -f