Обновить setup_vps.sh
This commit is contained in:
parent
e808d89d8e
commit
2b14162c2d
244
setup_vps.sh
244
setup_vps.sh
@ -6,29 +6,6 @@ GREEN='\033[0;32m'
|
|||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
NC='\033[0m' # No Color
|
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() {
|
check_install() {
|
||||||
if command -v $1 &> /dev/null; then
|
if command -v $1 &> /dev/null; then
|
||||||
@ -45,90 +22,28 @@ check_install() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Установка Docker с правильными репозиториями
|
# Функция для определения дистрибутива
|
||||||
install_docker() {
|
detect_distro() {
|
||||||
if ! command -v docker &> /dev/null; then
|
if [ -f /etc/os-release ]; then
|
||||||
echo -e "${YELLOW}Установка Docker для $OS...${NC}"
|
. /etc/os-release
|
||||||
|
DISTRO=$ID
|
||||||
# Установка зависимостей
|
VERSION_CODENAME=$VERSION_CODENAME
|
||||||
sudo apt-get update
|
elif [ -f /etc/lsb-release ]; then
|
||||||
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
|
. /etc/lsb-release
|
||||||
|
DISTRO=${DISTRIB_ID,,}
|
||||||
# Добавление официального GPG ключа Docker
|
VERSION_CODENAME=$DISTRIB_CODENAME
|
||||||
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
|
else
|
||||||
echo -e "${YELLOW}Попытка установки Docker из стандартных репозиториев...${NC}"
|
echo -e "${RED}Не удалось определить дистрибутив.${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
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}Docker уже установлен.${NC}"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Установка btop с поддержкой GPU
|
# Предупреждение о запуске от root (только информативное)
|
||||||
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
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
echo -e "${YELLOW}Внимание: Скрипт запущен от root. Рекомендуется запускать от обычного пользователя с sudo.${NC}"
|
echo -e "${YELLOW}Внимание: Скрипт запущен от root. Рекомендуется запускать от обычного пользователя с sudo.${NC}"
|
||||||
|
sleep 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
detect_distro
|
|
||||||
|
|
||||||
# Обновление пакетов
|
# Обновление пакетов
|
||||||
echo -e "${YELLOW}Обновление пакетов...${NC}"
|
echo -e "${YELLOW}Обновление пакетов...${NC}"
|
||||||
sudo apt-get update && sudo apt-get upgrade -y
|
sudo apt-get update && sudo apt-get upgrade -y
|
||||||
@ -142,9 +57,43 @@ main() {
|
|||||||
check_install mc
|
check_install mc
|
||||||
check_install git
|
check_install git
|
||||||
check_install net-tools
|
check_install net-tools
|
||||||
|
check_install curl
|
||||||
|
check_install wget
|
||||||
|
check_install build-essential
|
||||||
|
|
||||||
|
# Определение дистрибутива для установки Docker
|
||||||
|
detect_distro
|
||||||
|
|
||||||
# Установка Docker
|
# Установка Docker
|
||||||
install_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
|
# Установка dry
|
||||||
if ! command -v dry &> /dev/null; then
|
if ! command -v dry &> /dev/null; then
|
||||||
@ -158,60 +107,83 @@ main() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Установка btop
|
# Установка btop
|
||||||
install_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
|
# Добавление пользователя в группу docker
|
||||||
CURRENT_USER=${SUDO_USER:-$USER}
|
if ! groups $USER | grep -q '\bdocker\b'; then
|
||||||
if ! groups $CURRENT_USER | grep -q '\bdocker\b'; then
|
echo -e "${YELLOW}Добавление пользователя $USER в группу docker...${NC}"
|
||||||
echo -e "${YELLOW}Добавление пользователя $CURRENT_USER в группу docker...${NC}"
|
sudo usermod -aG docker $USER
|
||||||
sudo usermod -aG docker $CURRENT_USER
|
echo -e "${GREEN}Пользователь $USER добавлен в группу docker.${NC}"
|
||||||
echo -e "${GREEN}Пользователь добавлен в группу docker.${NC}"
|
|
||||||
echo -e "${YELLOW}Для применения изменений可能需要 перезапустить сессию.${NC}"
|
echo -e "${YELLOW}Для применения изменений可能需要 перезапустить сессию.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN}Пользователь $CURRENT_USER уже в группе docker.${NC}"
|
echo -e "${GREEN}Пользователь $USER уже в группе docker.${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Клонирование репозитория
|
# Клонирование репозитория
|
||||||
REPO_URL="https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git"
|
|
||||||
REPO_DIR="opendoor-vpn-to-tor"
|
REPO_DIR="opendoor-vpn-to-tor"
|
||||||
|
if [ ! -d "$REPO_DIR" ]; then
|
||||||
if [ -d "$REPO_DIR" ]; then
|
echo -e "${YELLOW}Клонирование репозитория opendoor-vpn-to-tor...${NC}"
|
||||||
echo -e "${GREEN}Репозиторий уже клонирован в $REPO_DIR.${NC}"
|
git clone https://git.softuniq.eu/OpenDoor/opendoor-vpn-to-tor.git "$REPO_DIR"
|
||||||
else
|
|
||||||
echo -e "${YELLOW}Клонирование репозитория...${NC}"
|
|
||||||
git clone "$REPO_URL" "$REPO_DIR"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo -e "${GREEN}Репозиторий успешно клонирован.${NC}"
|
echo -e "${GREEN}Репозиторий успешно клонирован.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${RED}Ошибка при клонировании репозитория.${NC}"
|
echo -e "${GREEN}Репозиторий уже клонирован.${NC}"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Копирование файлов tmux
|
# Копирование файлов tmux
|
||||||
TMUX_SOURCE_DIR="./tmux/"
|
if [ -d "tmux" ]; then
|
||||||
TMUX_TARGET_DIR="/root/"
|
|
||||||
|
|
||||||
if [ -d "$TMUX_SOURCE_DIR" ]; then
|
|
||||||
echo -e "${YELLOW}Копирование файлов tmux...${NC}"
|
echo -e "${YELLOW}Копирование файлов tmux...${NC}"
|
||||||
sudo cp -r "$TMUX_SOURCE_DIR"/* "$TMUX_TARGET_DIR"
|
sudo cp -r tmux/* /root/
|
||||||
echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}"
|
echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${YELLOW}Папка tmux не найдена. Копирование не выполнено.${NC}"
|
echo -e "${YELLOW}Папка tmux не найдена. Копирование не выполнено.${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Вывод версий
|
# Вывод версий установленных программ
|
||||||
echo -e "\n${GREEN}Установленные версии:${NC}"
|
echo -e "\n${GREEN}=== Установленные версии ===${NC}"
|
||||||
tmux -V 2>/dev/null || echo "tmux: не удалось получить версию"
|
tmux -V || echo "tmux: не удалось получить версию"
|
||||||
mc -V 2>/dev/null || echo "mc: не удалось получить версию"
|
mc -V || echo "mc: не удалось получить версию"
|
||||||
dry --version 2>/dev/null || echo "dry: не удалось получить версию"
|
dry --version || echo "dry: не удалось получить версию"
|
||||||
docker --version 2>/dev/null || echo "docker: не удалось получить версию"
|
docker --version || echo "docker: не удалось получить версию"
|
||||||
docker compose version 2>/dev/null || echo "docker compose: не установлен"
|
docker compose version || echo "docker compose: не удалось получить версию"
|
||||||
git --version 2>/dev/null || echo "git: не удалось получить версию"
|
git --version || echo "git: не удалось получить версию"
|
||||||
btop --version 2>/dev/null || echo "btop: не удалось получить версию"
|
btop --version || echo "btop: не удалось получить версию"
|
||||||
|
|
||||||
echo -e "\n${GREEN}Установка завершена успешно!${NC}"
|
echo -e "\n${GREEN}Установка и настройка завершены!${NC}"
|
||||||
}
|
|
||||||
|
|
||||||
# Запуск главной функции
|
|
||||||
main
|
|
Loading…
Reference in New Issue
Block a user