V2ray的多用户控制3x-ui安装

整理 3X-UI 安装步骤,并对接你现有的宝塔 Nginx + 443 方案。

下面是一份 3X-UI 完整安装指南,对接你现有的 宝塔 Nginx + 443 方案,并支持 多用户、流量统计、每人二维码


安装前准备

1. 停掉官方 V2Ray(避免冲突)

systemctl stop v2ray
systemctl disable v2ray

3X-UI 会自带 Xray,不需要再跑官方 v2ray。

2. 确认环境

  • 系统:CentOS / Ubuntu 均可
  • 已有宝塔 + Nginx
  • 有域名(例如 vpn.example.com)解析到 xxxx
  • 443 由 Nginx 使用

第一步:安装 3X-UI

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

安装时建议这样选:

提示建议
数据库类型SQLite(个人/小团队够用)
是否自定义面板设置y
面板端口自定义,如 54321必须填数字,别留空
面板用户名改掉默认 admin
面板密码强密码
面板路径 (webBasePath)随机字符串,如 aBc123Xy(增加安全性)
是否配置 SSL可先 n,面板用 IP+端口访问;或给管理域名配证书

安装完成后会显示:面板地址: http://xxxxxx/aBc123Xy
用户名: xxx
密码: xxx

务必记下来。

常用管理命令

x-ui              # 管理菜单
x-ui status       # 查看状态
systemctl restart x-ui


第二步:宝塔放行面板端口

  1. 宝塔 → 安全 → 添加规则
  2. 放行你设的面板端口(如 54321
  3. 云安全组同样放行

面板端口不要对外乱分享;最好只允许自己 IP 访问,或用 SSH 隧道。


第三步:登录面板

浏览器打开:http://xxxx/aBc123

(换成你的端口和路径)


第四步:添加入站(走 443 的核心)

入站列表添加入站

字段填写
备注443-ws
协议vmess(或 vless,更现代)
监听 IP127.0.0.1(只本机,由 Nginx 反代)
端口10086(本地端口,可自定)
传输ws (WebSocket)
路径 (Path)/xxxdsdfds(自定义,与 Nginx 一致)
安全 / TLS不开启(TLS 由宝塔 Nginx 终结)

保存后先 启用 该入站。


第五步:添加用户(每人独立流量 + 二维码)

在刚建的入站里 → 客户 (Clients)添加客户

字段说明
邮箱/备注user-张三(用于区分用户)
总流量50 GB,0 = 不限
到期时间按需设置

添加后每个用户可:

  • 已用流量 / 总限额
  • 二维码 图标 → 独立二维码
  • 链接 → 独立 vmess://

再添加用户就再点 添加客户,每人一个码。


第六步:宝塔 Nginx 配置(443 反代)

站点 → 你的域名 → SSL 申请证书 → 强制 HTTPS

配置文件 中加入(按实际改 path 和端口):location /xxxdsdfds {
   proxy_redirect off;
   proxy_pass http://127.0.0.1:10086;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection “upgrade”;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

保存并重载 Nginx。

宝塔和云安全组放行 TCP 443


第七步:客户端连接

在 3X-UI 里点用户的 二维码复制链接,v2rayN 里 Ctrl+V 导入。

手动填写时:

字段
地址你的域名
端口443
UUID面板里该用户的 ID
传输ws
路径/xxxdsdfds
TLS开启

第八步:验证

# 面板服务
systemctl status x-ui

# Xray 本地端口
ss -tlnp | grep 10086

# 443
ss -tlnp | grep 443

面板 入站列表 里应能看到实时连接;客户 里能看到每人流量增长。


架构示意

客户端 v2rayN
  ↓ 443 + TLS + WebSocket
宝塔 Nginx(你的域名:443)
  ↓ 反代 /xxxdsdfds
3X-UI / Xray(127.0.0.1:10086)
  ↓
出网代理

管理后台单独走:IP:54321/路径(与代理 443 分开)。


安全建议

建议
面板密码强密码,改掉默认
面板端口非默认,随机路径
面板访问尽量限制 IP 或 SSH 隧道
代理 path用随机路径如 /xxxdsdfds
防火墙只开 443、面板端口、22

限制面板 IP(宝塔 Nginx 或安全组)示例:只允许你的家庭/办公 IP 访问 54321


常见问题

问题处理
面板打不开systemctl status x-ui;检查端口、防火墙
客户端连不上path、端口是否与 Nginx 一致;域名是否解析正确
没有二维码在入站 → 客户 里点二维码图标
流量不统计确认用户是「客户」里添加的,不是共用一个 UUID
和旧 v2ray 冲突systemctl stop v2ray && systemctl disable v2ray

和之前的区别

功能官方 V2Ray3X-UI
多用户手动改 JSON面板添加
流量统计每人统计
二维码手动每人一键生成
限额/到期
管理界面Web 面板

你按顺序做到 第四步添加入站 后,把面板里显示的 监听端口、path 发我,我可以按你的实际值写好 Nginx 配置,直接粘贴到宝塔即可。


User

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) 可以改默认端口吗


Cursor

可以,安装时就能改,装好后也能改。

安装时改端口

运行:bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

出现类似提示时:Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]:

y,然后输入你要的端口,例如:54321

再按提示设置:

  • 面板用户名
  • 面板密码
  • 面板路径(webBasePath,建议随机字符串)

注意:端口必须填数字(1–65535),不要直接回车留空,否则可能装成默认 2053 或异常地址。


不自定义时会怎样

n 时,脚本会随机分配一个端口(约在 1024–62000 之间),不是固定某个默认值。装完看终端输出里的访问地址即可。


装好后改端口

x-ui

选修改面板设置,或命令行:x-ui setting -port 54321
systemctl restart x-ui

改完在宝塔防火墙云安全组里放行新端口。


建议

项目建议
面板端口非默认,如 5432137821
面板路径随机,如 /aBc9xY2
代理端口继续用 443(Nginx),与面板端口分开

总结:安装时选 y 自定义端口即可;已安装用 x-ui setting -port 端口号 修改。


User

这个翻墙的方式 是通过 ws 连接网站的形式方式翻墙吗


Cursor

是的,可以这么理解:对外看起来像在访问一个普通 HTTPS 网站,实际里面夹着代理流量。


整体原理(你现在的 443 方案)

你的电脑 (v2rayN)
  │
  │ 看起来像:访问 https://你的域名:443/xxxdsdfds
  │ (和普通打开网站一样,走 HTTPS)
  ▼
宝塔 Nginx(443 端口,有正规 SSL 证书)
  │
  │ 路径 /xxxdsdfds → 反代到本地 Xray
  │ 其他路径 → 可以是正常网站或 404
  ▼
3X-UI / Xray(127.0.0.1:10086)
  │
  │ 解密 WebSocket 里的代理数据
  ▼
访问 Google、YouTube 等


用大白话说

层面实际发生的事
外面看到的你在访问 https://你的域名,和普通上网没区别
TLS/HTTPS流量加密,和银行网站一样
WebSocket (ws)在 HTTPS 里开一条「长连接通道」,像网页聊天那样
V2Ray/Xray把要访问的国外网站数据,塞进这条 ws 通道里传
Nginx负责 443 证书,并把 /xxxdsdfds 转给 Xray

所以:不是真的在「浏览网站内容」,而是借网站的形式(HTTPS + ws)把翻墙流量藏进去


和之前 mKCP 方案的区别

对比mKCP (31535)WebSocket + 443(你现在)
协议UDPTCP(HTTPS)
端口31535 等奇怪端口443(和网站一样)
伪装模拟 DTLS 包像访问正常网站
需要 Nginx不需要需要(终结 TLS + 反代)
被识别难度相对更容易被盯相对更隐蔽

为什么要这样设计?

  1. 443 是全网最常用的端口,几乎不会被封
  2. TLS 加密,中间人很难看出里面是不是代理
  3. WebSocket 本来就用在网页里(聊天、实时推送),混入正常流量很自然
  4. 若再配网站伪装,浏览器打开你的域名还能显示一个正常页面,更像真网站

客户端里对应什么?

v2rayN 里你填的:

字段含义
地址 = 域名假装访问这个网站
端口 = 443和 HTTPS 网站同一端口
传输 = ws走 WebSocket 通道
路径 = /xxxdsdfds网站的某个「隐藏入口」
TLS = 开启全程 HTTPS 加密

一句话

是的:这种方式就是 HTTPS 网站 + WebSocket 隧道 来翻墙;外面看像在连网站,里面是代理流量。比裸连 IP + 奇怪端口要隐蔽得多,也是现在 VPS 上很常见的做法。


User

x-ui 改默认端口


Cursor

x-ui 面板端口可以改,装好后用下面任一方式即可。


方法一:交互菜单(推荐)

SSH 登录服务器,执行:x-ui

在菜单里选类似:

  • 修改面板设置 / Change Panel Settings / 设置面板端口

按提示输入新端口,例如 54321,再设置或确认用户名、密码、路径。

改完后重启:systemctl restart x-ui


方法二:命令行直接改

x-ui setting -port 54321
systemctl restart x-ui

只改端口、不动账号时用这个最快。

查看当前设置:x-ui settings

或:x-ui setting -show

(不同版本子命令可能略有差异,没有 -show 就用 x-ui 进菜单看。)


方法三:安装时改(尚未安装或重装)

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

出现:Would you like to customize the Panel Port settings? [y/n]:

y,输入端口(必须填数字,别留空)。


改完后必做

1. 宝塔防火墙

安全 → 放行新端口(如 54321)→ 可删掉旧端口规则。

2. 云安全组

同样放行 TCP 新端口

3. 新访问地址

http://你的IP:新端口/你的路径

例如:http://xxxxxx/aBc123

路径(webBasePath)若也要改:x-ui setting -webBasePath 新的随机路径
systemctl restart x-ui


注意

说明
面板端口管理后台用,如 54321
代理 443客户端翻墙用,不用改
默认端口未自定义时常见为 2053 或安装时随机端口
留空端口安装时直接回车可能导致异常,务必填数字

验证

systemctl status x-ui
ss -tlnp | grep x-ui

浏览器用新地址登录面板即可。

如果你把 x-ui 菜单截图或当前 ss -tlnp | grep x-ui 输出发我,我可以帮你确认新端口是否生效。


User

[root@iZj6ceete8qcmo6ddztaqqZ mydata]# x-ui setting –port 8321 The OS release is: alinux ┌────────────────────────────────────────────────────────────────┐ │ x-ui control menu usages (subcommands): │ │ │ │ x-ui – Admin Management Script │ │ x-ui start – Start │ │ x-ui stop – Stop │ │ x-ui restart – Restart │ | x-ui restart-xray – Restart Xray │ │ x-ui status – Current Status │ │ x-ui settings – Current Settings │ │ x-ui enable – Enable Autostart on OS Startup │ │ x-ui disable – Disable Autostart on OS Startup │ │ x-ui log – Check logs │ │ x-ui banlog – Check Fail2ban ban logs │ │ x-ui update – Update │ │ x-ui update-dev – Update to Dev channel (latest) │ │ x-ui update-all-geofiles – Update all geo files │ │ x-ui migrateDB [file] – Convert .db <-> .dump (SQLite) │ │ x-ui pgclient [ver] – Upgrade pg_dump/pg_restore tools │ │ x-ui legacy – Legacy version │ │ x-ui install – Install │ │ x-ui uninstall – Uninstall │ └────────────────────────────────────────────


Cursor

你这条命令没生效,是因为新版 3X-UI 已没有 x-ui setting 子命令。正在查你当前版本的正确改端口方式。

你这条命令没生效,是因为 x-ui 是管理脚本,没有 setting 子命令;改端口要用下面两种方式之一。


原因

你执行的是:x-ui setting –port 8321   # ❌ 不对

  • 外层的 x-ui 只支持 startstopsettings 等,不支持 setting
  • 改端口要用 /usr/local/x-ui/x-ui(实际程序)
  • 参数是 单横线 -port,不是 --port

方法一:命令行改(最快)

/usr/local/x-ui/x-ui setting -port 8321
systemctl restart x-ui

查看是否改成功:/usr/local/x-ui/x-ui setting -show true

或:x-ui settings


方法二:交互菜单(推荐)

x-ui

9 → Change Port,输入 8321,按提示重启。

菜单大致如下:9. Change Port         ← 改端口
10. View Current Settings ← 查看当前设置
13. Restart             ← 重启


改完后必做

  1. 宝塔防火墙:放行 8321
  2. 云安全组:放行 TCP 8321
  3. 用新地址访问,例如:http://xxxx/你的路径

验证监听:ss -tlnp | grep 8321
systemctl status x-ui


顺带改用户名、密码、路径

/usr/local/x-ui/x-ui setting -username 新用户名 -password 新密码 -port 8321 -webBasePath 随机路径
systemctl restart x-ui

路径不要带前后 /,例如填 aBc123Xy,不要填 /aBc123Xy/


总结:用 /usr/local/x-ui/x-ui setting -port 8321,然后 systemctl restart x-ui;或直接 x-ui9 改端口。


User

[root@iZj6ceete8qcmo6ddztaqqZ mydata]# ss -tlnp | grep 8321 LISTEN 0 4096 127.0.0.1:8321 0.0.0.0:* users:((“x-ui”,pid=494051,fd=8))


Cursor

面板只监听

127.0.0.1:8321,外网无法直接访问。正在查 3X-UI 如何改为监听所有网卡。

这是正常现象,但也说明:外网现在打不开面板

当前状态

127.0.0.1:8321

表示 x-ui 只监听本机,只有服务器自己(或 SSH 隧道)能访问,不能用 http://xxxxx 从外网打开。

安装时若选了「仅绑定 127.0.0.1」(安全选项),就会出现这种情况。


方案 A:改成外网可访问(常用)

在服务器执行:/usr/local/x-ui/x-ui setting -listenIP 0.0.0.0
systemctl restart x-ui

再检查:ss -tlnp | grep 8321

应变成类似:0.0.0.0:8321

然后:

  1. 宝塔 → 安全 → 放行 8321
  2. 云安全组 → 放行 TCP 8321
  3. 浏览器访问:http://xxxxx/你的路径

查看完整访问信息:x-ui settings


方案 B:保持 127.0.0.1(更安全,不对外开端口)

不改监听,在你本地电脑用 SSH 隧道:ssh -L 2222:127.0.0.1:8321 root@xxxxx

保持这条 SSH 不断,浏览器打开:http://localhost:2222/你的路径

这样面板不暴露在公网,更安全。


两种方案对比

方案优点缺点
0.0.0.0随时浏览器访问端口可能被扫描,需强密码
127.0.0.1 + SSH 隧道更安全每次要先连 SSH

若改完 0.0.0.0 仍打不开

# 确认监听
ss -tlnp | grep 8321

# 确认服务
systemctl status x-ui

# 本机测试
curl -I http://127.0.0.1:8321/

再检查宝塔防火墙、云安全组是否放行 8321。


建议:个人 VPS 想省事 → 用方案 A 改成 0.0.0.0,并设强密码 + 随机路径;更在意安全 → 保持 127.0.0.1,用 SSH 隧道访问。

你更想用哪种?需要的话我可以按你选的方案写完整操作步骤。


第一步:确认监听地址(最关键)

在服务器执行:ss -tlnp | grep 8321

若显示:127.0.0.1:8321   ← 外网访问不了

改成监听所有网卡:/usr/local/x-ui/x-ui setting -listenIP 0.0.0.0
systemctl restart x-ui

再查一次,应变成:0.0.0.0:8321


第二步:确认路径是否正确

查看面板实际路径:/usr/local/x-ui/x-ui setting -show true

或:x-ui settings

看输出里的 webBasePath,可能是 wtboss/wtboss

访问地址示例:http://xxxx/wtboss

若路径带斜杠,按实际输出为准,例如:http://xxxx/wtboss/

路径不对会 404,但一般不是「完全打不开」。


第三步:防火墙放行 8321

宝塔

安全 → 添加规则 → 端口 8321,协议 TCP

阿里云安全组

实例 → 安全组 → 入方向 → 添加:

  • 端口:8321/8321
  • 协议:TCP
  • 来源:0.0.0.0/0(或你的 IP)

第四步:服务器本机测试

在服务器上执行:# 本机能否访问
curl -I http://127.0.0.1:8321/wtboss

# 服务是否正常
systemctl status x-ui

  • 本机 curl 有响应 → 多半是防火墙或监听地址问题
  • 本机也失败 → 路径或服务有问题

第五步:HTTP 还是 HTTPS

若安装时配了 SSL,要用 https:https://xxxxxxx/wtboss

查看是否启用了证书:/usr/local/x-ui/x-ui setting -show true | grep -i cert

有证书路径则用 https;没有则用 http


快速修复(多数情况够用)

在服务器依次执行:# 1. 改为外网可访问
/usr/local/x-ui/x-ui setting -listenIP 0.0.0.0

# 2. 确认端口
/usr/local/x-ui/x-ui setting -port 8321

# 3. 重启
systemctl restart x-ui

# 4. 验证
ss -tlnp | grep 8321
x-ui settings

然后在宝塔和阿里云安全组放行 8321/TCP,浏览器访问:http://xxxx/wtboss


仍不行时:用 SSH 隧道(临时登录)

在你本地电脑执行:ssh -L 8321:127.0.0.1:8321 root@xxxx

浏览器打开:http://localhost:8321/wtboss

能打开说明面板正常,问题在监听地址或防火墙。


对照表

现象原因处理
一直转圈/超时只监听 127.0.0.1 或防火墙未放行0.0.0.0 + 放行 8321
连接被拒绝服务未启动systemctl start x-ui
404路径错误x-ui settings 看 webBasePath
证书错误用了 http 访问 https改用 https://

请把下面三条命令的完整输出发我,我可以帮你精确定位:ss -tlnp | grep 8321
x-ui settings
curl -I http://127.0.0.1:8321/wtboss

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?