opendoor-base-install/setup_vps.sh
NW 0cef82e756 revert 6e3634654f
revert Обновить setup_vps.sh
2025-05-13 11:00:15 +00:00

226 lines
8.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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
# Функция для проверки установки пакета
check_install() {
if command -v $1 &> /dev/null; then
echo -e "${GREEN}$1 уже установлен.${NC}"
else
echo -e "Установка ${YELLOW}$1${NC}..."
sudo apt-get install -y $1
if [ $? -eq 0 ]; then
echo -e "${GREEN}$1 успешно установлен.${NC}"
else
echo -e "${RED}Ошибка при установке $1.${NC}"
exit 1
fi
fi
}
# Определение дистрибутива и его версии
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO=$ID
VERSION=$VERSION_ID
CODENAME=$VERSION_CODENAME
else
echo -e "${RED}Не удалось определить дистрибутив!${NC}"
exit 1
fi
echo -e "\n${YELLOW}Обнаружен дистрибутив: ${DISTRO} ${VERSION} (${CODENAME})${NC}\n"
}
# Установка Docker с правильными репозиториями
install_docker() {
if ! command -v docker &> /dev/null; then
echo -e "Установка ${YELLOW}Docker${NC} для ${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} ${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}"
else
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
if [ "$(id -u)" -eq 0 ]; then
echo -e "${RED}Не рекомендуется запускать скрипт от root. Запустите от обычного пользователя с sudo.${NC}"
exit 1
fi
# Определение дистрибутива
detect_distro
# Обновление пакетов
echo -e "\n${YELLOW}Обновление пакетов...${NC}"
sudo apt-get update && sudo apt-get upgrade -y
# Установка базовых утилит
echo -e "\n${YELLOW}Установка базовых утилит...${NC}"
check_install mc
check_install git
check_install net-tools
check_install curl
check_install wget
# Установка tmux
install_tmux
# Установка Docker
install_docker
# Установка 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
# Установка 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}"
}
# Запуск главной функции
main