diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d5b5cffc..95bdda1c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -48,6 +48,6 @@ jobs: with: context: . 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 }} labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2c35b408..694a1fe9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,10 @@ jobs: - amd64 - arm64 - armv7 + - armv6 + - armv5 - 386 + - s390x runs-on: ubuntu-20.04 steps: - name: Checkout repository @@ -39,8 +42,14 @@ jobs: sudo apt install gcc-aarch64-linux-gnu elif [ "${{ matrix.platform }}" == "armv7" ]; then 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 sudo apt install gcc-i686-linux-gnu + elif [ "${{ matrix.platform }}" == "s390x" ]; then + sudo apt install gcc-s390x-linux-gnu fi - name: Build frontend @@ -63,9 +72,20 @@ jobs: export GOARCH=arm export GOARM=7 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 export GOARCH=386 export CC=i686-linux-gnu-gcc + elif [ "${{ matrix.platform }}" == "s390x" ]; then + export GOARCH=s390x + export CC=s390x-linux-gnu-gcc fi #### Build Sing-Box diff --git a/README.md b/README.md index 79bedb34..b7bc9511 100644 --- a/README.md +++ b/README.md @@ -179,10 +179,18 @@ To run backend (from root folder of repository): ## Recommended OS +- Ubuntu 20.04+ +- Debian 11+ - CentOS 8+ -- Ubuntu 20+ -- Debian 10+ - Fedora 36+ +- Arch Linux +- Parch Linux +- Manjaro +- Armbian +- AlmaLinux 9+ +- Rocky Linux 9+ +- Oracle Linux 8+ +- OpenSUSE Tubleweed ## Environment Variables diff --git a/install.sh b/install.sh index ef351844..2b14f276 100755 --- a/install.sh +++ b/install.sh @@ -29,6 +29,9 @@ arch() { i*86 | x86) echo '386' ;; armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;; 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 ;; esac } @@ -38,39 +41,79 @@ echo "arch: $(arch)" os_version="" 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 echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "ubuntu" ]]; 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 - elif [[ "${release}" == "fedora" ]]; 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 - elif [[ "${release}" == "debian" ]]; then - if [[ ${os_version} -lt 10 ]]; then - echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1 + if [[ ${os_version} -lt 11 ]]; then + 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 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 install_base() { case "${release}" in - centos) + centos | almalinux | rocky | oracle) yum -y update && yum install -y -q wget curl tar tzdata ;; fedora) 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 } diff --git a/s-ui.sh b/s-ui.sh index a0db3c53..0645d3f7 100644 --- a/s-ui.sh +++ b/s-ui.sh @@ -39,24 +39,61 @@ echo "The OS release is: $release" os_version="" 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 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 + echo -e "${red} Please use Ubuntu 20 or higher version!${plain}\n" && exit 1 fi - elif [[ "${release}" == "fedora" ]]; 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 - elif [[ "${release}" == "debian" ]]; then - if [[ ${os_version} -lt 10 ]]; then - echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1 + if [[ ${os_version} -lt 11 ]]; then + 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 +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 confirm() { @@ -471,15 +508,18 @@ enable_bbr() { # Check the OS and install necessary packages case "${release}" in - ubuntu | debian) + ubuntu | debian | armbian) 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 ;; fedora) 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" exit 1 @@ -547,15 +587,22 @@ ssl_cert_issue() { fi # install socat second case "${release}" in - ubuntu|debian) - apt update && apt install socat -y ;; - centos) - yum -y update && yum -y install socat ;; - fedora) - dnf -y update && dnf -y install socat ;; - *) - echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" - exit 1 ;; + ubuntu | debian | armbian) + apt update && apt install socat -y + ;; + centos | almalinux | rocky | oracle) + yum -y update && yum -y install socat + ;; + fedora) + dnf -y update && dnf -y install socat + ;; + 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 if [ $? -ne 0 ]; then LOGE "install socat failed, please check logs"