opendoor-base-install/setup_vps.sh
2025-05-13 11:20:23 +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
# Проверка дистрибутива
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
OS_CODENAME=$VERSION_CODENAME
elif type lsb_release >/dev/null 2>&1; then
OS=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
OS_CODENAME=$(lsb_release -sc)
else
OS=$(cat /etc/issue | head -1 | awk '{print $1}' | tr '[:upper:]' '[:lower:]')
OS_CODENAME=$(cat /etc/apt/sources.list | grep -E '^deb ' | head -1 | awk '{print $3}')
fi
# Проверка на поддержку
if [[ "$OS" != "ubuntu" && "$OS" != "debian" ]]; then
echo -e "${RED}Ошибка: Этот скрипт поддерживает только Ubuntu и Debian.${NC}"
exit 1
fi
echo -e "${YELLOW}Обнаружена система: $OS $OS_CODENAME${NC}"
}
# Функция для проверки установки пакета
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
}
# Установка Docker с правильными репозиториями
install_docker() {
if ! command -v docker &> /dev/null; then
echo -e "${YELLOW}Установка Docker для $OS...${NC}"
# Установка зависимостей
sudo apt-get update
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/$OS/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/$OS $OS_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 "${YELLOW}Попытка установки Docker из стандартных репозиториев...${NC}"
sudo apt-get install -y docker.io docker-compose
if [ $? -eq 0 ]; then
echo -e "${GREEN}Docker установлен из стандартных репозиториев.${NC}"
else
echo -e "${RED}Ошибка при установке Docker.${NC}"
exit 1
fi
fi
else
echo -e "${GREEN}Docker уже установлен.${NC}"
fi
}
# Установка btop с поддержкой GPU
install_btop() {
if ! command -v btop &> /dev/null; then
echo -e "${YELLOW}Установка btop с поддержкой GPU...${NC}"
# Установка зависимостей для компиляции
echo -e "${YELLOW}Установка зависимостей...${NC}"
sudo apt-get install -y coreutils sed git build-essential
# Клонирование репозитория btop
echo -e "${YELLOW}Клонирование репозитория...${NC}"
git clone https://github.com/aristocratos/btop.git
cd btop
# Компиляция с поддержкой GPU
echo -e "${YELLOW}Компиляция...${NC}"
make GPU_SUPPORT=true
# Установка
echo -e "${YELLOW}Установка...${NC}"
sudo make install
# Настройка прав
echo -e "${YELLOW}Настройка прав...${NC}"
sudo make setcap
cd ..
rm -rf btop
echo -e "${GREEN}btop успешно установлен с поддержкой GPU.${NC}"
else
echo -e "${GREEN}btop уже установлен.${NC}"
fi
}
# Основной процесс установки
main() {
# Предупреждение (не блокирующее)
if [ "$(id -u)" -eq 0 ]; then
echo -e "${YELLOW}Внимание: Скрипт запущен от root. Рекомендуется запускать от обычного пользователя с sudo.${NC}"
fi
detect_distro
# Обновление пакетов
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
# Установка Docker
install_docker
# Установка dry
if ! command -v dry &> /dev/null; then
echo -e "${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
CURRENT_USER=${SUDO_USER:-$USER}
if ! groups $CURRENT_USER | grep -q '\bdocker\b'; then
echo -e "${YELLOW}Добавление пользователя $CURRENT_USER в группу docker...${NC}"
sudo usermod -aG docker $CURRENT_USER
echo -e "${GREEN}Пользователь добавлен в группу docker.${NC}"
echo -e "${YELLOW}Для применения изменений可能需要 перезапустить сессию.${NC}"
else
echo -e "${GREEN}Пользователь $CURRENT_USER уже в группе docker.${NC}"
fi
# Клонирование репозитория
REPO_URL="https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git"
REPO_DIR="opendoor-vpn-to-tor"
if [ -d "$REPO_DIR" ]; then
echo -e "${GREEN}Репозиторий уже клонирован в $REPO_DIR.${NC}"
else
echo -e "${YELLOW}Клонирование репозитория...${NC}"
git clone "$REPO_URL" "$REPO_DIR"
if [ $? -eq 0 ]; then
echo -e "${GREEN}Репозиторий успешно клонирован.${NC}"
else
echo -e "${RED}Ошибка при клонировании репозитория.${NC}"
exit 1
fi
fi
# Копирование файлов tmux
TMUX_SOURCE_DIR="./tmux/"
TMUX_TARGET_DIR="/root/"
if [ -d "$TMUX_SOURCE_DIR" ]; then
echo -e "${YELLOW}Копирование файлов tmux...${NC}"
sudo cp -r "$TMUX_SOURCE_DIR"/* "$TMUX_TARGET_DIR"
echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}"
else
echo -e "${YELLOW}Папка tmux не найдена. Копирование не выполнено.${NC}"
fi
# Вывод версий
echo -e "\n${GREEN}Установленные версии:${NC}"
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 -e "\n${GREEN}Установка завершена успешно!${NC}"
}
# Запуск главной функции
main