From 0cef82e756166b2a4a466add44cf7abc74e78d9e Mon Sep 17 00:00:00 2001 From: NW Date: Tue, 13 May 2025 11:00:15 +0000 Subject: [PATCH] revert 6e3634654f9874e29df46408642598bbfacfc6dc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Обновить setup_vps.sh --- setup_vps.sh | 194 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 143 insertions(+), 51 deletions(-) diff --git a/setup_vps.sh b/setup_vps.sh index f5abec3..e8c5403 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -1,7 +1,7 @@ #!/bin/bash -# VPS Auto-Setup Script v2.1 -# Универсальный установщик для Ubuntu/Debian +# VPS Auto-Setup Script v2.0 +# Универсальный установщик для Ubuntu/Debian с автоматическим определением дистрибутива # Цвета для вывода RED='\033[0;31m' @@ -9,27 +9,13 @@ GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color -# Функция для безопасного запуска от root -check_root() { - if [ "$(id -u)" -eq 0 ]; then - echo -e "${YELLOW}Предупреждение: Скрипт запущен от root.${NC}" - echo -e "${YELLOW}Рекомендуется запускать от обычного пользователя с sudo.${NC}" - read -p "Продолжить установку? [y/N] " -n 1 -r - echo - if [[ ! $REPLY =~ ^[Yy]$ ]]; then - echo -e "${RED}Установка отменена.${NC}" - exit 1 - fi - fi -} - # Функция для проверки установки пакета check_install() { if command -v $1 &> /dev/null; then echo -e "${GREEN}$1 уже установлен.${NC}" else echo -e "Установка ${YELLOW}$1${NC}..." - apt-get install -y $1 + sudo apt-get install -y $1 if [ $? -eq 0 ]; then echo -e "${GREEN}$1 успешно установлен.${NC}" else @@ -39,63 +25,132 @@ check_install() { fi } -# Определение дистрибутива +# Определение дистрибутива и его версии detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release DISTRO=$ID + VERSION=$VERSION_ID CODENAME=$VERSION_CODENAME - [ -z "$CODENAME" ] && CODENAME=$(echo "$VERSION" | cut -d '(' -f2 | cut -d ')' -f1) else echo -e "${RED}Не удалось определить дистрибутив!${NC}" exit 1 fi - echo -e "\n${YELLOW}Обнаружен дистрибутив: ${DISTRO} (${CODENAME})${NC}\n" + echo -e "\n${YELLOW}Обнаружен дистрибутив: ${DISTRO} ${VERSION} (${CODENAME})${NC}\n" } -# Установка Docker +# Установка Docker с правильными репозиториями install_docker() { if ! command -v docker &> /dev/null; then echo -e "Установка ${YELLOW}Docker${NC} для ${DISTRO}..." # Установка зависимостей - apt-get install -y apt-transport-https ca-certificates curl gnupg + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg # Добавление GPG ключа Docker - install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/${DISTRO}/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - chmod a+r /etc/apt/keyrings/docker.gpg + sudo install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/${DISTRO}/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + sudo chmod a+r /etc/apt/keyrings/docker.gpg # Добавление репозитория Docker echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${DISTRO} ${CODENAME} stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update + sudo apt-get update # Попытка установки Docker CE - if apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then + if sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then echo -e "${GREEN}Docker успешно установлен.${NC}" else - echo -e "${YELLOW}Ошибка при установке Docker CE. Пробуем установить docker.io...${NC}" - apt-get install -y docker.io docker-compose + echo -e "${YELLOW}Ошибка при установке Docker CE. Пробуем установить docker.io из стандартных репозиториев...${NC}" + sudo apt-get install -y docker.io docker-compose fi else echo -e "${GREEN}Docker уже установлен.${NC}" fi } +# Установка tmux с выбором варианта +install_tmux() { + if command -v tmux &> /dev/null; then + echo -e "${GREEN}tmux уже установлен. Версия: $(tmux -V)${NC}" + return + fi + + echo -e "\n${YELLOW}Выберите вариант установки tmux:${NC}" + echo "1) Стандартная установка из репозитория" + echo "2) Установка из исходников с поддержкой GPU (требует больше времени)" + read -p "Ваш выбор [1-2] (по умолчанию 1): " choice + + case $choice in + 2) + echo -e "Установка ${YELLOW}tmux из исходников${NC}..." + sudo apt-get install -y libevent-dev ncurses-dev build-essential bison pkg-config + git clone https://github.com/tmux/tmux.git + cd tmux + latest_tag=$(git describe --abbrev=0 --tags) + git checkout $latest_tag + ./configure --enable-gpu + make + sudo make install + cd .. + rm -rf tmux + ;; + *) + echo -e "Установка ${YELLOW}tmux из репозитория${NC}..." + sudo apt-get install -y tmux + ;; + esac + + if command -v tmux &> /dev/null; then + echo -e "${GREEN}tmux успешно установлен. Версия: $(tmux -V)${NC}" + else + echo -e "${RED}Ошибка при установке tmux!${NC}" + exit 1 + fi +} + +# Установка btop с поддержкой GPU +install_btop() { + if ! command -v btop &> /dev/null; then + echo -e "Установка ${YELLOW}btop с поддержкой GPU${NC}..." + + sudo apt-get install -y coreutils sed git build-essential gcc g++ + + git clone https://github.com/aristocratos/btop.git + cd btop + make GPU_SUPPORT=true + sudo make install + sudo make setcap + cd .. + rm -rf btop + + if [ $? -eq 0 ]; then + echo -e "${GREEN}btop успешно установлен с поддержкой GPU.${NC}" + else + echo -e "${RED}Ошибка при установке btop.${NC}" + exit 1 + fi + else + echo -e "${GREEN}btop уже установлен.${NC}" + fi +} + # Основной процесс установки main() { # Проверка на root - check_root + if [ "$(id -u)" -eq 0 ]; then + echo -e "${RED}Не рекомендуется запускать скрипт от root. Запустите от обычного пользователя с sudo.${NC}" + exit 1 + fi # Определение дистрибутива detect_distro # Обновление пакетов echo -e "\n${YELLOW}Обновление пакетов...${NC}" - apt-get update && apt-get upgrade -y + sudo apt-get update && sudo apt-get upgrade -y # Установка базовых утилит echo -e "\n${YELLOW}Установка базовых утилит...${NC}" @@ -104,31 +159,68 @@ main() { check_install net-tools check_install curl check_install wget - check_install tmux + + # Установка tmux + install_tmux # Установка Docker install_docker - # Добавление пользователя в группу docker - if [ "$(id -u)" -ne 0 ] && ! groups $USER | grep -q '\bdocker\b'; then - echo -e "\n${YELLOW}Добавление пользователя $USER в группу docker...${NC}" - usermod -aG docker $USER - echo -e "${GREEN}Пользователь $USER добавлен в группу docker.${NC}" - echo -e "${YELLOW}Для применения изменений необходимо перезапустить сессию.${NC}" + # Установка dry + if ! command -v dry &> /dev/null; then + echo -e "\n${YELLOW}Установка dry...${NC}" + curl -sSL https://github.com/moncho/dry/releases/latest/download/dry-linux-amd64 -o dry + chmod +x dry + sudo mv dry /usr/local/bin/ + echo -e "${GREEN}dry успешно установлен.${NC}" + else + echo -e "${GREEN}dry уже установлен.${NC}" fi - echo -e "\n${GREEN}Установка успешно завершена!${NC}" + # Установка btop + install_btop + + # Добавление пользователя в группу docker + if ! groups $USER | grep -q '\bdocker\b'; then + echo -e "\n${YELLOW}Добавление пользователя $USER в группу docker...${NC}" + sudo usermod -aG docker $USER + echo -e "${GREEN}Пользователь $USER добавлен в группу docker.${NC}" + echo -e "${YELLOW}Для применения изменений необходимо перезапустить сессию.${NC}" + else + echo -e "${GREEN}Пользователь $USER уже в группе docker.${NC}" + fi + + # Клонирование репозитория + REPO_DIR="opendoor-vpn-to-tor" + if [ ! -d "$REPO_DIR" ]; then + echo -e "\n${YELLOW}Клонирование репозитория...${NC}" + git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR" + else + echo -e "${GREEN}Репозиторий уже клонирован в $REPO_DIR.${NC}" + fi + + # Копирование файлов tmux + TMUX_SOURCE_DIR="./tmux/" + if [ -d "$TMUX_SOURCE_DIR" ]; then + echo -e "\n${YELLOW}Копирование файлов tmux...${NC}" + sudo cp -r "$TMUX_SOURCE_DIR" /root/ + else + echo -e "${YELLOW}Папка $TMUX_SOURCE_DIR не найдена. Копирование не выполнено.${NC}" + fi + + # Вывод версий + echo -e "\n${YELLOW}Установленные версии:${NC}" + echo -n "tmux: "; tmux -V + echo -n "mc: "; mc -V + echo -n "dry: "; dry --version + echo -n "Docker: "; docker --version + echo -n "Docker Compose: "; docker compose version + echo -n "Git: "; git --version + echo -n "btop: "; btop --version + + echo -e "\n${GREEN}Установка и настройка успешно завершены!${NC}" echo -e "${YELLOW}Для применения всех изменений рекомендуется перезапустить сессию.${NC}" } -# Запуск (с проверкой на прямой запуск) -if [ "$0" = "$BASH_SOURCE" ]; then - # Если скрипт запущен напрямую, а не через source - if [[ $EUID -eq 0 ]]; then - # Если root, запускаем напрямую - main - else - # Если не root, запускаем через sudo - sudo bash -c "$(declare -f main check_root check_install detect_distro install_docker); main" - fi -fi \ No newline at end of file +# Запуск главной функции +main \ No newline at end of file