Home

Awesome

X-UI

An Advanced Web Panel • Built on Xray Core

Go Report Card Downloads License

Disclaimer: This project is only for personal learning and communication, please do not use it for illegal purposes, please do not use it in a production environment

If you think this project is helpful to you, you may wish to give a:star2:

"Buy Me A Coffee"

Quick Overview

FeaturesEnable?
Multi-Protocol:heavy_check_mark:
Multi-Language:heavy_check_mark:
Multi-Client/Inbound:heavy_check_mark:
Advanced Traffic Routing Interface:heavy_check_mark:
Client & Traffic & System Status:heavy_check_mark:
Date & Traffic Cap Based on First Use:heavy_check_mark:
REST API:heavy_check_mark:
TG Bot (DB backup + admin + client):heavy_check_mark:
Subscription Service (link + info):heavy_check_mark:
Search in Deep:heavy_check_mark:
Dark/Light Theme:heavy_check_mark:

Install & Upgrade to Latest Version

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

Install Legacy Version

Step 1: To install an old version, use following installation command. e.g., version 1.8.0:

VERSION=1.8.0 && bash <(curl -Ls "https://raw.githubusercontent.com/alireza0/x-ui/$VERSION/install.sh") $VERSION

Manual Install & Upgrade

<details> <summary>Click for details</summary>

Usage

  1. To download the latest version of the compressed package directly to your server, run the following command:
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" ;;
  *) XUI_ARCH="amd64" ;;
esac

wget https://github.com/alireza0/x-ui/releases/latest/download/x-ui-linux-${XUI_ARCH}.tar.gz
  1. Once the compressed package is downloaded, execute the following commands to install or upgrade x-ui:
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" ;;
  *) XUI_ARCH="amd64" ;;
esac
cd /root/
rm x-ui/ /usr/local/x-ui/ /usr/bin/x-ui -rf
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
</details>

Install using Docker

<details> <summary>Click for details</summary>

Usage

Step 1: Install Docker

curl -fsSL https://get.docker.com | sh

Step 2: Clone the Project Repository:

git clone https://github.com/alireza0/x-ui.git
cd x-ui

Step 3: Start the Service

docker compose up -d

OR

mkdir x-ui && cd x-ui
docker run -itd \
    -p 54321:54321 -p 443:443 -p 80:80 \
    -e XRAY_VMESS_AEAD_FORCED=false \
    -v $PWD/db/:/etc/x-ui/ \
    -v $PWD/cert/:/root/cert/ \
    --name x-ui --restart=unless-stopped \
    alireza7/x-ui:latest

update to latest version

 cd x-ui
 docker compose down
 docker compose pull x-ui
 docker compose up -d

remove x-ui from docker

 docker stop x-ui
 docker rm x-ui
 cd --
 rm -r x-ui

Build your own image

docker build -t x-ui .
</details>

Languages

Features

Recommended OS

Preview

inbounds Dark inbounds outbounds rules warp

API Routes

<details> <summary>Click for details</summary>

Usage

MethodPathAction
GET"/"Get all inbounds
GET"/get/:id"Get inbound with inbound.id
GET"/createbackup"Telegram bot sends backup to admins
POST"/add"Add inbound
POST"/del/:id"Delete inbound
POST"/update/:id"Update inbound
POST"/addClient/"Add client to inbound
POST"/:id/delClient/:clientId"Delete client by clientId*
POST"/updateClient/:clientId"Update client by clientId*
GET"/getClientTraffics/:email"Get client's traffic
GET"/getClientTrafficsById/:id"Get client's traffic By ID
POST"/:id/resetClientTraffic/:email"Reset client's traffic
POST"/resetAllTraffics"Reset traffics of all inbounds
POST"/resetAllClientTraffics/:id"Reset inbound clients traffics (-1: all)
POST"/delDepletedClients/:id"Delete inbound depleted clients (-1: all)
POST"/onlines"Get online users ( list of emails )

*- The field clientId should be filled by:

</details>

Environment Variables

<details> <summary>Click for details</summary>

Usage

VariableTypeDefault
XUI_LOG_LEVEL"debug" | "info" | "warn" | "error""info"
XUI_DEBUGbooleanfalse
XUI_BIN_FOLDERstring"bin"
XUI_DB_FOLDERstring"/etc/x-ui"
</details>

SSL Certificate

<details> <summary>Click for details</summary>

Cloudflare

The admin management script has a built-in SSL certificate application for Cloudflare. To use this script to apply for a certificate, you need the following:

Step 1: Run thex-uicommand on the server's terminal and then choose 17. Then enter the information as requested.

Certbot

snap install core; snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

certbot certonly --standalone --register-unsafely-without-email --non-interactive --agree-tos -d <Your Domain Name>
</details>

Telegram Bot

<details> <summary>Click for details</summary>

Usage

The web panel supports daily traffic, panel login, database backup, system status, client info, and other notification and functions through the Telegram Bot. To use the bot, you need to set the bot-related parameters in the panel, including:

Crontab Time Format

Reference syntax:

For more info about Crontab

Features

</details>

Troubleshoots

<details> <summary>Click for details</summary>

Enable Traffic Usage

If you are upgrading from an older version or other forks and find that data traffic usage for clients may not work by default, follow the steps below to enable it:

Step 1: Locate the Configuration Section

Find the following section in the config file:

  "policy": {
    "system": {
      // Other policy configurations
    }
  },

Step 2: Add the Required Configuration

Add the following section just after "policy": {:

"levels": {
  "0": {
    "statsUserUplink": true,
    "statsUserDownlink": true
  }
},

Step 3: Final Configuration

Your final config should look like this:

"policy": {
  "levels": {
    "0": {
      "statsUserUplink": true,
      "statsUserDownlink": true
    }
  },
  "system": {
    "statsInboundDownlink": true,
    "statsInboundUplink": true
  }
},
"routing": {
  // Other routing configurations
},

Step 4: Save and Restart

Save your changes and restart the Xray Service

</details>

A Special Thanks to

Acknowledgment

Stargazers over Time

Stargazers over time