diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ada481c8..70eaba7a 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -50,6 +50,6 @@ jobs: with: context: . push: true - platforms: linux/amd64,linux/arm64/v8, linux/arm/v7 + platforms: linux/amd64,linux/arm64/v8, linux/arm/v7, linux/386 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b1c7496..760c9dd6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,11 @@ jobs: build: strategy: matrix: - platform: [amd64, arm64, arm] + platform: + - amd64 + - arm64 + - armv7 + - 386 runs-on: ubuntu-20.04 steps: - name: Checkout repository @@ -20,14 +24,16 @@ jobs: uses: actions/setup-go@v5.0.0 with: go-version: '1.22' - - - name: Install dependencies for arm64 and arm - if: matrix.platform == 'arm64' || matrix.platform == 'arm' + + - name: Install dependencies run: | sudo apt-get update - sudo apt install gcc-aarch64-linux-gnu - if [ "${{ matrix.platform }}" == "arm" ]; then + if [ "${{ matrix.platform }}" == "arm64" ]; then + sudo apt install gcc-aarch64-linux-gnu + elif [ "${{ matrix.platform }}" == "armv7" ]; then sudo apt install gcc-arm-linux-gnueabihf + elif [ "${{ matrix.platform }}" == "386" ]; then + sudo apt install gcc-i686-linux-gnu fi - name: Build x-ui @@ -36,9 +42,15 @@ jobs: export GOOS=linux export GOARCH=${{ matrix.platform }} if [ "${{ matrix.platform }}" == "arm64" ]; then + export GOARCH=arm64 export CC=aarch64-linux-gnu-gcc - elif [ "${{ matrix.platform }}" == "arm" ]; then + elif [ "${{ matrix.platform }}" == "armv7" ]; then + export GOARCH=arm + export GOARM=7 export CC=arm-linux-gnueabihf-gcc + elif [ "${{ matrix.platform }}" == "386" ]; then + export GOARCH=386 + export CC=i686-linux-gnu-gcc fi go build -o xui-release -v main.go @@ -60,12 +72,16 @@ jobs: wget ${Xray_URL}Xray-linux-arm64-v8a.zip unzip Xray-linux-arm64-v8a.zip rm -f Xray-linux-arm64-v8a.zip - else + elif [ "${{ matrix.platform }}" == "armv7" ]; then wget ${Xray_URL}Xray-linux-arm32-v7a.zip unzip Xray-linux-arm32-v7a.zip rm -f Xray-linux-arm32-v7a.zip + elif [ "${{ matrix.platform }}" == "386" ]; then + wget ${Xray_URL}Xray-linux-32.zip + unzip Xray-linux-32.zip + rm -f Xray-linux-32.zip fi - rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.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/geosite.dat wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat @@ -76,12 +92,11 @@ jobs: - name: Package run: tar -zcvf x-ui-linux-${{ matrix.platform }}.tar.gz x-ui - - name: Upload - uses: svenstaro/upload-release-action@2.7.0 + - name: Upload files to GH release + uses: MHSanaei/upload-release-action@2.8.0 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ github.ref }} file: x-ui-linux-${{ matrix.platform }}.tar.gz asset_name: x-ui-linux-${{ matrix.platform }}.tar.gz prerelease: true - overwrite: true diff --git a/DockerInitFiles.sh b/DockerInitFiles.sh index d8741cdd..dbe78460 100755 --- a/DockerInitFiles.sh +++ b/DockerInitFiles.sh @@ -4,6 +4,10 @@ case $1 in ARCH="64" FNAME="amd64" ;; + i386) + ARCH="32" + FNAME="i386" + ;; armv8 | arm64 | aarch64) ARCH="arm64-v8a" FNAME="arm64" diff --git a/README.md b/README.md index 5c1bc347..7badfa5f 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ bash <(curl -Ls https://raw.githubusercontent.com/alireza0/x-ui/master/install.s 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" ;; @@ -76,6 +77,7 @@ wget https://github.com/alireza0/x-ui/releases/latest/download/x-ui-linux-${XUI_ 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" ;; diff --git a/install.sh b/install.sh index 392475d5..0e5e991d 100755 --- a/install.sh +++ b/install.sh @@ -26,8 +26,9 @@ echo "The OS release is: $release" arch() { case "$(uname -m)" in x86_64 | x64 | amd64) echo 'amd64' ;; + i*86 | x86) echo '386' ;; armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;; - armv7* | armv7 | arm | arm32 ) echo 'arm' ;; + armv7* | armv7 | arm) echo 'armv7' ;; *) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;; esac } @@ -40,7 +41,7 @@ if [[ "${release}" == "centos" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 fi -elif [[ "${release}" == "ubuntu" ]]; then +elif [[ "${release}" == "ubuntu" ]]; then if [[ ${os_version} -lt 20 ]]; then echo -e "${red}please use Ubuntu 20 or higher version! ${plain}\n" && exit 1 fi @@ -58,13 +59,18 @@ else echo -e "${red}Failed to check the OS version, please contact the author!${plain}" && exit 1 fi - install_dependencies() { - if [[ "${release}" == "centos" ]] || [[ "${release}" == "fedora" ]] ; then - yum install wget curl tar -y - else - apt install wget curl tar -y - fi + case "${release}" in + centos) + yum -y update && yum install -y -q wget curl tar tzdata + ;; + fedora) + dnf -y update && dnf install -y -q wget curl tar tzdata + ;; + *) + apt-get update && apt install -y -q wget curl tar tzdata + ;; + esac } #This function will be called when user installed x-ui out of sercurity @@ -152,6 +158,13 @@ install_x-ui() { tar zxvf x-ui-linux-$(arch).tar.gz rm x-ui-linux-$(arch).tar.gz -f cd x-ui + chmod +x x-ui + + # Check the system's architecture and rename the file accordingly + if [[ $(arch) == "armv7" ]]; then + mv bin/xray-linux-$(arch) bin/xray-linux-arm + chmod +x bin/xray-linux-arm + fi chmod +x x-ui bin/xray-linux-$(arch) cp -f x-ui.service /etc/systemd/system/ wget --no-check-certificate -O /usr/bin/x-ui https://raw.githubusercontent.com/alireza0/x-ui/main/x-ui.sh @@ -172,7 +185,7 @@ install_x-ui() { echo -e "" echo "X-UI Control Menu Usage" echo "------------------------------------------" - echo "SUBCOMMANDS:" + echo "SUBCOMMANDS:" echo "x-ui - Admin Management Script" echo "x-ui start - Start" echo "x-ui stop - Stop"