前言
3x-ui 是一个基于 Xray 的开源管理面板,适合在 VPS 上快速搭建并管理入站规则。它是 X-UI 的增强分支,强调更高的稳定性与更广的协议支持。本文给出一套最小可用的安装与配置流程,并以 VLESS + Reality 为例,演示如何搭建一个抗检测能力强的代理节点。
本文统一以 3x-ui v2.9.4 为准,后文的命令、菜单编号与字段均基于该版本。官方最新版已进入 v3.x(前端重写、部分字段变动),但本文不涉及——个人自用 v2.9.4 已足够,界面与教程也更稳定。版本说明见 v2.9.4 Release。
官方提示:仅供个人学习与自用,不建议用于生产环境,禁止用于任何非法用途。
一、准备工作
安装脚本会在安装过程中自动申请域名证书,因此域名解析与 80 端口必须在运行脚本前就绪,否则中途会失败。开始前先准备:
- 一台 VPS(推荐 Debian 12 或 Ubuntu 22.04 及以上),具备
root权限 - 一个已解析到 VPS 的域名:安装时用它申请面板 HTTPS 证书(例如
xui.example.com);需提前在 DNS 添加A记录,指向 VPS 公网 IP
注意区分两类「域名」:上面这个是面板自己的域名;而 VLESS+Reality 节点握手伪装用的是目标域名,不需要你拥有(见 4.2),两者互不相干。
1.1 需要开放的端口
| 端口 | 用途 | 何时放行 |
|---|---|---|
| 80/tcp | 申请 / 续期域名证书 | 运行安装脚本前——脚本用它做 Let’s Encrypt 验证;之后续期也靠它,需长期保持 |
| 面板端口 | 登录 3x-ui 面板 | 安装后;端口在安装时随机或自定义生成 |
| 入站端口 | Reality 节点连接 | 创建入站后,推荐使用 443/tcp;若 443 已被占用,再改用其他高位端口 |
1.2 放行方法
① 安装前——放行 80。 此时面板还没装,用云服务商安全组加系统防火墙放行;若用 ufw:
| |
② 安装后——放行面板端口与入站端口。 装完后用 3x-ui 自带的防火墙管理更省事:运行 x-ui → 选择 「防火墙管理(Firewall Management)」(v2.9.4 中通常是 21),多个端口用英文逗号分隔,例如 面板端口,入站端口。也可继续用 ufw:
| |
最容易踩的坑:3x-ui 创建入站后,对应端口在系统层面默认仍是关闭的。「面板能打开、节点却连不通」几乎都是入站端口没放行——创建 Reality 入站后,记得回到这里放行它。
使用云服务商安全组(AWS、GCP、Vultr 等)时,以上端口需在系统防火墙与安全组中同时放行,少一处都连不通。
二、安装(官方脚本一条龙)
Xray panel supporting multi-protocol multi-user expire day & traffic & IP limit (Vmess, Vless, Trojan, ShadowSocks, Wireguard, Hysteria, Tunnel, Mixed, HTTP, Tun)
确认上一节的域名解析与 80 端口已就绪后,使用官方安装脚本,并在命令末尾指定版本号(建议先查看脚本内容再运行)。该脚本需以 root 身份运行:
| |
若你是 sudo 用户(AWS、GCP、Lightsail 等默认登录用户如 admin、ubuntu 都是),请先执行 sudo -i 切到 root,再运行上面的命令。不要直接用 sudo bash <(curl ...)——进程替换 <(...) 创建的文件描述符会被 sudo 关闭,导致 bash: /dev/fd/63: No such file or directory。或者先把脚本下载成文件,再 sudo bash install.sh v2.9.4 运行(也方便先 cat 审阅)。
如果不在命令末尾写版本号,官方脚本会直接安装 GitHub 当前 latest 版本。本文为了稳定复现,建议固定安装 v2.9.4。
脚本以交互方式一步到位,依次完成数据库、端口、账号与 SSL 证书的配置——用户名、密码、访问路径(webBasePath)均随机生成,几乎无需人工干预。
① 选择数据库
| |
个人自用直接选 1(SQLite),数据库文件位于 /etc/x-ui/x-ui.db。
② 自定义面板端口
| |
选 y 可指定固定高位端口;直接回车则随机分配。随后脚本自动生成用户名、密码与随机访问路径。
③ SSL 证书设置
证书直接在安装阶段申请并写入面板,无需事后手动操作:
| |
默认是 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://:
| |
请立即记录这些凭据,尤其是密码——密码经加密存储,安装后 x-ui settings 也查不到明文,忘记只能重置(见第三节)。
安装中可能出现两条无害报错,可忽略:
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 地址访问即可(结尾随机路径不可省略):
| |
x-ui settings 可查看 Access URL、端口、访问路径与用户名,但不显示密码明文(密码为加密存储)。忘记密码只能重置:运行 x-ui 进入菜单 → 选择 「Reset Username & Password」,按提示设置新账号密码,重置后面板会自动重启生效。
凭据虽已随机化,登录后仍建议:
- 面板设置 → 按需修改管理员用户名与密码;
- 视情况调整面板端口与访问路径(Sub Path),改动后记得同步防火墙 / 安全组;
- 开启面板自带的登录失败限制 / Fail2ban(如有)。
3.1 关于证书
先分清两件事:
- VLESS + Reality 节点不需要你自己的证书。Reality 借用目标网站的 TLS 握手特征,客户端用的是 Reality 公钥、Short ID、SNI 等参数,与你 VPS 上的证书无关。
- 面板建议启用 HTTPS 证书,用来保护登录面板时的账号、密码与操作请求,与 Reality 节点是两码事。
按第二节的流程,安装时选了「Let’s Encrypt for Domain」的话,证书已自动签发并写入面板,路径如下,可直接用 https:// 访问:
| |
域名证书有效期约 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 隧道访问。
面板端口或路径改动后,别忘了同步更新防火墙与安全组规则。
四、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、访问不跳转。
目标域名不需要你拥有或控制——你只是在握手阶段"借用"其 TLS 证书指纹,真实流量不会流向该网站。
默认的 microsoft.com 等大厂域名虽然能用,但使用者过多、特征明显,且对方随时可能调整配置。更稳妥的做法是扫描自己 VPS 同机房 IP 段内的冷门域名作为目标——具体方法见站内文:Reality 如何正确「偷」域名:RealiTLScanner 扫描 + RealityChecker 检测。
4.3 在面板中创建入站
进入面板 → 入站列表 → 添加入站,按以下参数填写:
基本信息
| 字段 | 填写内容 |
|---|---|
| 启用 | 开启 |
| 备注 | 任意(如 vless-reality) |
| 协议 | vless |
| 监听 | 留空(监听所有) |
| 端口 | 推荐 443 |
| 总流量 | 0 表示不限制 |
| 流量重置 | 从不 |
| 到期时间 | 留空表示不过期 |
创建后请记下面板分配 / 你填写的端口,回到第一节「1.2 放行方法」放行它,否则无法连接。
Reality 入站优先推荐 443,外观更接近普通 HTTPS 访问。若服务器上已有 Nginx、Caddy、Apache 或其他服务占用 443,再选择一个高位端口,并确保系统防火墙与云安全组都已放行。
客户端(Client)
展开 客户端 区域,保持 decryption = none、encryption = none。Authentication 保持默认或点击 Get New keys 生成客户端认证信息;如果当前版本显示 Flow 字段,将其设为 xtls-rprx-vision。
传输(Transport)
| 字段 | 填写内容 |
|---|---|
| 传输 | TCP (RAW) |
| Proxy Protocol | 关闭 |
| HTTP 伪装 | 关闭 |
| Sockopt | 关闭;确有路由 / 出站绑定需求时再单独配置 |
| TCP Masks | 默认即可 |
| External Proxy | 关闭;只有需要外置前置代理时才开启 |
安全(Reality)
| 字段 | 填写内容 |
|---|---|
| 安全 | 选择 Reality |
| Show | 关闭 |
| Xver | 0 |
| uTLS | chrome |
| 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:* |
完整参数示意:
| |
填写完毕后点击 添加 / 保存。
4.4 获取客户端配置
回到入站列表,找到刚创建的入站(标签会显示 vless tcp reality),点击该行前方的 三个点(⋮)/ 操作 → 导出链接 或 二维码。
生成的分享链接格式类似:
| |
将该链接导入客户端(v2rayN、v2rayNG、Shadowrocket、NekoBox 等)即可使用。
链接中包含你的服务器 IP 与认证信息,请勿公开分享。
4.5 客户端关键参数说明
| 参数 | 说明 |
|---|---|
security=reality | 启用 Reality 传输层 |
sni | 伪装目标域名,与服务端 SNI 一致 |
fp | TLS 指纹,建议设为 chrome 或 firefox |
pbk | 服务端公钥,客户端用于验证 |
sid | Short ID,服务端用于识别合法客户端 |
flow=xtls-rprx-vision | XTLS Vision 流控,提升性能与抗检测 |
五、备份与维护
固定使用 v2.9.4,不必为追新频繁升级。但在调整配置或迁移服务器前,务必先备份数据目录(默认位于 /etc/x-ui/,含数据库 x-ui.db 与全部设置):
| |
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 连接失败应重点检查入站端口、防火墙、
pbk、sid、sni、dest与目标域名可用性。
节点可以连接但速度慢
- 检查 VPS 线路,Reality 本身不会引入额外延迟;
- 尝试更换 SNI 目标域名,部分域名延迟较高(建议按 偷域名 的方法找同机房低延迟目标)。
客户端提示"证书错误"或连接失败
- 确认客户端
pbk(公钥)与服务端一致; - 确认
sni与服务端配置的域名一致; - 确认服务端端口已在防火墙放行;
- 检查目标域名是否可正常访问:
curl -I https://<你的目标域名>。
查看 Xray 日志
| |