#!/bin/bash # Проверка, что скрипт не запущен от root if [ "$(id -u)" -eq 0 ]; then echo "Не рекомендуется запускать скрипт от root. Запустите от обычного пользователя с sudo." exit 1 fi # Функция для проверки установки пакета check_install() { if command -v "$1" &> /dev/null; then echo "$1 уже установлен." else echo "Установка $1..." sudo apt-get install -y "$1" if [ $? -eq 0 ]; then echo "$1 успешно установлен." else echo "Ошибка при установке $1." exit 1 fi fi } # Функция для определения дистрибутива detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release DISTRO=$ID VERSION_CODENAME=$VERSION_CODENAME else echo "Не удалось определить дистрибутив." exit 1 fi } # Функция для установки Docker install_docker() { if ! command -v docker &> /dev/null; then echo "Установка Docker для $DISTRO..." # Установка зависимостей sudo apt-get install -y apt-transport-https ca-certificates curl gnupg # Добавление официального 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 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 \ $VERSION_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 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 "Docker успешно установлен." else echo "Ошибка при установке Docker из официального репозитория. Пробуем установить из стандартных репозиториев..." sudo apt-get install -y docker.io docker-compose fi else echo "Docker уже установлен." fi } # Функция для установки tmux install_tmux() { echo "Выберите вариант установки tmux:" echo "1) Установка из репозитория (простая)" echo "2) Установка с поддержкой GPU и компиляцией" read -p "Введите номер варианта (1/2): " tmux_choice case $tmux_choice in 1) check_install tmux ;; 2) 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 git checkout $(git tag | sort -V | tail -n 1) ./configure --enable-gpu make sudo make install cd .. rm -rf tmux ;; *) echo "Неверный выбор. Устанавливается tmux из репозитория." check_install tmux ;; esac } # Основной процесс установки echo "Начало установки..." detect_distro echo "Определен дистрибутив: $DISTRO $VERSION_CODENAME" # Обновление пакетов echo "Обновление пакетов..." sudo apt-get update && sudo apt-get upgrade -y # Установка основных утилит install_tmux check_install mc check_install git check_install net-tools # Установка Docker install_docker # Установка 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 # Установка 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 # Добавление пользователя в группу docker if ! groups "$USER" | grep -q '\bdocker\b'; then echo "Добавление пользователя $USER в группу docker..." sudo usermod -aG docker "$USER" echo "Перезагрузите сессию или выполните 'newgrp docker' для применения изменений." fi # Клонирование репозитория 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 # Копирование файлов tmux if [ -d "./tmux" ]; then echo "Копирование файлов tmux..." sudo cp -r ./tmux/* /root/ 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 не установлен" echo "Установка и настройка завершены!"