Skip to content

Repository files navigation

x-ui

Release Go

x-ui 是一个基于 Go + Gin + Xray-core 的轻量级 Web 管理面板,面向 Linux 服务器部署,提供 Xray 入站配置、用户管理、流量统计、运行状态监控、HTTPS 面板访问、Telegram 通知与 v2-ui 数据迁移等能力。

本仓库基于原 x-ui 项目整理维护,并补充了安全加固,专注 Linux 服务器部署。

当前版本:v1.2.0

项目特性

  • Web 可视化管理 Xray 入站配置
  • 支持多用户、多协议、多传输方式
  • 支持协议:vmessvlesstrojanshadowsocksdokodemo-doorsockshttp
  • 额外协议(需自定义 xray-core,集成 ):tuichysteria2anytls
  • 支持 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 增加 HttpOnlySameSite=Lax,HTTPS 下自动启用 Secure
  • 注销时清理会话 Cookie
  • 对跨站写操作增加 Origin/Referer 同源校验
  • 限制客户端 IP 获取的信任边界,避免直接信任伪造的代理头
  • 对 WebBasePath、入站配置等关键输入增加基础校验
  • 公开订阅链接不再信任请求 Host,支持配置订阅公开地址
  • 订阅访问日志增加重复访问抑制和保留清理策略
  • 代理用户订阅 token 增加强度校验
  • Xray 运行配置文件使用更严格的文件权限写入

注意:该项目用于服务器代理面板管理,部署后请务必使用强密码、限制管理端口访问来源,并优先启用 HTTPS。

运行环境

服务端部署

推荐系统:

  • Debian 8+
  • Ubuntu 16+
  • CentOS 7+

支持架构以发布包为准,常见为:amd64arm64

本地开发

  • 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 -v

Docker 构建

docker 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

安装到 Linux 服务器

一键安装/更新

推荐使用当前仓库的一键安装命令:

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

手动安装 Release 包

手动安装流程示例:

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 内网代理转发 ★☆☆☆☆

1. VLESS + Reality(推荐首选)

最推荐的协议组合,无需域名和 TLS 证书,通过模拟访问真实网站实现抗检测。

面板配置步骤

  1. 协议 选择 vless
  2. 端口443(增强伪装效果)
  3. id 保持默认的 UUID 即可
  4. 传输 选择 tcp
  5. reality 开关 打开
  6. 开启 reality 后会展开 Reality 设置区域:
    • dest:填写 www.amazon.com:443(回落目标,选择支持 TLS 1.3 和 H2 的大站)
    • serverNames:输入 www.amazon.com(与 dest 保持一致,回车添加)
    • privateKey / publicKey:点击输入框右侧的 🔄 按钮一键生成密钥对
    • shortIds:留空或输入随机十六进制字符串(回车添加)
    • fingerprint:选择 chrome
  7. flow 选择 xtls-rprx-vision(开启 reality 后 flow 选项会显示在 id 下方)

重要:flow 必须设置 xtls-rprx-vision,否则 Reality 的安全优势无法体现

推荐的 serverName/dest 目标网站

选择标准:支持 TLS 1.3 + H2 的国外大站

  • www.amazon.com
  • www.ebay.com
  • www.paypal.com
  • www.cloudflare.com
  • dash.cloudflare.com
  • aws.amazon.com
  • www.microsoft.com
  • www.apple.com

注意事项

  • dest 和 serverNames 必须指向同一个真实网站
  • 无需申请 TLS 证书
  • privateKey 是服务端私钥,publicKey 是客户端公钥(分享链接自动包含)

2. VLESS + TLS + WS(有域名推荐)

适合有域名和 TLS 证书的场景,WebSocket 传输支持 CDN 中转。

面板配置

配置项 推荐值 说明
协议 vless
端口 443
传输 ws WebSocket
安全 tls 开启 TLS
域名 your.domain.com 填写你的域名
路径 /随机路径 建议 UUID 格式的路径,如 /{uuid}
证书 文件路径或内容 可使用 ACME 一键申请

CDN 中转配置

  1. 将域名解析到 CDN(如 Cloudflare),开启代理(橙色云朵)
  2. Cloudflare → SSL/TLS → 设为 Full 或 Full (Strict)
  3. 面板中 TLS 域名填写你的域名
  4. 客户端连接地址使用域名,端口 443

3. VLESS + TLS + gRPC

适合有域名和证书的场景,gRPC 基于 HTTP/2,性能优秀。

面板配置

配置项 推荐值 说明
协议 vless
端口 443
传输 grpc
安全 tls
serviceName 随机字符串 gRPC 服务名,建议使用 UUID
域名 your.domain.com

4. VMess + WS + TLS(经典方案)

最经典稳定的方案,客户端兼容性最好。

面板配置

配置项 推荐值 说明
协议 vmess
端口 443
传输 ws
安全 tls
UUID 自动生成
alterId 0 必须为 0(AEAD 加密)
加密 auto 客户端自动协商
域名 your.domain.com
路径 /随机路径

注意事项

  • alterId 必须为 0,否则使用不安全的旧加密方式
  • 建议勾选「禁用不安全加密」

5. Trojan + TLS

配置简单,协议本身基于 TLS,伪装性好。

面板配置

配置项 推荐值 说明
协议 trojan
端口 443
传输 tcp Trojan 默认 TCP
安全 tls(自动开启) Trojan 协议强制 TLS
密码 自动生成
域名 your.domain.com
证书 文件路径或内容 必须配置有效证书

重要提醒

  • Trojan 必须配置有效的 TLS 证书,否则 xray 无法启动
  • 如无证书,可使用面板内置的「一键申请 SSL」功能(ACME)
  • 也可通过 Caddy/Nginx 反向代理实现自动证书管理

6. Shadowsocks

经典轻量代理协议,兼容性最好。

面板配置

配置项 推荐值 说明
协议 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)已被弃用,面板中已禁用。


7. 其他协议

Dokodemo-door(任意门)

透明代理/端口转发用,将入站流量直接转发到指定目标。

配置项 说明
目标地址 转发到的目标 IP 或域名
目标端口 转发到的目标端口
网络 tcp, udp 或 tcp+udp

SOCKS / HTTP

标准代理协议,适合内网代理转发场景。

协议 说明
SOCKS 支持 UDP 转发、用户名密码认证
HTTP HTTP 代理,支持用户名密码认证

MTProto

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 证书是多数协议的必要条件,有以下获取方式:

方式一:面板 ACME 一键申请

在 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 作为前端反向代理,Caddy 自动申请和续期证书:

your.domain.com {
    reverse_proxy /path 127.0.0.1:内部端口
}

常见问题

xray 状态显示"未运行"

最常见原因:入站配置了 TLS 但未填写证书路径

  1. 检查日志:x-ui logjournalctl -u x-ui -n 50
  2. 手动测试:/usr/local/x-ui/bin/xray-linux-amd64 -c /usr/local/x-ui/bin/config.json
  3. 如提示 failed to parse certificate,检查所有 TLS 入站的证书路径是否有效

连接超时

  1. 确认 xray 正在运行:x-ui status
  2. 检查端口是否放行:ss -tlnp | grep 端口号
  3. 检查防火墙:ufw statusiptables -L -n

Reality 连接失败

  1. 确认 dest 目标网站可正常访问
  2. 确认 serverName 与 dest 一致
  3. 确认 flow 设置为 xtls-rprx-vision
  4. 确认 publicKey 在客户端正确配置

Telegram Bot 通知

面板支持通过 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 与证书

面板支持配置证书文件和密钥文件后以 HTTPS 方式访问。生产环境建议:

  1. 使用真实域名访问面板
  2. 配置有效 TLS 证书
  3. 修改默认端口和访问路径
  4. 仅允许可信 IP 访问管理端口

从 v2-ui 迁移

在已安装 v2-ui 的服务器上安装并启动 x-ui 后执行:

x-ui v2-ui

该命令会迁移本机 v2-ui 的 inbound 账号数据;面板设置、用户名、密码不会迁移。

迁移完成后请停止 v2-ui 并重启 x-ui,避免 inbound 端口冲突。

开发与检查

格式化代码:

gofmt -w .

运行测试/编译检查:

go test ./...

本仓库当前已通过:

go test ./...

Releases

最新版本:v1.2.0

v1.2.0

  • 新增 TLS 证书固定(pinnedPeerCertSha256)配置,替代已弃用的 allowInsecure。
  • VLESS/Trojan 订阅链接自动输出 pinPeerCertSha256 参数,客户端导入即启用证书固定。
  • 更新 TLS 设置页告警,提示 Xray 2026.8.1 移除 allowInsecure 的截止时间与迁移路径。

v1.1.0

  • 重写系统状态、网络体检、入站管理和设置中心页面,提升日常运维效率。
  • 新增 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

本项目遵循仓库内 LICENSE 文件声明的许可证。

About

x-ui 是一个基于 Go + Gin + Xray-core 的轻量级 Web 管理面板,面向 Linux 服务器部署,提供 Xray 入站配置、用户管理、流量统计、运行状态监控、HTTPS 面板访问、Telegram 通知与 v2-ui 数据迁移等能力。

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages