主要内容

在复杂网络环境中,如何快速、稳定且可控地搭建一套高可用代理服务,是很多工程师绕不开的命题。本文基于 3x-ui + Docker Compose,从底层架构到实战部署,深入解析代理服务的设计与实现,并结合 VLESS + Reality 等现代协议,构建一套兼顾性能、安全与隐蔽性的解决方案。同时,围绕常见问题(端口、防火墙、Docker 环境等)提供系统化排障思路,帮助你实现真正“开箱即用”的工程化落地。

一、为什么选择 3x-ui?

在代理技术演进中,我们从早期的 Shadowsocks、V2Ray,到如今基于 Xray Core 的增强方案,逐渐走向:

  • 更强的协议灵活性
  • 更高的隐蔽性(如 Reality)
  • 更完善的流量控制与统计

3x-ui 本质是什么?

一个基于 Xray Core 的 Web 管理面板,支持多协议统一管理 + 可视化配置。

核心优势

  • 一站式管理:支持 VLESS / VMess / Trojan 等
  • Reality 支持:无需证书即可实现 TLS 混淆
  • 流量统计 + 用户管理
  • Fail2ban 防爆破
  • Web UI 直观操作

对比常见方案

方案 优点 缺点
Shadowsocks 轻量简单 易被识别
V2Ray 灵活强大 配置复杂
Xray 性能更强 学习成本高
3x-ui UI友好 + Xray能力 面板需额外安全加固

👉 结论:3x-ui 是工程化落地最优解之一


二、Docker Compose 部署(推荐)

工程上我始终坚持一个原则:

“环境必须可复现”

Docker Compose 正是实现这一点的最佳实践。

docker-compose.yml

services:
  3xui:
    image: ghcr.io/mhsanaei/3x-ui:latest
    container_name: 3xui_app
    volumes:
      - $PWD/db/:/etc/x-ui/
      - $PWD/cert/:/root/cert/
    environment:
      XRAY_VMESS_AEAD_FORCED: "false"
      XUI_ENABLE_FAIL2BAN: "true"
    tty: true
    network_mode: host
    restart: unless-stopped

启动服务

docker compose up -d

三、端口与防火墙(高频踩坑点)

必须开放:

  • 2053 → 管理后台
  • 443 → 实际代理流量

云服务器防火墙

  • 阿里云 / 腾讯云 / AWS:安全组开放 TCP 2053 / 443

本机防火墙检查

使用 ufw

ufw allow 2053
ufw allow 443
ufw reload

使用 firewalld

firewall-cmd --add-port=2053/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

端口连通性排查

方法1:telnet

telnet your_ip 443

方法2:ss 查看监听

ss -tulnp | grep 443

方法3:systemctl 检查服务

systemctl status docker

四、非 Docker 部署(备用方案)

如果你坚持裸机部署:

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

👉 但从工程角度,我更推荐容器化(可迁移、可回滚、可扩展)


五、首次登录与安全加固

访问:

http://your_ip:2053

默认账号:

admin / admin

必做三件事

1️⃣ 修改管理员密码

这是基本操作,不解释。


2️⃣ 修改面板路径(非常关键)

例如:

/admin  →  /sss

访问变为:

http://your_ip:2053/sss

👉 防止被扫描器直接撞库


3️⃣ 启用 Fail2ban

环境变量已开启:

XUI_ENABLE_FAIL2BAN: "true"

六、核心:入站策略配置(VLESS + Reality)

这是整个系统的“灵魂”。

核心配置解读

关键字段

"port": 443,
"protocol": "vless",

👉 使用 VLESS,性能更优


Reality 配置

"security": "reality",
"target": "www.microsoft.com:443",

👉 核心思想:

伪装成真实 HTTPS 流量


客户端标识(已脱敏)

"id": "xxxx-xxxx-xxxx"

👉 每个用户唯一 UUID


实际操作步骤(UI)

1️⃣ 新增入站

  • 端口:443
  • 协议:VLESS
  • 传输:TCP
  • 安全:Reality

2️⃣ 配置 Reality

关键参数:

  • 目标网站(target):如 www.microsoft.com:443
  • SNI:同上
  • 公钥 / 私钥:系统自动生成

3️⃣ 添加用户

只需关注:

  • UUID(客户端用)
  • Flow:建议 xtls-rprx-vision

👉 用户本质只是“认证凭证”


架构本质理解

Client → Reality → Xray → Target Site

👉 核心价值:

  • 流量不可识别
  • 无需证书
  • 抗干扰能力强

七、客户端连接(以 v2rayN 为例)

配置参数

在 v2rayN 中新增节点:

字段
地址 你的服务器 IP
端口 443
UUID 上文生成
协议 VLESS
传输 TCP
安全 Reality
公钥 面板复制
SNI www.microsoft.com

一键导入(推荐)

3x-ui 支持:

  • 分享链接
  • 二维码

👉 工程实践建议:

永远优先用订阅,而不是手动配置


八、常见问题排障

1️⃣ 无法连接

检查顺序:

  1. 端口是否开放
  2. Docker 是否运行
  3. Reality 参数是否一致
  4. UUID 是否正确

2️⃣ 连接成功但无法上网

  • DNS 问题
  • SNI 配置错误
  • target 被墙

3️⃣ 面板无法访问

docker logs 3xui_app

九、工程思考:为什么这样设计?

这套方案的核心思想是:

“用真实流量掩护代理流量”

Reality 的本质:

  • 不依赖证书
  • 利用 TLS 指纹混淆
  • 动态握手验证

这其实是:

  • 网络层混淆
  • 协议层伪装
  • 应用层认证

三层协同设计。


十、总结

如果你追求的是:

  • 稳定
  • 隐蔽
  • 可控
  • 易维护

那么:

3x-ui + Docker Compose + Reality = 当前阶段的工程最优解


相关文档

  1. 3x-ui GitHub
  2. Xray 官方文档
  3. V2Ray 官方文档
  4. Reality 技术解析