.github | ||
config | ||
database | ||
logger | ||
media | ||
sub | ||
util | ||
web | ||
xray | ||
.gitignore | ||
acme.sh | ||
docker-compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
install.sh | ||
LICENSE | ||
main.go | ||
README.md | ||
x-ui.service | ||
x-ui.sh |
x-ui
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
Install & Upgrade
bash <(curl -Ls https://raw.githubusercontent.com/quydang04/x-ui/master/install.sh)
SSL
apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
certbot renew --dry-run
You also can use x-ui
menu then select SSL Certificate Management
Manual Install & Upgrade
Click for Manual Install details
- To download the latest version of the compressed package directly to your server, run the following command:
ARCH=$(uname -m)
[[ "${ARCH}" == "aarch64" || "${ARCH}" == "arm64" ]] && XUI_ARCH="arm64" || XUI_ARCH="amd64"
wget https://github.com/quydang04/x-ui/releases/latest/download/x-ui-linux-${XUI_ARCH}.tar.gz
- Once the compressed package is downloaded, execute the following commands to install or upgrade x-ui:
ARCH=$(uname -m)
[[ "${ARCH}" == "aarch64" || "${ARCH}" == "arm64" ]] && XUI_ARCH="arm64" || XUI_ARCH="amd64"
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
Install with Docker
Click for Docker details
-
Install Docker:
bash <(curl -sSL https://get.docker.com)
-
Clone the Project Repository:
git clone https://github.com/quydang04/x-ui.git cd x-ui
-
Start the Service
docker compose up -d
OR
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/quydang04/x-ui:latest
Default settings
Click for Default settings details
- Port: 2053
- username and password will be generated randomly if you skip to modify your own security(x-ui "7")
- database path: /etc/x-ui/x-ui.db
- xray config path: /usr/local/x-ui/bin/config.json
Before you set ssl on settings
After you set ssl on settings
Xray Configurations:
Click for Xray Configurations details
copy and paste to xray Configuration : (you don't need to do this if you have a fresh install)
WARP Configuration (Optional)
Click for WARP Configuration details
If you want to use routing to WARP follow steps as below:
-
If you already installed warp, you can uninstall using below command:
warp u
-
Install WARP on socks proxy mode:
bash <(curl -sSL https://raw.githubusercontent.com/hamid-gh98/x-ui-scripts/main/install_warp_proxy.sh)
-
Turn on the config you need in panel or Copy and paste this file to Xray Configuration
Config Features:
- Block Ads
- Route Google + Netflix + Spotify + OpenAI (ChatGPT) to WARP
- Fix Google 403 error
IP Limit
Click for IP Limit details
Note: IP Limit won't work correctly when using IP Tunnel
-
For versions up to
v1.6.1
:- IP limit is built-in into the panel.
-
For versions
v1.7.0
and newer:-
To make IP Limit work properly, you need to install fail2ban and its required files by following these steps:
- Use the
x-ui
command inside the shell. - Select
IP Limit Management
. - Choose the appropriate options based on your needs.
- Use the
-
Telegram Bot
Click for Telegram Bot details
X-UI supports daily traffic notification, panel login reminder and other functions through the Tg robot. To use the Tg robot, you need to apply for the specific application tutorial. You can refer to the blog Set the robot-related parameters in the panel background, including:
- Tg robot Token
- Tg robot ChatId
- Tg robot cycle runtime, in crontab syntax
- Tg robot Expiration threshold
- Tg robot Traffic threshold
- Tg robot Enable send backup in cycle runtime
- Tg robot Enable CPU usage alarm threshold
Reference syntax:
- 30 * * * * * //Notify at the 30s of each point
- 0 */10 * * * * //Notify at the first second of each 10 minutes
- @hourly // hourly notification
- @daily // Daily notification (00:00 in the morning)
- @weekly // weekly notification
- @every 8h // notify every 8 hours
Telegram Bot Features
- Report periodic
- Login notification
- CPU threshold notification
- Threshold for Expiration time and Traffic to report in advance
- Support client report menu if client's telegram username added to the user's configurations
- Support telegram traffic report searched with UUID (VMESS/VLESS) or Password (TROJAN) - anonymously
- Menu based bot
- Search client by email ( only admin )
- Check all inbounds
- Check server status
- Check depleted users
- Receive backup by request and in periodic reports
- Multi language bot
A Special Thanks To
Suggestion System
- Ubuntu 20.04+
- Debian 10+
- CentOS 7+
- Fedora 30+