From a10e0459761a5a4c11d0b1a69663e7fc85b381e4 Mon Sep 17 00:00:00 2001 From: NW Date: Tue, 13 May 2025 12:39:34 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20setup=5Fvps.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup_vps.sh | 112 +++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 53 deletions(-) diff --git a/setup_vps.sh b/setup_vps.sh index a7c415b..81b4eb9 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -28,12 +28,42 @@ get_arch() { case $ARCH in x86_64) echo "amd64" ;; aarch64) echo "arm64" ;; - armv7l) echo "armv7" ;; - armv6l) echo "armv6" ;; - *) echo "$ARCH" ;; + armv7l|armhf) echo "arm" ;; + *) echo "unsupported" ;; esac } +# Функция для установки dry с учетом архитектуры +install_dry() { + ARCH=$(get_arch) + echo -e "${YELLOW}Определена архитектура: $ARCH${NC}" + + if [ "$ARCH" == "unsupported" ]; then + echo -e "${RED}Ваша архитектура не поддерживается. Пропускаем установку dry.${NC}" + return + fi + + # Для ARM устройств используем версию из репозиториев + if [[ "$ARCH" == "arm64" || "$ARCH" == "arm" ]]; then + echo -e "${YELLOW}Установка dry из репозиториев для ARM...${NC}" + sudo apt-get install -y dry + return + fi + + echo -e "${YELLOW}Установка dry...${NC}" + DRY_URL="https://github.com/moncho/dry/releases/latest/download/dry-linux-${ARCH}" + echo -e "${YELLOW}Скачивание dry для архитектуры ${ARCH}...${NC}" + + if curl -fsSL $DRY_URL -o dry; then + chmod +x dry + sudo mv dry /usr/local/bin/ + echo -e "${GREEN}dry успешно установлен.${NC}" + else + echo -e "${RED}Ошибка при скачивании dry. Попробуем установить из репозиториев...${NC}" + sudo apt-get install -y dry || echo -e "${RED}Не удалось установить dry.${NC}" + fi +} + # Функция для определения дистрибутива detect_distro() { if [ -f /etc/os-release ]; then @@ -50,19 +80,12 @@ detect_distro() { fi } -# Предупреждение о запуске от root (только информативное) -if [ "$(id -u)" -eq 0 ]; then - echo -e "${YELLOW}Внимание: Скрипт запущен от root.${NC}" - sleep 2 -fi - # Обновление пакетов echo -e "${YELLOW}Обновление пакетов...${NC}" -sudo apt-get update && sudo apt-get upgrade -y -if [ $? -ne 0 ]; then +sudo apt-get update && sudo apt-get upgrade -y || { echo -e "${RED}Ошибка при обновлении пакетов.${NC}" exit 1 -fi +} # Установка базовых утилит check_install tmux @@ -95,34 +118,21 @@ if ! command -v docker &> /dev/null; then sudo apt-get update # Установка Docker - sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - - if [ $? -eq 0 ]; then - echo -e "${GREEN}Docker успешно установлен.${NC}" - else - echo -e "${RED}Ошибка при установке Docker. Попробуем установить docker.io из стандартных репозиториев...${NC}" - sudo apt-get install -y docker.io docker-compose-plugin + if ! sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then + echo -e "${RED}Ошибка при установке Docker. Пробуем установить docker.io...${NC}" + sudo apt-get install -y docker.io docker-compose-plugin || { + echo -e "${RED}Не удалось установить Docker.${NC}" + exit 1 + } fi + echo -e "${GREEN}Docker успешно установлен.${NC}" else echo -e "${GREEN}Docker уже установлен.${NC}" fi -# Установка dry с учетом архитектуры +# Установка dry if ! command -v dry &> /dev/null; then - echo -e "${YELLOW}Установка dry...${NC}" - ARCH=$(get_arch) - DRY_URL="https://github.com/moncho/dry/releases/latest/download/dry-linux-${ARCH}" - echo -e "${YELLOW}Скачивание dry для архитектуры ${ARCH}...${NC}" - curl -sSL $DRY_URL -o dry - if [ $? -ne 0 ]; then - echo -e "${RED}Ошибка при скачивании dry.${NC}" - echo -e "${YELLOW}Попробуем установить из альтернативного источника...${NC}" - sudo apt-get install -y dry - else - chmod +x dry - sudo mv dry /usr/local/bin/ - echo -e "${GREEN}dry успешно установлен.${NC}" - fi + install_dry else echo -e "${GREEN}dry уже установлен.${NC}" fi @@ -171,7 +181,7 @@ fi # Добавление пользователя в группу docker if ! groups $USER | grep -q '\bdocker\b'; then echo -e "${YELLOW}Добавление пользователя $USER в группу docker...${NC}" - sudo usermod -aG docker $USER + sudo usermod -aG docker $USER || echo -e "${RED}Не удалось добавить пользователя в группу docker.${NC}" echo -e "${GREEN}Пользователь $USER добавлен в группу docker.${NC}" echo -e "${YELLOW}Для применения изменений可能需要 перезапустить сессию.${NC}" else @@ -182,33 +192,29 @@ fi REPO_DIR="opendoor-vpn-to-tor" if [ ! -d "$REPO_DIR" ]; then echo -e "${YELLOW}Клонирование репозитория opendoor-vpn-to-tor...${NC}" - git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR" + git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR" || { + echo -e "${RED}Ошибка при клонировании репозитория.${NC}" + exit 1 + } echo -e "${GREEN}Репозиторий успешно клонирован.${NC}" - - # Копирование файлов tmux из репозитория в /root/ - if [ -d "$REPO_DIR/tmux" ]; then - echo -e "${YELLOW}Копирование файлов tmux в /root/...${NC}" - sudo cp -r "$REPO_DIR/tmux/"* /root/ - echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" - else - echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" - fi else echo -e "${GREEN}Репозиторий уже клонирован.${NC}" - - # Проверяем и копируем файлы tmux если репозиторий уже существует - if [ -d "$REPO_DIR/tmux" ]; then - echo -e "${YELLOW}Копирование файлов tmux в /root/...${NC}" - sudo cp -r "$REPO_DIR/tmux/"* /root/ - echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" - fi +fi + +# Копирование файлов tmux +if [ -d "$REPO_DIR/tmux" ]; then + echo -e "${YELLOW}Копирование файлов tmux в /root/...${NC}" + sudo cp -r "$REPO_DIR/tmux/"* /root/ || echo -e "${RED}Не удалось скопировать файлы tmux.${NC}" + echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" +else + echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" fi # Вывод версий установленных программ echo -e "\n${GREEN}=== Установленные версии ===${NC}" tmux -V || echo "tmux: не удалось получить версию" mc -V || echo "mc: не удалось получить версию" -dry --version || echo "dry: не удалось получить версию" +command -v dry >/dev/null && dry --version || echo "dry: не установлен или не поддерживается" docker --version || echo "docker: не удалось получить версию" docker compose version || echo "docker compose: не удалось получить версию" git --version || echo "git: не удалось получить версию"