一、方案概述

3x-ui 是基于 Xray-core 的 Web 可视化管理面板,提供图形化界面管理代理节点、用户、流量统计等,无需手动编写 JSON 配置文件,是目前最主流的 Xray 管理方案之一。

本文档使用 Docker Compose 部署,适合服务器上已有其他 Docker 服务的场景,方便统一管理、隔离和迁移。

架构图

客户端(手机/电脑)
        ↓
VLESS + Reality + XTLS Vision(443 端口)
        ↓
海外 VPS(Ubuntu 22.04)
    └── Docker
        ├── 3x-ui 容器(Xray-core + Web 面板,54321 端口)
        └── 其他现有服务容器...
        ↓
目标网站(公网)

与手动配置方案对比

项目 手动配置 3x-ui 面板(Docker)
配置方式 手动编辑 JSON Web 界面点击操作
多用户管理 手动维护 ✅ 原生支持
流量统计 ✅ 实时图表
分享链接 手动拼接 ✅ 自动生成 + 二维码
到期管理 ✅ 支持流量/时间限制
部署/迁移 手动备份配置 ✅ 挂载卷, docker cp 即可迁移

二、服务器要求

项目 要求
系统 Ubuntu 22.04 LTS / Debian 11+
CPU 1 核+
内存 512MB+(建议 1GB)
带宽 5Mbps+ 上行
Docker ≥ 20.10
Docker Compose ≥ 2.x( docker compose 命令)

三、系统初始化

验证 Docker 已安装

docker --version
docker compose version

若未安装 Docker:

curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker

设置时区

sudo timedatectl set-timezone Asia/Singapore

验证 NTP 时间同步

timedatectl status

确认 System clock synchronized: yes ,若未同步:

sudo systemctl enable --now systemd-timesyncd

Reality 对时间精度有要求,服务端与客户端时间差不得超过 90 秒。


四、安装 3x-ui(Docker Compose)

官方项目: https://github.com/MHSanaei/3x-ui

创建目录结构

mkdir -p /opt/3x-ui
cd /opt/3x-ui

编写 docker-compose.yml

nano docker-compose.yml

写入以下内容:

services:
  3x-ui:
    image: ghcr.io/mhsanaei/3x-ui:latest
    container_name: 3x-ui
    restart: unless-stopped
    network_mode: host
    environment:
      - XRAY_VMESS_AEAD_FORCED=false
    volumes:
      - /opt/3x-ui/db:/etc/x-ui
      - /opt/3x-ui/cert:/root/cert
    tty: true

为什么使用 network_mode: host
Reality 需要直接绑定宿主机 443 端口,并进行底层 TCP 握手转发。使用 host 网络模式可以避免 NAT 导致的握手问题,确保 Reality 正常工作。

启动服务

docker compose up -d

验证容器运行状态

docker compose ps
docker compose logs -f

五、防火墙配置

# 放行代理端口(VLESS+Reality 使用)
sudo ufw allow 443/tcp

# 放行面板端口(仅管理使用,建议后续限制来源 IP)
sudo ufw allow 54321/tcp

# 启用防火墙
sudo ufw enable

# 验证规则
sudo ufw status

六、首次登录与安全设置

登录面板

浏览器访问:

http://你的VPS_IP:54321/

默认账号: admin / admin

修改用户名和密码(必做)

  1. 进入 面板设置账号安全
  2. 修改用户名(建议随机字符串)
  3. 修改密码(建议 16 位以上随机密码)
  4. 点击 保存并重启面板

修改面板端口和路径(推荐)

  1. 进入 面板设置面板配置
  2. 修改 面板端口 (如 18443 ,避免使用常见端口)
  3. 修改 根路径 (如 /manage-xxxxxxxx/
  4. 保存后需在防火墙放行新端口,关闭旧端口 bash sudo ufw allow 18443/tcp sudo ufw delete allow 54321/tcp --- ## 七、创建 VLESS + Reality 节点 ### 进入入站列表 面板左侧菜单 → 入站列表添加入站 ### 填写配置 按以下参数填写表单: | 字段 | 值 | | --- | --- | | 备注 | Reality(或自定义名称) | | 协议 | vless | | 监听 IP | 留空(默认 0.0.0.0) | | 端口 | 443 | | 传输协议 | TCP | ### 客户端设置 | 字段 | 值 | | --- | --- | | ID | 点击「生成」自动填入 UUID | | Flow | xtls-rprx-vision | ### TLS 设置 | 字段 | 值 | | --- | --- | | 安全 | Reality | | uTLS | chrome(或 firefox / safari) | | 目标地址 | www.microsoft.com:443 | | 域名 | www.microsoft.com | | 私钥 | 点击「生成」自动填入 | | Short ID | 点击「生成」自动填入 | > 伪装目标建议 :避免使用 www.cloudflare.com (过于常见),推荐: > > - www.microsoft.com:443 > - addons.mozilla.org:443 > - www.swift.com:443 ### 保存节点 点击 添加 完成创建。 --- ## 八、获取客户端连接信息 在入站列表中,点击对应节点的 操作二维码复制分享链接 。 分享链接格式示例: ```

vless://UUID@VPS_IP:443?security=reality&type=tcp&flow=xtls-rprx-vision&pbk=公钥&fp=chrome&sni=www.microsoft.com&sid=ShortID#Reality


---

## 九、添加多用户

在入站列表中,点击节点的 **操作** → **用户** → **添加用户** :

| 字段 | 说明 |
| --- | --- |
| 邮箱 | 用户标识,任意填写 |
| UUID | 自动生成 |
| Flow | xtls-rprx-vision |
| 流量限制 | 可选,如 10GB |
| 到期时间 | 可选,设置账号有效期 |

每个用户拥有独立的连接信息和流量统计。

---

## 十、性能优化(BBR)

编辑内核参数:

```bash
sudo nano /etc/sysctl.conf

追加:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

立即生效:

sudo sysctl -p

验证(两项均需确认):

sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc

预期输出:

net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq

十一、安全加固

⚠️ 修改 SSH 端口(操作顺序极为重要)

第一步:先在防火墙放行新端口

sudo ufw allow 2222/tcp

第二步:修改 SSH 配置

sudo nano /etc/ssh/sshd_config

修改:

Port 2222

第三步:重启 SSH 服务

sudo systemctl restart ssh

第四步:新开终端验证新端口可用

ssh -p 2222 user@VPS_IP

确认可连接后,关闭旧端口:

sudo ufw delete allow 22/tcp

安装 Fail2Ban

sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

限制面板访问来源(推荐)

若管理者 IP 固定,可限制面板仅从该 IP 访问:

# 删除原面板端口全开规则
sudo ufw delete allow 18443/tcp

# 仅允许指定 IP 访问面板
sudo ufw allow from 你的管理IP to any port 18443

十二、3x-ui Docker 常用管理命令

# 进入 /opt/3x-ui 目录后执行以下命令

# 查看运行状态
docker compose ps

# 查看实时日志
docker compose logs -f

# 重启服务
docker compose restart

# 停止服务
docker compose stop

# 启动服务
docker compose start

# 更新到最新版本
docker compose pull && docker compose up -d

# 进入容器内部(调试用)
docker exec -it 3x-ui bash

数据备份与迁移

所有数据存储在宿主机 /opt/3x-ui/db/ 目录下,直接备份此目录即可:

# 备份
tar -czf 3x-ui-backup-$(date +%Y%m%d).tar.gz /opt/3x-ui/db/

# 迁移到新服务器:将备份文件传输后解压到同路径,重新 docker compose up -d 即可

十三、客户端推荐

Windows

Android

iOS / iPhone

  • Shadowrocket (付费)
  • Hiddify (免费)

macOS

客户端直接扫描面板生成的二维码即可导入,无需手动填写参数。


十四、排错方法

面板无法访问

# 检查面板服务状态
x-ui status

# 检查端口监听
sudo ss -tlnp | grep 54321

# 查看面板日志
x-ui log

节点连接失败

# 查看容器日志
docker compose logs --tail=100

# 检查 443 端口监听(host 网络模式下直接查宿主机)
sudo ss -tlnp | grep 443

常见错误

错误现象 可能原因 解决方案
面板打不开 防火墙未放行面板端口 ufw allow 54321/tcp
节点连接失败 443 端口被占用 sudo lsof -i:443 检查占用进程
Reality 握手失败 伪装目标不可达 换其他目标站点,并在 VPS 上 curl 验证
流量统计不准 Xray 版本过旧 x-ui update 更新面板

十五、总结

项目 推荐值
协议 VLESS + Reality
流控 xtls-rprx-vision
端口 443
伪装目标 www.microsoft.com
TLS 指纹 chrome
拥塞控制 BBR + fq
面板 3x-ui

3x-ui 将 Xray 的配置管理从命令行 JSON 提升到 Web 可视化界面,极大降低了维护成本,同时保留了 Xray-core 的全部性能优势,是个人和小团队长期使用的最优方案。