主要内容
在复杂网络环境中,如何快速、稳定且可控地搭建一套高可用代理服务,是很多工程师绕不开的命题。本文基于 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️⃣ 无法连接
检查顺序:
- 端口是否开放
- Docker 是否运行
- Reality 参数是否一致
- UUID 是否正确
2️⃣ 连接成功但无法上网
- DNS 问题
- SNI 配置错误
- target 被墙
3️⃣ 面板无法访问
docker logs 3xui_app
九、工程思考:为什么这样设计?
这套方案的核心思想是:
“用真实流量掩护代理流量”
Reality 的本质:
- 不依赖证书
- 利用 TLS 指纹混淆
- 动态握手验证
这其实是:
- 网络层混淆
- 协议层伪装
- 应用层认证
三层协同设计。
十、总结
如果你追求的是:
- 稳定
- 隐蔽
- 可控
- 易维护
那么:
3x-ui + Docker Compose + Reality = 当前阶段的工程最优解