169 lines
6.2 KiB
Bash
169 lines
6.2 KiB
Bash
#!/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 "Установка и настройка завершены!" |