opendoor-base-install/setup_vps.sh
2025-05-13 12:34:16 +00:00

217 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
# Цвета для вывода
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
}
# Функция для определения архитектуры процессора
get_arch() {
ARCH=$(uname -m)
case $ARCH in
x86_64) echo "amd64" ;;
aarch64) echo "arm64" ;;
armv7l) echo "armv7" ;;
armv6l) echo "armv6" ;;
*) echo "$ARCH" ;;
esac
}
# Функция для определения дистрибутива
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO=$ID
VERSION_CODENAME=$VERSION_CODENAME
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
DISTRO=${DISTRIB_ID,,}
VERSION_CODENAME=$DISTRIB_CODENAME
else
echo -e "${RED}Не удалось определить дистрибутив.${NC}"
exit 1
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
echo -e "${RED}Ошибка при обновлении пакетов.${NC}"
exit 1
fi
# Установка базовых утилит
check_install tmux
check_install mc
check_install git
check_install net-tools
check_install curl
check_install wget
check_install build-essential
# Определение дистрибутива для установки Docker
detect_distro
# Установка Docker
if ! command -v docker &> /dev/null; then
echo -e "${YELLOW}Установка Docker для $DISTRO...${NC}"
# Установка зависимостей
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
# Добавление официального GPG ключа Docker
sudo mkdir -p /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 -e "${GREEN}Docker успешно установлен.${NC}"
else
echo -e "${RED}Ошибка при установке Docker. Попробуем установить docker.io из стандартных репозиториев...${NC}"
sudo apt-get install -y docker.io docker-compose-plugin
fi
else
echo -e "${GREEN}Docker уже установлен.${NC}"
fi
# Установка 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
else
echo -e "${GREEN}dry уже установлен.${NC}"
fi
# Установка btop
if ! command -v btop &> /dev/null; then
echo -e "${YELLOW}Установка btop...${NC}"
echo "Выберите вариант установки:"
echo "1) Быстрая установка из репозитория (без поддержки GPU)"
echo "2) Компиляция из исходников с поддержкой GPU"
read -p "Ваш выбор (1/2): " btop_choice
case $btop_choice in
1)
check_install btop
;;
2)
echo -e "${YELLOW}Установка зависимостей для компиляции btop...${NC}"
sudo apt-get install -y coreutils sed git build-essential
echo -e "${YELLOW}Клонирование репозитория btop...${NC}"
git clone https://github.com/aristocratos/btop.git
cd btop
echo -e "${YELLOW}Компиляция btop с поддержкой GPU...${NC}"
make GPU_SUPPORT=true
echo -e "${YELLOW}Установка btop...${NC}"
sudo make install
echo -e "${YELLOW}Настройка прав для мониторинга GPU...${NC}"
sudo make setcap
cd ..
rm -rf btop
;;
*)
echo -e "${YELLOW}Устанавливаю из репозитория.${NC}"
check_install btop
;;
esac
else
echo -e "${GREEN}btop уже установлен.${NC}"
fi
# Добавление пользователя в группу docker
if ! groups $USER | grep -q '\bdocker\b'; then
echo -e "${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 "${YELLOW}Клонирование репозитория opendoor-vpn-to-tor...${NC}"
git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR"
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
# Вывод версий установленных программ
echo -e "\n${GREEN}=== Установленные версии ===${NC}"
tmux -V || echo "tmux: не удалось получить версию"
mc -V || echo "mc: не удалось получить версию"
dry --version || echo "dry: не удалось получить версию"
docker --version || echo "docker: не удалось получить версию"
docker compose version || echo "docker compose: не удалось получить версию"
git --version || echo "git: не удалось получить версию"
btop --version || echo "btop: не удалось получить версию"
echo -e "\n${GREEN}Установка и настройка завершены!${NC}"