x-ui 是一个基于 Go + Gin + Xray-core 的轻量级 Web 管理面板,面向 Linux 服务器部署,提供 Xray 入站配置、用户管理、流量统计、运行状态监控、HTTPS 面板访问、Telegram 通知与 v2-ui 数据迁移等能力。
本仓库基于原 x-ui 项目整理维护,并补充了安全加固,专注 Linux 服务器部署。
当前版本:v1.2.0
- Web 可视化管理 Xray 入站配置
- 支持多用户、多协议、多传输方式
- 支持协议:
vmess、vless、trojan、shadowsocks、dokodemo-door、socks、http - 额外协议(需自定义 xray-core,集成 ):
tuic、hysteria2、anytls - 支持 TCP、WebSocket、HTTP/2、gRPC、mKCP、QUIC、HTTPUpgrade、SplitHTTP 等传输配置
- 支持 TLS、XTLS、Reality 安全配置
- 系统状态监控:CPU、内存、磁盘、负载、网络流量、TCP/UDP 连接数
- 现代化系统首页:Xray 状态、流量趋势、资源概览、快捷操作
- 网络体检:出口 IP、平台可达性、协议检查、三网回程与评分建议
- 入站流量统计、到期时间限制、流量上限检查
- 入站管理增强:筛选、统计、一键 VLESS Reality 节点
- 独立代理用户与订阅链接,支持 token 管理和订阅访问记录
- Endpoint/WARP 管理:WARP 注册、刷新、License、自动更新和 WireGuard 出口注入
- 证书中心:证书上传、ACME HTTP-01 申请、ACME/DNS 账号管理
- 任务中心:异步任务状态和执行日志
- 支持面板 HTTPS、自定义访问路径 WebBasePath
- 支持 Telegram Bot 通知:流量统计、登录提醒、到期提醒、流量预警
- 支持从 v2-ui 迁移 inbound 账号数据
- 内置前端资源,无需额外前端构建步骤
当前版本已针对常见面板风险做基础加固:
- 避免默认
admin/admin弱口令长期存在,初始化时生成随机默认凭据 - 登录失败限速与临时锁定,降低暴力破解风险
- 会话 Cookie 增加
HttpOnly、SameSite=Lax,HTTPS 下自动启用Secure - 注销时清理会话 Cookie
- 对跨站写操作增加 Origin/Referer 同源校验
- 限制客户端 IP 获取的信任边界,避免直接信任伪造的代理头
- 对 WebBasePath、入站配置等关键输入增加基础校验
- 公开订阅链接不再信任请求 Host,支持配置订阅公开地址
- 订阅访问日志增加重复访问抑制和保留清理策略
- 代理用户订阅 token 增加强度校验
- Xray 运行配置文件使用更严格的文件权限写入
注意:该项目用于服务器代理面板管理,部署后请务必使用强密码、限制管理端口访问来源,并优先启用 HTTPS。
推荐系统:
- Debian 8+
- Ubuntu 16+
- CentOS 7+
支持架构以发布包为准,常见为:amd64、arm64。
- Go 1.20+(当前本地验证环境:Go 1.26.2)
- Git
git clone https://github.com/motao123/x-ui.git
cd x-ui
go mod download
go run main.go默认数据库路径为:
/etc/x-ui/x-ui.db
如在本地开发环境运行,请确保当前用户有权限创建或访问该路径,或按需调整配置/运行环境。
当前版本使用纯 Go SQLite 驱动(github.com/glebarez/sqlite),无需 CGO 即可编译:
go build -o x-ui main.go对于服务器低内存环境(<512MB),可限制编译并行度:
GOMAXPROCS=1 go build -o x-ui main.go运行:
./x-ui run查看版本:
./x-ui -vdocker build -t x-ui .
docker run -itd --network=host \
-v /etc/x-ui:/etc/x-ui \
-v /root/cert:/root/cert \
--name x-ui --restart=unless-stopped \
x-ui推荐使用当前仓库的一键安装命令:
bash <(curl -Ls https://raw.githubusercontent.com/motao123/x-ui/main/install.sh)也可以指定版本安装,例如:
bash <(curl -Ls https://raw.githubusercontent.com/motao123/x-ui/main/install.sh) v1.1.0说明:脚本会优先从
https://github.com/motao123/x-ui/releases下载x-ui-linux-${arch}.tar.gz。如果当前仓库还没有 Release 或下载失败,脚本会自动切换为源码构建安装。
适合当前仓库没有 Release 压缩包时使用:
apt update && apt install -y git curl tar golang
git clone https://github.com/motao123/x-ui.git /usr/local/x-ui-src
cd /usr/local/x-ui-src
go build -o x-ui main.go
chmod +x x-ui x-ui.sh bin/xray-linux-*
mkdir -p /usr/local/x-ui /etc/x-ui
cp -r x-ui x-ui.sh bin web config database logger util v2ui xray /usr/local/x-ui/
cp x-ui.service /etc/systemd/system/
ln -sf /usr/local/x-ui/x-ui.sh /usr/bin/x-ui
chmod +x /usr/bin/x-ui
systemctl daemon-reload
systemctl enable x-ui
systemctl restart x-ui安装后设置面板端口、用户名和密码:
x-ui setting -port 54321
x-ui setting -username your_user -password 'your_strong_password'
x-ui restart手动安装流程示例:
cd /root/
tar zxvf x-ui-linux-amd64.tar.gz
chmod +x x-ui/x-ui x-ui/bin/xray-linux-*
cp x-ui/x-ui.sh /usr/bin/x-ui
cp -f x-ui/x-ui.service /etc/systemd/system/
mv x-ui/ /usr/local/
systemctl daemon-reload
systemctl enable x-ui
systemctl restart x-ui常用管理命令:
x-ui # 显示管理菜单
x-ui start # 启动面板
x-ui stop # 停止面板
x-ui restart # 重启面板
x-ui status # 查看状态
x-ui log # 查看日志
x-ui enable # 开机自启
x-ui disable # 取消开机自启
x-ui update # 更新面板
x-ui uninstall # 卸载面板直接运行:
x-ui run修改面板端口、用户名、密码:
x-ui setting -port 54321
x-ui setting -username your_user -password 'your_strong_password'查看当前面板配置:
x-ui setting -show重置面板设置:
x-ui setting -reset迁移 v2-ui 入站账号数据:
x-ui v2-ui指定 v2-ui 数据库路径:
x-ui v2-ui -db /etc/v2-ui/v2-ui.db| 协议 | 传输层安全 | 适用场景 | 推荐指数 |
|---|---|---|---|
| VLESS + Reality | Reality | 无需域名和证书,抗检测能力最强 | ★★★★★ |
| VLESS + TLS | TLS | 有域名和证书,搭配 WS/H2/gRPC 传输 | ★★★★☆ |
| VMess + WS + TLS | TLS | 有域名和证书,CDN 中转友好 | ★★★★☆ |
| Trojan + TLS | TLS | 有域名和证书,配置简单 | ★★★★☆ |
| Shadowsocks | 可选TLS | 简单轻量,兼容性好 | ★★★☆☆ |
| VMess (裸TCP) | 无 | 内网/测试用 | ★★☆☆☆ |
| Dokodemo-door | 无 | 任意门转发 | ★★☆☆☆ |
| SOCKS / HTTP | 无 | 内网代理转发 | ★☆☆☆☆ |
最推荐的协议组合,无需域名和 TLS 证书,通过模拟访问真实网站实现抗检测。
- 协议 选择
vless - 端口 填
443(增强伪装效果) - id 保持默认的 UUID 即可
- 传输 选择
tcp - reality 开关 打开
- 开启 reality 后会展开 Reality 设置区域:
- dest:填写
www.amazon.com:443(回落目标,选择支持 TLS 1.3 和 H2 的大站) - serverNames:输入
www.amazon.com(与 dest 保持一致,回车添加) - privateKey / publicKey:点击输入框右侧的 🔄 按钮一键生成密钥对
- shortIds:留空或输入随机十六进制字符串(回车添加)
- fingerprint:选择
chrome
- dest:填写
- flow 选择
xtls-rprx-vision(开启 reality 后 flow 选项会显示在 id 下方)
重要:flow 必须设置
xtls-rprx-vision,否则 Reality 的安全优势无法体现
选择标准:支持 TLS 1.3 + H2 的国外大站
www.amazon.comwww.ebay.comwww.paypal.comwww.cloudflare.comdash.cloudflare.comaws.amazon.comwww.microsoft.comwww.apple.com
- dest 和 serverNames 必须指向同一个真实网站
- 无需申请 TLS 证书
- privateKey 是服务端私钥,publicKey 是客户端公钥(分享链接自动包含)
适合有域名和 TLS 证书的场景,WebSocket 传输支持 CDN 中转。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 协议 | vless |
|
| 端口 | 443 | |
| 传输 | ws |
WebSocket |
| 安全 | tls |
开启 TLS |
| 域名 | your.domain.com |
填写你的域名 |
| 路径 | /随机路径 |
建议 UUID 格式的路径,如 /{uuid} |
| 证书 | 文件路径或内容 | 可使用 ACME 一键申请 |
- 将域名解析到 CDN(如 Cloudflare),开启代理(橙色云朵)
- Cloudflare → SSL/TLS → 设为 Full 或 Full (Strict)
- 面板中 TLS 域名填写你的域名
- 客户端连接地址使用域名,端口 443
适合有域名和证书的场景,gRPC 基于 HTTP/2,性能优秀。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 协议 | vless |
|
| 端口 | 443 | |
| 传输 | grpc |
|
| 安全 | tls |
|
| serviceName | 随机字符串 | gRPC 服务名,建议使用 UUID |
| 域名 | your.domain.com |
最经典稳定的方案,客户端兼容性最好。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 协议 | vmess |
|
| 端口 | 443 | |
| 传输 | ws |
|
| 安全 | tls |
|
| UUID | 自动生成 | |
| alterId | 0 |
必须为 0(AEAD 加密) |
| 加密 | auto |
客户端自动协商 |
| 域名 | your.domain.com |
|
| 路径 | /随机路径 |
- alterId 必须为 0,否则使用不安全的旧加密方式
- 建议勾选「禁用不安全加密」
配置简单,协议本身基于 TLS,伪装性好。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 协议 | trojan |
|
| 端口 | 443 | |
| 传输 | tcp |
Trojan 默认 TCP |
| 安全 | tls(自动开启) |
Trojan 协议强制 TLS |
| 密码 | 自动生成 | |
| 域名 | your.domain.com |
|
| 证书 | 文件路径或内容 | 必须配置有效证书 |
- Trojan 必须配置有效的 TLS 证书,否则 xray 无法启动
- 如无证书,可使用面板内置的「一键申请 SSL」功能(ACME)
- 也可通过 Caddy/Nginx 反向代理实现自动证书管理
经典轻量代理协议,兼容性最好。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 协议 | shadowsocks |
|
| 端口 | 随机 | |
| 加密方法 | aes-256-gcm |
推荐使用 AEAD 加密 |
| 密码 | 自动生成 | |
| 网络 | tcp,udp |
同时支持 TCP 和 UDP |
| 方法 | 安全性 | 性能 | 推荐度 |
|---|---|---|---|
aes-256-gcm |
高 | 好 | ★★★★★ |
aes-128-gcm |
高 | 更快 | ★★★★☆ |
chacha20-poly1305 |
高 | ARM 优 | ★★★★☆ |
注意:旧的 Stream Cipher 加密方式(aes-256-cfb、aes-128-cfb、chacha20、chacha20-ietf)已被弃用,面板中已禁用。
透明代理/端口转发用,将入站流量直接转发到指定目标。
| 配置项 | 说明 |
|---|---|
| 目标地址 | 转发到的目标 IP 或域名 |
| 目标端口 | 转发到的目标端口 |
| 网络 | tcp, udp 或 tcp+udp |
标准代理协议,适合内网代理转发场景。
| 协议 | 说明 |
|---|---|
| SOCKS | 支持 UDP 转发、用户名密码认证 |
| HTTP | HTTP 代理,支持用户名密码认证 |
Telegram 专用代理协议,当前使用较少。
| 传输方式 | CDN 支持 | 性能 | 特点 |
|---|---|---|---|
tcp |
不支持 | 高 | 默认传输,最稳定 |
ws (WebSocket) |
支持 | 中 | CDN 中转首选 |
http (HTTP/2) |
部分支持 | 高 | 需 TLS,多路复用 |
grpc |
不支持 | 高 | 基于 HTTP/2,性能好 |
kcp (mKCP) |
不支持 | 丢包优 | UDP 传输,伪装可选 |
quic |
不支持 | 丢包优 | UDP 传输,自带加密 |
httpupgrade |
支持 | 高 | 类似 WS 但更高效 |
splithttp |
支持 | 高 | 分块 HTTP,并发传输 |
| 安全层 | 需要证书 | 抗检测 | 适用协议 |
|---|---|---|---|
none |
不需要 | 弱 | VMess(裸)、SS |
tls |
需要 | 强 | VMess、VLESS、Trojan、SS |
xtls |
需要 | 强 | VLESS、Trojan(仅 TCP) |
reality |
不需要 | 最强 | VLESS、Trojan(TCP/WS/gRPC 等) |
TLS 证书是多数协议的必要条件,有以下获取方式:
在 TLS 设置中点击「一键申请 SSL」,输入邮箱(可选),面板自动通过 ACME 申请 Let's Encrypt 免费证书。
前提条件:
- 域名已解析到服务器 IP
- 80 端口可访问(ACME HTTP 验证)
# 使用 acme.sh 申请
apt install socat -y
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --issue -d your.domain.com --standalone申请后在面板中填写证书路径:
- 公钥:
/root/.acme.sh/your.domain.com/fullchain.cer - 密钥:
/root/.acme.sh/your.domain.com/your.domain.com.key
安装 Caddy 作为前端反向代理,Caddy 自动申请和续期证书:
your.domain.com {
reverse_proxy /path 127.0.0.1:内部端口
}
最常见原因:入站配置了 TLS 但未填写证书路径。
- 检查日志:
x-ui log或journalctl -u x-ui -n 50 - 手动测试:
/usr/local/x-ui/bin/xray-linux-amd64 -c /usr/local/x-ui/bin/config.json - 如提示
failed to parse certificate,检查所有 TLS 入站的证书路径是否有效
- 确认 xray 正在运行:
x-ui status - 检查端口是否放行:
ss -tlnp | grep 端口号 - 检查防火墙:
ufw status或iptables -L -n
- 确认 dest 目标网站可正常访问
- 确认 serverName 与 dest 一致
- 确认 flow 设置为
xtls-rprx-vision - 确认 publicKey 在客户端正确配置
面板支持通过 Telegram Bot 做运行通知与流量提醒。可通过命令配置:
x-ui setting -tgbottoken '<bot_token>'
x-ui setting -tgbotchatid 123456789
x-ui setting -tgbotRuntime '@daily'Cron 表达式示例:
30 * * * * * 每分钟第 30 秒执行
@hourly 每小时执行
@daily 每天执行
@every 8h 每 8 小时执行
面板支持配置证书文件和密钥文件后以 HTTPS 方式访问。生产环境建议:
- 使用真实域名访问面板
- 配置有效 TLS 证书
- 修改默认端口和访问路径
- 仅允许可信 IP 访问管理端口
在已安装 v2-ui 的服务器上安装并启动 x-ui 后执行:
x-ui v2-ui该命令会迁移本机 v2-ui 的 inbound 账号数据;面板设置、用户名、密码不会迁移。
迁移完成后请停止 v2-ui 并重启 x-ui,避免 inbound 端口冲突。
格式化代码:
gofmt -w .运行测试/编译检查:
go test ./...本仓库当前已通过:
go test ./...
最新版本:v1.2.0
- 新增 TLS 证书固定(pinnedPeerCertSha256)配置,替代已弃用的 allowInsecure。
- VLESS/Trojan 订阅链接自动输出 pinPeerCertSha256 参数,客户端导入即启用证书固定。
- 更新 TLS 设置页告警,提示 Xray 2026.8.1 移除 allowInsecure 的截止时间与迁移路径。
- 重写系统状态、网络体检、入站管理和设置中心页面,提升日常运维效率。
- 新增 WARP/Endpoint、证书中心、任务中心、独立代理用户和订阅系统。
- 增强订阅安全:固定公开地址来源、访问日志去重清理、token 强度校验。
- 增加 Vue2/Ant Design Vue 模板安全测试,避免自闭合组件导致页面渲染异常。
- 完成本地与服务器端测试、构建、部署验证。
历史版本可在 GitHub Releases 查看。
config/ 项目名称、版本、日志与数据库路径配置
database/ SQLite/GORM 数据库初始化与模型
logger/ 日志封装
util/ 通用工具、随机数、系统信息工具
v2ui/ v2-ui 数据迁移逻辑
web/ Web 服务、控制器、页面模板、静态资源、任务调度
xray/ Xray 配置生成、进程管理、流量统计
bin/ Xray 二进制与 geoip/geosite 数据
本项目仅供学习、研究与合法合规的服务器管理场景使用。使用者应遵守所在地法律法规,并自行承担部署、配置及使用产生的风险。
本项目遵循仓库内 LICENSE 文件声明的许可证。