mirror of
https://github.com/alireza0/x-ui.git
synced 2026-03-14 05:23:09 +00:00
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
@@ -50,6 +50,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm64/v8, linux/arm/v7, linux/386
|
platforms: linux/amd64, linux/arm64/v8, linux/arm/v7, linux/arm/v6, linux/386
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|||||||
33
.github/workflows/release.yml
vendored
33
.github/workflows/release.yml
vendored
@@ -14,7 +14,10 @@ jobs:
|
|||||||
- amd64
|
- amd64
|
||||||
- arm64
|
- arm64
|
||||||
- armv7
|
- armv7
|
||||||
|
- armv6
|
||||||
|
- armv5
|
||||||
- 386
|
- 386
|
||||||
|
- s390x
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
@@ -32,8 +35,14 @@ jobs:
|
|||||||
sudo apt install gcc-aarch64-linux-gnu
|
sudo apt install gcc-aarch64-linux-gnu
|
||||||
elif [ "${{ matrix.platform }}" == "armv7" ]; then
|
elif [ "${{ matrix.platform }}" == "armv7" ]; then
|
||||||
sudo apt install gcc-arm-linux-gnueabihf
|
sudo apt install gcc-arm-linux-gnueabihf
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv6" ]; then
|
||||||
|
sudo apt install gcc-arm-linux-gnueabihf
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv5" ]; then
|
||||||
|
sudo apt install gcc-arm-linux-gnueabi
|
||||||
elif [ "${{ matrix.platform }}" == "386" ]; then
|
elif [ "${{ matrix.platform }}" == "386" ]; then
|
||||||
sudo apt install gcc-i686-linux-gnu
|
sudo apt install gcc-i686-linux-gnu
|
||||||
|
elif [ "${{ matrix.platform }}" == "s390x" ]; then
|
||||||
|
sudo apt install gcc-s390x-linux-gnu
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build x-ui
|
- name: Build x-ui
|
||||||
@@ -48,10 +57,22 @@ jobs:
|
|||||||
export GOARCH=arm
|
export GOARCH=arm
|
||||||
export GOARM=7
|
export GOARM=7
|
||||||
export CC=arm-linux-gnueabihf-gcc
|
export CC=arm-linux-gnueabihf-gcc
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv6" ]; then
|
||||||
|
export GOARCH=arm
|
||||||
|
export GOARM=6
|
||||||
|
export CC=arm-linux-gnueabihf-gcc
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv5" ]; then
|
||||||
|
export GOARCH=arm
|
||||||
|
export GOARM=5
|
||||||
|
export CC=arm-linux-gnueabi-gcc
|
||||||
elif [ "${{ matrix.platform }}" == "386" ]; then
|
elif [ "${{ matrix.platform }}" == "386" ]; then
|
||||||
export GOARCH=386
|
export GOARCH=386
|
||||||
export CC=i686-linux-gnu-gcc
|
export CC=i686-linux-gnu-gcc
|
||||||
|
elif [ "${{ matrix.platform }}" == "s390x" ]; then
|
||||||
|
export GOARCH=s390x
|
||||||
|
export CC=s390x-linux-gnu-gcc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
go build -o xui-release -v main.go
|
go build -o xui-release -v main.go
|
||||||
|
|
||||||
mkdir x-ui
|
mkdir x-ui
|
||||||
@@ -76,10 +97,22 @@ jobs:
|
|||||||
wget ${Xray_URL}Xray-linux-arm32-v7a.zip
|
wget ${Xray_URL}Xray-linux-arm32-v7a.zip
|
||||||
unzip Xray-linux-arm32-v7a.zip
|
unzip Xray-linux-arm32-v7a.zip
|
||||||
rm -f Xray-linux-arm32-v7a.zip
|
rm -f Xray-linux-arm32-v7a.zip
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv6" ]; then
|
||||||
|
wget ${Xray_URL}Xray-linux-arm32-v6.zip
|
||||||
|
unzip Xray-linux-arm32-v6.zip
|
||||||
|
rm -f Xray-linux-arm32-v6.zip
|
||||||
|
elif [ "${{ matrix.platform }}" == "armv5" ]; then
|
||||||
|
wget ${Xray_URL}Xray-linux-arm32-v5.zip
|
||||||
|
unzip Xray-linux-arm32-v5.zip
|
||||||
|
rm -f Xray-linux-arm32-v5.zip
|
||||||
elif [ "${{ matrix.platform }}" == "386" ]; then
|
elif [ "${{ matrix.platform }}" == "386" ]; then
|
||||||
wget ${Xray_URL}Xray-linux-32.zip
|
wget ${Xray_URL}Xray-linux-32.zip
|
||||||
unzip Xray-linux-32.zip
|
unzip Xray-linux-32.zip
|
||||||
rm -f Xray-linux-32.zip
|
rm -f Xray-linux-32.zip
|
||||||
|
elif [ "${{ matrix.platform }}" == "s390x" ]; then
|
||||||
|
wget ${Xray_URL}Xray-linux-s390x.zip
|
||||||
|
unzip Xray-linux-s390x.zip
|
||||||
|
rm -f Xray-linux-s390x.zip
|
||||||
fi
|
fi
|
||||||
rm -f geoip.dat geosite.dat
|
rm -f geoip.dat geosite.dat
|
||||||
wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
|
wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -188,10 +188,18 @@ docker build -t x-ui .
|
|||||||
|
|
||||||
## Recommended OS
|
## Recommended OS
|
||||||
|
|
||||||
|
- Ubuntu 20.04+
|
||||||
|
- Debian 11+
|
||||||
- CentOS 8+
|
- CentOS 8+
|
||||||
- Ubuntu 20+
|
|
||||||
- Debian 10+
|
|
||||||
- Fedora 36+
|
- Fedora 36+
|
||||||
|
- Arch Linux
|
||||||
|
- Parch Linux
|
||||||
|
- Manjaro
|
||||||
|
- Armbian
|
||||||
|
- AlmaLinux 9+
|
||||||
|
- Rocky Linux 9+
|
||||||
|
- Oracle Linux 8+
|
||||||
|
- OpenSUSE Tubleweed
|
||||||
|
|
||||||
## Preview
|
## Preview
|
||||||
|
|
||||||
|
|||||||
64
install.sh
64
install.sh
@@ -29,46 +29,90 @@ arch() {
|
|||||||
i*86 | x86) echo '386' ;;
|
i*86 | x86) echo '386' ;;
|
||||||
armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;;
|
armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;;
|
||||||
armv7* | armv7 | arm) echo 'armv7' ;;
|
armv7* | armv7 | arm) echo 'armv7' ;;
|
||||||
|
armv6* | armv6) echo 'armv6' ;;
|
||||||
|
armv5* | armv5) echo 'armv5' ;;
|
||||||
|
s390x) echo 's390x' ;;
|
||||||
*) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;;
|
*) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "arch: $(arch)"
|
echo "arch: $(arch)"
|
||||||
|
|
||||||
os_version=""
|
os_version=""
|
||||||
os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1)
|
os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1)
|
||||||
|
|
||||||
if [[ "${release}" == "centos" ]]; then
|
if [[ "${release}" == "arch" ]]; then
|
||||||
|
echo "Your OS is Arch Linux"
|
||||||
|
elif [[ "${release}" == "parch" ]]; then
|
||||||
|
echo "Your OS is Parch linux"
|
||||||
|
elif [[ "${release}" == "manjaro" ]]; then
|
||||||
|
echo "Your OS is Manjaro"
|
||||||
|
elif [[ "${release}" == "armbian" ]]; then
|
||||||
|
echo "Your OS is Armbian"
|
||||||
|
elif [[ "${release}" == "opensuse-tumbleweed" ]]; then
|
||||||
|
echo "Your OS is OpenSUSE Tumbleweed"
|
||||||
|
elif [[ "${release}" == "centos" ]]; then
|
||||||
if [[ ${os_version} -lt 8 ]]; then
|
if [[ ${os_version} -lt 8 ]]; then
|
||||||
echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1
|
echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
elif [[ "${release}" == "ubuntu" ]]; then
|
elif [[ "${release}" == "ubuntu" ]]; then
|
||||||
if [[ ${os_version} -lt 20 ]]; then
|
if [[ ${os_version} -lt 20 ]]; then
|
||||||
echo -e "${red}please use Ubuntu 20 or higher version! ${plain}\n" && exit 1
|
echo -e "${red} Please use Ubuntu 20 or higher version!${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [[ "${release}" == "fedora" ]]; then
|
elif [[ "${release}" == "fedora" ]]; then
|
||||||
if [[ ${os_version} -lt 36 ]]; then
|
if [[ ${os_version} -lt 36 ]]; then
|
||||||
echo -e "${red}please use Fedora 36 or higher version! ${plain}\n" && exit 1
|
echo -e "${red} Please use Fedora 36 or higher version!${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [[ "${release}" == "debian" ]]; then
|
elif [[ "${release}" == "debian" ]]; then
|
||||||
if [[ ${os_version} -lt 10 ]]; then
|
if [[ ${os_version} -lt 11 ]]; then
|
||||||
echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1
|
echo -e "${red} Please use Debian 11 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "${release}" == "almalinux" ]]; then
|
||||||
|
if [[ ${os_version} -lt 9 ]]; then
|
||||||
|
echo -e "${red} Please use AlmaLinux 9 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "${release}" == "rocky" ]]; then
|
||||||
|
if [[ ${os_version} -lt 9 ]]; then
|
||||||
|
echo -e "${red} Please use Rocky Linux 9 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "${release}" == "oracle" ]]; then
|
||||||
|
if [[ ${os_version} -lt 8 ]]; then
|
||||||
|
echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo -e "${red}Failed to check the OS version, please contact the author!${plain}" && exit 1
|
echo -e "${red}Your operating system is not supported by this script.${plain}\n"
|
||||||
|
echo "Please ensure you are using one of the following supported operating systems:"
|
||||||
|
echo "- Ubuntu 20.04+"
|
||||||
|
echo "- Debian 11+"
|
||||||
|
echo "- CentOS 8+"
|
||||||
|
echo "- Fedora 36+"
|
||||||
|
echo "- Arch Linux"
|
||||||
|
echo "- Parch Linux"
|
||||||
|
echo "- Manjaro"
|
||||||
|
echo "- Armbian"
|
||||||
|
echo "- AlmaLinux 9+"
|
||||||
|
echo "- Rocky Linux 9+"
|
||||||
|
echo "- Oracle Linux 8+"
|
||||||
|
echo "- OpenSUSE Tumbleweed"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_dependencies() {
|
install_dependencies() {
|
||||||
case "${release}" in
|
case "${release}" in
|
||||||
centos)
|
centos | almalinux | rocky | oracle)
|
||||||
yum -y update && yum install -y -q wget curl tar tzdata
|
yum -y update && yum install -y -q wget curl tar tzdata
|
||||||
;;
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
dnf -y update && dnf install -y -q wget curl tar tzdata
|
dnf -y update && dnf install -y -q wget curl tar tzdata
|
||||||
;;
|
;;
|
||||||
|
arch | manjaro | parch)
|
||||||
|
pacman -Syu && pacman -Syu --noconfirm wget curl tar tzdata
|
||||||
|
;;
|
||||||
|
opensuse-tumbleweed)
|
||||||
|
zypper refresh && zypper -q install -y wget curl tar timezone
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
apt-get update && apt install -y -q wget curl tar tzdata
|
apt-get update && apt-get install -y -q wget curl tar tzdata
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
85
x-ui.sh
85
x-ui.sh
@@ -38,24 +38,61 @@ echo "The OS release is: $release"
|
|||||||
os_version=""
|
os_version=""
|
||||||
os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1)
|
os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1)
|
||||||
|
|
||||||
if [[ "${release}" == "centos" ]]; then
|
if [[ "${release}" == "arch" ]]; then
|
||||||
|
echo "Your OS is Arch Linux"
|
||||||
|
elif [[ "${release}" == "parch" ]]; then
|
||||||
|
echo "Your OS is Parch linux"
|
||||||
|
elif [[ "${release}" == "manjaro" ]]; then
|
||||||
|
echo "Your OS is Manjaro"
|
||||||
|
elif [[ "${release}" == "armbian" ]]; then
|
||||||
|
echo "Your OS is Armbian"
|
||||||
|
elif [[ "${release}" == "opensuse-tumbleweed" ]]; then
|
||||||
|
echo "Your OS is OpenSUSE Tumbleweed"
|
||||||
|
elif [[ "${release}" == "centos" ]]; then
|
||||||
if [[ ${os_version} -lt 8 ]]; then
|
if [[ ${os_version} -lt 8 ]]; then
|
||||||
echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1
|
echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
elif [[ "${release}" == "ubuntu" ]]; then
|
elif [[ "${release}" == "ubuntu" ]]; then
|
||||||
if [[ ${os_version} -lt 20 ]]; then
|
if [[ ${os_version} -lt 20 ]]; then
|
||||||
echo -e "${red}please use Ubuntu 20 or higher version! ${plain}\n" && exit 1
|
echo -e "${red} Please use Ubuntu 20 or higher version!${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [[ "${release}" == "fedora" ]]; then
|
elif [[ "${release}" == "fedora" ]]; then
|
||||||
if [[ ${os_version} -lt 36 ]]; then
|
if [[ ${os_version} -lt 36 ]]; then
|
||||||
echo -e "${red}please use Fedora 36 or higher version! ${plain}\n" && exit 1
|
echo -e "${red} Please use Fedora 36 or higher version!${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [[ "${release}" == "debian" ]]; then
|
elif [[ "${release}" == "debian" ]]; then
|
||||||
if [[ ${os_version} -lt 10 ]]; then
|
if [[ ${os_version} -lt 11 ]]; then
|
||||||
echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1
|
echo -e "${red} Please use Debian 11 or higher ${plain}\n" && exit 1
|
||||||
fi
|
fi
|
||||||
|
elif [[ "${release}" == "almalinux" ]]; then
|
||||||
|
if [[ ${os_version} -lt 9 ]]; then
|
||||||
|
echo -e "${red} Please use AlmaLinux 9 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "${release}" == "rocky" ]]; then
|
||||||
|
if [[ ${os_version} -lt 9 ]]; then
|
||||||
|
echo -e "${red} Please use Rocky Linux 9 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "${release}" == "oracle" ]]; then
|
||||||
|
if [[ ${os_version} -lt 8 ]]; then
|
||||||
|
echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${red}Your operating system is not supported by this script.${plain}\n"
|
||||||
|
echo "Please ensure you are using one of the following supported operating systems:"
|
||||||
|
echo "- Ubuntu 20.04+"
|
||||||
|
echo "- Debian 11+"
|
||||||
|
echo "- CentOS 8+"
|
||||||
|
echo "- Fedora 36+"
|
||||||
|
echo "- Arch Linux"
|
||||||
|
echo "- Parch Linux"
|
||||||
|
echo "- Manjaro"
|
||||||
|
echo "- Armbian"
|
||||||
|
echo "- AlmaLinux 9+"
|
||||||
|
echo "- Rocky Linux 9+"
|
||||||
|
echo "- Oracle Linux 8+"
|
||||||
|
echo "- OpenSUSE Tumbleweed"
|
||||||
|
exit 1
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
confirm() {
|
confirm() {
|
||||||
@@ -460,15 +497,22 @@ ssl_cert_issue() {
|
|||||||
fi
|
fi
|
||||||
# install socat second
|
# install socat second
|
||||||
case "${release}" in
|
case "${release}" in
|
||||||
ubuntu|debian)
|
ubuntu | debian | armbian)
|
||||||
apt update && apt install socat -y ;;
|
apt update && apt install socat -y
|
||||||
centos)
|
;;
|
||||||
yum -y update && yum -y install socat ;;
|
centos | almalinux | rocky | oracle)
|
||||||
fedora)
|
yum -y update && yum -y install socat
|
||||||
dnf -y update && dnf -y install socat ;;
|
;;
|
||||||
*)
|
fedora)
|
||||||
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
dnf -y update && dnf -y install socat
|
||||||
exit 1 ;;
|
;;
|
||||||
|
arch | manjaro | parch)
|
||||||
|
pacman -Sy --noconfirm socat
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
LOGE "install socat failed, please check logs"
|
LOGE "install socat failed, please check logs"
|
||||||
@@ -782,15 +826,18 @@ enable_bbr() {
|
|||||||
|
|
||||||
# Check the OS and install necessary packages
|
# Check the OS and install necessary packages
|
||||||
case "${release}" in
|
case "${release}" in
|
||||||
ubuntu | debian)
|
ubuntu | debian | armbian)
|
||||||
apt-get update && apt-get install -yqq --no-install-recommends ca-certificates
|
apt-get update && apt-get install -yqq --no-install-recommends ca-certificates
|
||||||
;;
|
;;
|
||||||
centos | almalinux | rocky)
|
centos | almalinux | rocky | oracle)
|
||||||
yum -y update && yum -y install ca-certificates
|
yum -y update && yum -y install ca-certificates
|
||||||
;;
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
dnf -y update && dnf -y install ca-certificates
|
dnf -y update && dnf -y install ca-certificates
|
||||||
;;
|
;;
|
||||||
|
arch | manjaro | parch)
|
||||||
|
pacman -Sy --noconfirm ca-certificates
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user