前言#
3x-ui 是一个基于 Xray 的开源管理面板,适合在 VPS 上快速搭建并管理入站规则。它是 X-UI 的增强分支,强调更高的稳定性与更广的协议支持。本文给出一套最小可用的安装与配置流程,并以 VLESS + Reality 为例,演示如何搭建一个抗检测能力强的代理节点。
一、准备工作#
安装脚本会在安装过程中自动申请域名证书,因此域名解析与 80 端口必须在运行脚本前就绪,否则中途会失败。开始前先准备:
- 一台 VPS(推荐 Debian 12 或 Ubuntu 22.04 及以上),具备
root权限 - 一个已解析到 VPS 的域名:安装时用它申请面板 HTTPS 证书(例如
xui.example.com);需提前在 DNS 添加A记录,指向 VPS 公网 IP
1.1 需要开放的端口#
| 端口 | 用途 | 何时放行 |
|---|---|---|
| 80/tcp | 申请 / 续期域名证书 | 运行安装脚本前——脚本用它做 Let's Encrypt 验证;之后续期也靠它,需长期保持 |
| 面板端口 | 登录 3x-ui 面板 | 安装后;端口在安装时随机或自定义生成 |
| 入站端口 | Reality 节点连接 | 创建入站后,推荐使用 443/tcp;若 443 已被占用,再改用其他高位端口 |
1.2 放行方法#
① 安装前——放行 80。 此时面板还没装,用云服务商安全组加系统防火墙放行;若用 ufw:
sudo ufw allow 80/tcp
② 安装后——放行面板端口与入站端口。 装完后用 3x-ui 自带的防火墙管理更省事:运行 x-ui → 选择 「防火墙管理(Firewall Management)」(v2.9.4 中通常是 21),多个端口用英文逗号分隔,例如 面板端口,入站端口。也可继续用 ufw:
sudo ufw allow <面板端口>/tcp
sudo ufw allow <入站端口>/tcp
sudo ufw reload
二、安装(官方脚本一条龙)#
MHSanaei/3x-ui View this repository on GitHub确认上一节的域名解析与 80 端口已就绪后,使用官方安装脚本,并在命令末尾指定版本号(建议先查看脚本内容再运行)。该脚本需以 root 身份运行:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v2.9.4
脚本以交互方式一步到位,依次完成数据库、端口、账号与 SSL 证书的配置——用户名、密码、访问路径(webBasePath)均随机生成,几乎无需人工干预。
① 选择数据库
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。
② 自定义面板端口
Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]
选 y 可指定固定高位端口;直接回车则随机分配。随后脚本自动生成用户名、密码与随机访问路径。
③ SSL 证书设置
证书直接在安装阶段申请并写入面板,无需事后手动操作:
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://:
Username: <随机生成>
Password: <随机生成>
Port: <面板端口>
WebBasePath: <随机路径>
Database: SQLite (/etc/x-ui/x-ui.db)
Access URL: https://<你的域名>:<面板端口>/<webBasePath>
请立即记录这些凭据,尤其是密码——密码经加密存储,安装后 x-ui settings 也查不到明文,忘记只能重置(见第三节)。
更完整的说明可参考项目 Wiki:https://github.com/MHSanaei/3x-ui/wiki
三、首次登录与基础安全#
安装时若选了域名 SSL,证书已配好,直接用打印出的 HTTPS 地址访问即可(结尾随机路径不可省略):
https://<你的域名>:<面板端口>/<webBasePath>/
凭据虽已随机化,登录后仍建议:
- 面板设置 → 按需修改管理员用户名与密码;
- 视情况调整面板端口与访问路径(Sub Path),改动后记得同步防火墙 / 安全组;
- 开启面板自带的登录失败限制 / Fail2ban(如有)。
3.1 关于证书#
先分清两件事:
- VLESS + Reality 节点不需要你自己的证书。Reality 借用目标网站的 TLS 握手特征,客户端用的是 Reality 公钥、Short ID、SNI 等参数,与你 VPS 上的证书无关。
- 面板建议启用 HTTPS 证书,用来保护登录面板时的账号、密码与操作请求,与 Reality 节点是两码事。
按第二节的流程,安装时选了「Let's Encrypt for Domain」的话,证书已自动签发并写入面板,路径如下,可直接用 https:// 访问:
/root/cert/<你的域名>/fullchain.pem
/root/cert/<你的域名>/privkey.pem
安装时若选了「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 握手以获取合法证书指纹。
目标域名的最低标准:
- 国外、未被 GFW 封锁的域名;
- 支持 TLS 1.3 与 X25519;
- 支持 HTTP/2(h2);
- 未套 CDN、访问不跳转。
4.3 在面板中创建入站#
进入面板 → 入站列表 → 添加入站,按以下参数填写:
基本信息
| 字段 | 填写内容 |
|---|---|
| 启用 | 开启 |
| 备注 | 任意(如 vless-reality) |
| 协议 | vless |
| 监听 | 留空(监听所有) |
| 端口 | 推荐 443 |
| 总流量 | 0 表示不限制 |
| 流量重置 | 从不 |
| 到期时间 | 留空表示不过期 |
客户端(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:* |
完整参数示意:
协议: 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),点击该行前方的 三个点(⋮)/ 操作 → 导出链接 或 二维码。
生成的分享链接格式类似:
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 等)即可使用。
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 与全部设置):
cp -r /etc/x-ui/ /root/x-ui-backup-$(date +%Y%m%d)/
迁移、还原等更完整的操作可参考项目 Wiki:https://github.com/MHSanaei/3x-ui/wiki
六、常见问题#
节点连不上 / 面板能开但节点不通
- 最常见原因:入站端口未放行。回到第一节用
x-ui防火墙管理放行该端口; - 同步检查云服务商安全组。
无法访问面板
- 确认地址、端口与访问路径(webBasePath)与
x-ui settings输出一致; - 确认防火墙 / 安全组已放行面板端口;
- 检查服务状态:
systemctl status x-ui。
修改端口或路径后访问不了
- 同步修改防火墙与安全组规则,确保新端口已放行。
面板 HTTPS 证书申请失败
- 确认域名已经解析到当前 VPS:
dig +short <你的域名>; - 若域名托管在 Cloudflare,确认 DNS 记录为 DNS only(灰云),没有开启 Proxied(橙云/小黄云);
- 确认 80/tcp 在系统防火墙和云安全组里都已放行;
- 确认 80 端口没有被 Nginx、Caddy、Apache 等服务占用。
证书配置好了,但 Reality 仍然连不上
- 面板证书只保护管理后台,不影响 Reality 入站;
- Reality 连接失败应重点检查入站端口、防火墙、
pbk、sid、sni、dest与目标域名可用性。
节点可以连接但速度慢
- 检查 VPS 线路,Reality 本身不会引入额外延迟;
- 尝试更换 SNI 目标域名,部分域名延迟较高(建议按 偷域名 的方法找同机房低延迟目标)。
客户端提示"证书错误"或连接失败
- 确认客户端
pbk(公钥)与服务端一致; - 确认
sni与服务端配置的域名一致; - 确认没有使用
microsoft.com、www.microsoft.com等微软域名作为 Target / SNI; - 确认服务端端口已在防火墙放行;
- 检查目标域名是否可正常访问:
curl -I https://<你的目标域名>。
查看 Xray 日志
x-ui log
# 或
journalctl -u x-ui -f
评论