From 2899a4f2e807782a3676a05207a150386916c3c2 Mon Sep 17 00:00:00 2001 From: NW Date: Tue, 13 May 2025 11:16:21 +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 | 255 ++++++++++++++++++++------------------------------- 1 file changed, 99 insertions(+), 156 deletions(-) diff --git a/setup_vps.sh b/setup_vps.sh index e8c5403..5961060 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -1,96 +1,89 @@ #!/bin/bash -# VPS Auto-Setup Script v2.0 -# Универсальный установщик для Ubuntu/Debian с автоматическим определением дистрибутива - -# Цвета для вывода -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' # No Color +# Проверка, что скрипт не запущен от root +if [ "$(id -u)" -eq 0 ]; then + echo "Не рекомендуется запускать скрипт от root. Запустите от обычного пользователя с sudo." + exit 1 +fi # Функция для проверки установки пакета check_install() { - if command -v $1 &> /dev/null; then - echo -e "${GREEN}$1 уже установлен.${NC}" + if command -v "$1" &> /dev/null; then + echo "$1 уже установлен." else - echo -e "Установка ${YELLOW}$1${NC}..." - sudo apt-get install -y $1 + echo "Установка $1..." + sudo apt-get install -y "$1" if [ $? -eq 0 ]; then - echo -e "${GREEN}$1 успешно установлен.${NC}" + echo "$1 успешно установлен." else - echo -e "${RED}Ошибка при установке $1.${NC}" + echo "Ошибка при установке $1." exit 1 fi fi } -# Определение дистрибутива и его версии +# Функция для определения дистрибутива detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release DISTRO=$ID - VERSION=$VERSION_ID - CODENAME=$VERSION_CODENAME + VERSION_CODENAME=$VERSION_CODENAME else - echo -e "${RED}Не удалось определить дистрибутив!${NC}" + echo "Не удалось определить дистрибутив." exit 1 fi - - 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}..." + echo "Установка Docker для $DISTRO..." # Установка зависимостей sudo apt-get install -y apt-transport-https ca-certificates curl gnupg - # Добавление GPG ключа Docker + # Добавление официального GPG ключа Docker 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 + 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" | \ - sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$DISTRO \ + $VERSION_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update - # Попытка установки Docker CE - 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}" + # Установка Docker + sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + + if [ $? -eq 0 ]; then + echo "Docker успешно установлен." else - echo -e "${YELLOW}Ошибка при установке Docker CE. Пробуем установить docker.io из стандартных репозиториев...${NC}" + echo "Ошибка при установке Docker из официального репозитория. Пробуем установить из стандартных репозиториев..." sudo apt-get install -y docker.io docker-compose fi else - echo -e "${GREEN}Docker уже установлен.${NC}" + echo "Docker уже установлен." fi } -# Установка tmux с выбором варианта +# Функция для установки tmux install_tmux() { - if command -v tmux &> /dev/null; then - echo -e "${GREEN}tmux уже установлен. Версия: $(tmux -V)${NC}" - return - fi + echo "Выберите вариант установки tmux:" + echo "1) Установка из репозитория (простая)" + echo "2) Установка с поддержкой GPU и компиляцией" + read -p "Введите номер варианта (1/2): " tmux_choice - echo -e "\n${YELLOW}Выберите вариант установки tmux:${NC}" - echo "1) Стандартная установка из репозитория" - echo "2) Установка из исходников с поддержкой GPU (требует больше времени)" - read -p "Ваш выбор [1-2] (по умолчанию 1): " choice - - case $choice in + case $tmux_choice in + 1) + check_install tmux + ;; 2) - echo -e "Установка ${YELLOW}tmux из исходников${NC}..." + echo "Установка tmux с поддержкой GPU и компиляцией..." 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 + git checkout $(git tag | sort -V | tail -n 1) ./configure --enable-gpu make sudo make install @@ -98,129 +91,79 @@ install_tmux() { rm -rf tmux ;; *) - echo -e "Установка ${YELLOW}tmux из репозитория${NC}..." - sudo apt-get install -y tmux + echo "Неверный выбор. Устанавливается tmux из репозитория." + check_install 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 - if [ "$(id -u)" -eq 0 ]; then - echo -e "${RED}Не рекомендуется запускать скрипт от root. Запустите от обычного пользователя с sudo.${NC}" - exit 1 - fi +echo "Начало установки..." +detect_distro +echo "Определен дистрибутив: $DISTRO $VERSION_CODENAME" - # Определение дистрибутива - detect_distro +# Обновление пакетов +echo "Обновление пакетов..." +sudo apt-get update && sudo apt-get upgrade -y - # Обновление пакетов - echo -e "\n${YELLOW}Обновление пакетов...${NC}" - sudo apt-get update && sudo apt-get upgrade -y +# Установка основных утилит +install_tmux +check_install mc +check_install git +check_install net-tools - # Установка базовых утилит - echo -e "\n${YELLOW}Установка базовых утилит...${NC}" - check_install mc - check_install git - check_install net-tools - check_install curl - check_install wget +# Установка Docker +install_docker - # Установка tmux - install_tmux +# Установка dry +if ! command -v dry &> /dev/null; then + echo "Установка dry..." + curl -sSL https://github.com/moncho/dry/releases/latest/download/dry-linux-amd64 -o dry + chmod +x dry + sudo mv dry /usr/local/bin/ +fi - # Установка Docker - install_docker +# Установка btop с поддержкой GPU +if ! command -v btop &> /dev/null; then + echo "Установка btop с поддержкой GPU..." + sudo apt-get install -y coreutils sed git build-essential + git clone https://github.com/aristocratos/btop.git + cd btop + make GPU_SUPPORT=true + sudo make install + sudo make setcap + cd .. + rm -rf btop +fi - # Установка 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 +# Добавление пользователя в группу docker +if ! groups "$USER" | grep -q '\bdocker\b'; then + echo "Добавление пользователя $USER в группу docker..." + sudo usermod -aG docker "$USER" + echo "Перезагрузите сессию или выполните 'newgrp docker' для применения изменений." +fi - # Установка btop - install_btop +# Клонирование репозитория +REPO_DIR="opendoor-vpn-to-tor" +if [ ! -d "$REPO_DIR" ]; then + echo "Клонирование репозитория..." + git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR" +fi - # Добавление пользователя в группу 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 +# Копирование файлов tmux +if [ -d "./tmux" ]; then + echo "Копирование файлов tmux..." + sudo cp -r ./tmux/* /root/ +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 +# Проверка установленных версий +echo "Установленные версии:" +tmux -V 2>/dev/null || echo "tmux не установлен" +mc -V 2>/dev/null || echo "mc не установлен" +dry --version 2>/dev/null || echo "dry не установлен" +docker --version 2>/dev/null || echo "docker не установлен" +docker compose version 2>/dev/null || echo "docker compose не установлен" +git --version 2>/dev/null || echo "git не установлен" +btop --version 2>/dev/null || echo "btop не установлен" - # Копирование файлов 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}" -} - -# Запуск главной функции -main \ No newline at end of file +echo "Установка и настройка завершены!" \ No newline at end of file