3X-UI面板

【零基础】一键搭建3X-UI面板,目前最简单、最安全、最稳定的专属节点搭建方法

为了应对 TLS in TLS 和指纹识别等阻断或封禁的风险,Xray-core 团队推出了 VLESS Vision 和 VLESS Reality 两种新颖的技术方案。它们能够有效地隐藏和保护流量的特征,提高安全性和稳定性。

免责声明

仅供交流学习使用!使用者在使用时,必须遵守当地法律和规定。使用者有责任确保他们的行为符合其所在地区的法律、规章以及其他适用的规定。

一、准备工作

1.一台境外VPS主流系统,例如:Debian/Ubuntu/CentOS

  • 自行购买,目前便宜的VPS是:CC家的VPS (暂时不推荐购买)
  • 注意:注册好账号的话,可以先不购买,每周CC会发优惠信息到邮箱里,那里买更实惠
  • Vultr VPS 购买地址:官网地址
  • 好处:Vultr是按时计费,不用了可以随时删除服务器就停止收费了(一般都是测试使用),最低5$/月。
  • 想买好的VPS的话,建议搜索搬瓦工CN2 GIA线路(49.99$/年),长期处于售馨状态(贵有贵的道理)
  • 搬瓦工官网:https://bandwagonhost.com

2. 下载并安装FinalShell SSH工具

3. 解析到Cloudflare域名一个(必须)

  • 大家自行注册域名
  • 国内域名注册商:腾讯云、阿里云、华为云等
  • 优缺点:便宜,但需要实名
  • 国外域名注册商:name、GoDaddy、Spaceship、Porkbun等
  • 优缺点:注册简单、无需实名,支付方式可能麻烦
  • 可以去这个网站比较所有顶级域名的价格

4. V2ray相关链接

二、搭建步骤

1. 安装更新运行环境

下面环境的安装方式,大家根据自己的系统选择命令安装就好了。

1.1. Debian/Ubuntu系统(二选一)

1
apt update -y && apt install -y curl && apt install -y socat
1
apt update -y && apt install curl wget -y

1.2. CentOS系统(二选一)

1
yum update -y && yum update -y && yum install -y socat
1
yum update -y && yum install curl wget -y

2. 安装 3X-UI 面板

安装 3X-UI 面板(项目地址

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

3. 设置用户名和密码,还有端口号

  • 3XUI会自动生成“用户名”、密码和登录面板路径

4. 3X-UI 管理面板设置

3X-UI 管理面板设置

  • 申请证书,输入命令“x-ui”,选择申请“SSL 证书(18)”
  • 选择一个已经在Cloudflare解析的域名,输入进去“你的域名”

三、官方文档

SSL证书

点击查看SSL证书详情

ACME

使用ACME管理SSL证书:

  1. 确保您的域名正确解析到服务器。

  2. 在终端中运行 x-ui 命令,然后选择 SSL证书管理

  3. 您将看到以下选项:

    • Get SSL: 获取SSL证书。
    • Revoke: 吊销现有的SSL证书。
    • Force Renew: 强制更新SSL证书。
    • Show Existing Domains: 显示服务器上所有可用的域证书。
    • Set Certificate Paths for the Panel: 指定用于面板的域证书。

Certbot

安装并使用Certbot:

1
2
3
apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
certbot renew --dry-run

Cloudflare

管理脚本内置了Cloudflare的SSL证书申请。要使用此脚本申请证书,您需要以下信息:

  • Cloudflare注册的电子邮件
  • Cloudflare全局API密钥
  • 域名必须通过Cloudflare解析到当前服务器

如何获取Cloudflare全局API密钥:

  1. 在终端中运行 x-ui 命令,然后选择 Cloudflare SSL证书
  2. 访问链接:Cloudflare API Tokens
  3. 点击“查看全局API密钥”(参见下图):
  4. 您可能需要重新验证您的账户。之后将显示API密钥(参见下图):

使用时,只需输入您的 域名电子邮件API密钥。如下图所示:

手动安装 & 升级

点击查看 手动安装 & 升级

使用

  1. 若要将最新版本的压缩包直接下载到服务器,请运行以下命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
ARCH=$(uname -m)
case "${ARCH}" in
x86_64 | x64 | amd64) XUI_ARCH="amd64" ;;
i*86 | x86) XUI_ARCH="386" ;;
armv8* | armv8 | arm64 | aarch64) XUI_ARCH="arm64" ;;
armv7* | armv7) XUI_ARCH="armv7" ;;
armv6* | armv6) XUI_ARCH="armv6" ;;
armv5* | armv5) XUI_ARCH="armv5" ;;
*) XUI_ARCH="amd64" ;;
esac


wget https://github.com/MHSanaei/3x-ui/releases/latest/download/x-ui-linux-${XUI_ARCH}.tar.gz
  1. 下载压缩包后,执行以下命令安装或升级 x-ui:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ARCH=$(uname -m)
case "${ARCH}" in
x86_64 | x64 | amd64) XUI_ARCH="amd64" ;;
i*86 | x86) XUI_ARCH="386" ;;
armv8* | armv8 | arm64 | aarch64) XUI_ARCH="arm64" ;;
armv7* | armv7) XUI_ARCH="armv7" ;;
armv6* | armv6) XUI_ARCH="armv6" ;;
armv5* | armv5) XUI_ARCH="armv5" ;;
*) XUI_ARCH="amd64" ;;
esac

cd /root/
rm -rf x-ui/ /usr/local/x-ui/ /usr/bin/x-ui
tar zxvf x-ui-linux-${XUI_ARCH}.tar.gz
chmod +x x-ui/x-ui x-ui/bin/xray-linux-* x-ui/x-ui.sh
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

通过Docker安装

点击查看 通过Docker安装

使用

  1. 安装Docker:

    1
    bash <(curl -sSL https://get.docker.com)
  2. 克隆仓库:

    1
    2
    git clone https://github.com/MHSanaei/3x-ui.git
    cd 3x-ui
  3. 运行服务:

    1
    docker compose up -d

    1
    2
    3
    4
    5
    6
    7
    8
    docker run -itd \
    -e XRAY_VMESS_AEAD_FORCED=false \
    -v $PWD/db/:/etc/x-ui/ \
    -v $PWD/cert/:/root/cert/ \
    --network=host \
    --restart=unless-stopped \
    --name 3x-ui \
    ghcr.io/mhsanaei/3x-ui:latest

更新至最新版本

1
2
3
4
cd 3x-ui
docker compose down
docker compose pull 3x-ui
docker compose up -d

从Docker中删除3x-ui

1
2
3
4
docker stop 3x-ui
docker rm 3x-ui
cd --
rm -r 3x-ui

Nginx 设置

点击查看 反向代理配置

Nginx反向代理

1
2
3
4
5
6
7
8
9
10
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:2053;
}

Nginx子路径

  • 确保 /sub 面板设置中的”面板url根路径”一致
  • 面板设置中的 url 需要以 / 结尾
1
2
3
4
5
6
7
8
9
10
location /sub {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:2053;
}

Features

  • 系统状态监控
  • 在所有入站和客户端中搜索
  • 深色/浅色主题
  • 支持多用户和多协议
  • 支持多种协议,包括 VMess、VLESS、Trojan、Shadowsocks、Dokodemo-door、Socks、HTTP、wireguard
  • 支持 XTLS 原生协议,包括 RPRX-Direct、Vision、REALITY
  • 流量统计、流量限制、过期时间限制
  • 可自定义的 Xray配置模板
  • 支持HTTPS访问面板(自建域名+SSL证书)
  • 支持一键式SSL证书申请和自动续费
  • 更多高级配置项目请参考面板
  • 修复了 API 路由(用户设置将使用 API 创建)
  • 支持通过面板中提供的不同项目更改配置。
  • 支持从面板导出/导入数据库

默认面板设置

点击查看默认设置详情

用户名、密码、端口和 Web Base Path

如果您选择不修改这些设置,它们将随机生成(不适用于 Docker)。

Docker 的默认设置:

  • 用户名: admin
  • 密码: admin
  • 端口: 2053

数据库管理:

您可以直接在面板中方便地进行数据库备份和还原。

  • 数据库路径:
    • /etc/x-ui/x-ui.db

Web 基础路径

  1. 重置 Web 基础路径:

    • 打开终端。
    • 运行 x-ui 命令。
    • 选择 重置 Web 基础路径 选项。
  2. 生成或自定义路径:

    • 路径将会随机生成,或者您可以输入自定义路径。
  3. 查看当前设置:

    • 要查看当前设置,请在终端中使用 x-ui settings 命令,或在 x-ui 面板中点击 查看当前设置

安全建议:

  • 为了提高安全性,建议在URL结构中使用一个长的随机词。

示例:

  • http://ip:port/*webbasepath*/panel
  • http://domain:port/*webbasepath*/panel

WARP 配置

点击查看 WARP 配置详情

使用方法

对于 v2.1.0 及之后的版本:

WARP 已内置,无需额外安装。只需在面板中开启相关配置即可。

IP 限制

点击查看 IP 限制详情

使用方法

注意: 当使用 IP 隧道时,IP 限制将无法正常工作。

  • 对于 v1.6.1 及之前的版本:
    • IP 限制功能已内置于面板中。

对于 v1.7.0 及更新的版本:

要启用 IP 限制功能,您需要安装 fail2ban 及其所需的文件,步骤如下:

  1. 在终端中运行 x-ui 命令,然后选择 IP 限制管理

  2. 您将看到以下选项:

    • 更改封禁时长: 调整封禁时长。
    • 解除所有封禁: 解除当前的所有封禁。
    • 查看日志: 查看日志。
    • Fail2ban 状态: 检查 fail2ban 的状态。
    • 重启 Fail2ban: 重启 fail2ban 服务。
    • 卸载 Fail2ban: 卸载带有配置的 Fail2ban。
  3. 在面板中通过设置 Xray 配置/log/访问日志./access.log 添加访问日志路径,然后保存并重启 Xray。

  • 对于 v2.1.3 之前的版本:

    • 您需要在 Xray 配置中手动设置访问日志路径:

      1
      2
      3
      4
      5
      "log": {
      "access": "./access.log",
      "dnsLog": false,
      "loglevel": "warning"
      },
  • 对于 v2.1.3 及之后的版本:

    • 面板中直接提供了配置 access.log 的选项。

Telegram 机器人

点击查看 Telegram 机器人

使用

Web 面板通过 Telegram Bot 支持每日流量、面板登录、数据库备份、系统状态、客户端信息等通知和功能。要使用机器人,您需要在面板中设置机器人相关参数,包括:

  • 电报令牌
  • 管理员聊天 ID
  • 通知时间(cron 语法)
  • 到期日期通知
  • 流量上限通知
  • 数据库备份
  • CPU 负载通知

参考:

  • 30 \* \* \* \* \* - 在每个点的 30 秒处通知
  • 0 \*/10 \* \* \* \* - 每 10 分钟的第一秒通知
  • @hourly - 每小时通知
  • @daily - 每天通知 (00:00)
  • @weekly - 每周通知
  • @every 8h - 每8小时通知

Telegram Bot 功能

  • 定期报告
  • 登录通知
  • CPU 阈值通知
  • 提前报告的过期时间和流量阈值
  • 如果将客户的电报用户名添加到用户的配置中,则支持客户端报告菜单
  • 支持使用UUID(VMESS/VLESS)或密码(TROJAN)搜索报文流量报告 - 匿名
  • 基于菜单的机器人
  • 通过电子邮件搜索客户端(仅限管理员)
  • 检查所有入库
  • 检查服务器状态
  • 检查耗尽的用户
  • 根据请求和定期报告接收备份
  • 多语言机器人

注册 Telegram bot

  • Botfather 对话:
    Botfather

  • 使用 /newbot 创建新机器人:你需要提供机器人名称以及用户名,注意名称中末尾要包含“bot”
    创建机器人

  • 启动您刚刚创建的机器人。可以在此处找到机器人的链接。
    令牌

  • 输入您的面板并配置 Telegram 机器人设置,如下所示:
    面板设置

在输入字段编号 3 中输入机器人令牌。
在输入字段编号 4 中输入用户 ID。具有此 id 的 Telegram 帐户将是机器人管理员。 (您可以输入多个,只需将它们用“ ,”分开即可)

  • 如何获取TG ID? 使用 bot, 启动机器人,它会给你 Telegram 用户 ID。
    用户 ID

API 路由

点击查看 API 路由

使用

  • API 文档
  • /login 使用 POST 用户名称 & 密码: {username: '', password: ''} 登录
  • /panel/api/inbounds 以下操作的基础:
方法 路径 操作
GET "/list" 获取所有入站
GET "/get/:id" 获取所有入站以及inbound.id
GET "/getClientTraffics/:email" 通过电子邮件获取客户端流量
GET "/createbackup" Telegram 机器人向管理员发送备份
POST "/add" 添加入站
POST "/del/:id" 删除入站
POST "/update/:id" 更新入站
POST "/clientIps/:email" 客户端 IP 地址
POST "/clearClientIps/:email" 清除客户端 IP 地址
POST "/addClient" 将客户端添加到入站
POST "/:id/delClient/:clientId" 通过 clientId* 删除客户端
POST "/updateClient/:clientId" 通过 clientId* 更新客户端
POST "/:id/resetClientTraffic/:email" 重置客户端的流量
POST "/resetAllTraffics" 重置所有入站的流量
POST "/resetAllClientTraffics/:id" 重置入站中所有客户端的流量
POST "/delDepletedClients/:id" 删除入站耗尽的客户端 (-1: all)
POST "/onlines" 获取在线用户 ( 电子邮件列表 )

*- clientId 项应该使用下列数据

  • client.id VMESS and VLESS

  • client.password TROJAN

  • client.email Shadowsocks

  • Run In Postman

环境变量

点击查看 环境变量

Usage

变量 Type 默认
XUI_LOG_LEVEL "debug" | "info" | "warn" | "error" "info"
XUI_DEBUG boolean false
XUI_BIN_FOLDER string "bin"
XUI_DB_FOLDER string "/etc/x-ui"
XUI_LOG_FOLDER string "/var/log"

例子:

1
XUI_BIN_FOLDER="bin" XUI_DB_FOLDER="/etc/x-ui" go build main.go

v2rayNG各平台客户端

Windows(v2rayN):地址

Android(v2rayNG):地址

IOS小火箭(shadowrocket):地址