From 901b621117aaf25f083aa3bcd0641d530e0f655e Mon Sep 17 00:00:00 2001 From: NW Date: Wed, 15 Jan 2025 12:37:06 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20setup=5Fvps.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup_vps.sh | 127 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 112 insertions(+), 15 deletions(-) diff --git a/setup_vps.sh b/setup_vps.sh index 3375895..2cf817d 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -1,23 +1,120 @@ #!/bin/bash -# Обновление пакетов и установка базовых утилит +# Функция для проверки установки пакета +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 +} + +# Обновление пакетов +echo "Обновление пакетов..." sudo apt-get update && sudo apt-get upgrade -y -sudo apt-get install -y tmux mc dry git +if [ $? -ne 0 ]; then + echo "Ошибка при обновлении пакетов." + exit 1 +fi + +# Установка tmux +check_install tmux + +# Установка mc (Midnight Commander) +check_install mc + +# Установка git +check_install git # Установка Docker -sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -sudo apt-get update -sudo apt-get install -y docker-ce docker-ce-cli containerd.io +if ! command -v docker &> /dev/null; then + echo "Установка Docker..." + sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get update + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + if [ $? -eq 0 ]; then + echo "Docker успешно установлен." + else + echo "Ошибка при установке Docker." + exit 1 + fi +else + echo "Docker уже установлен." +fi -# Установка Docker Compose (без использования docker-compose) -DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') -sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose +# Установка Docker Compose (без дефиса, как standalone-бинарник) +if ! command -v docker compose &> /dev/null; then + echo "Установка Docker Compose..." + DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') + sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + # Создаём симлинк для использования команды `docker compose` (без дефиса) + sudo ln -s /usr/local/bin/docker-compose /usr/local/bin/docker compose + if [ $? -eq 0 ]; then + echo "Docker Compose успешно установлен." + else + echo "Ошибка при установке Docker Compose." + exit 1 + fi +else + echo "Docker Compose уже установлен." +fi -# Добавление текущего пользователя в группу docker, чтобы не использовать sudo для docker команд -sudo usermod -aG docker $USER +# Установка dry (интерфейс для управления Docker) +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/ + if [ $? -eq 0 ]; then + echo "dry успешно установлен." + else + echo "Ошибка при установке dry." + exit 1 + fi +else + echo "dry уже установлен." +fi + +# Добавление текущего пользователя в группу docker +if ! groups $USER | grep -q '\bdocker\b'; then + echo "Добавление пользователя $USER в группу docker..." + sudo usermod -aG docker $USER + if [ $? -eq 0 ]; then + echo "Пользователь $USER добавлен в группу docker." + else + echo "Ошибка при добавлении пользователя в группу docker." + exit 1 + fi +else + echo "Пользователь $USER уже в группе docker." +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 "Репозиторий уже клонирован в директорию $REPO_DIR." +else + echo "Клонирование репозитория $REPO_URL..." + git clone "$REPO_URL" "$REPO_DIR" + if [ $? -eq 0 ]; then + echo "Репозиторий успешно клонирован в директорию $REPO_DIR." + else + echo "Ошибка при клонировании репозитория." + exit 1 + fi +fi # Вывод версий установленных программ echo "Установленные версии:" @@ -25,7 +122,7 @@ tmux -V mc -V dry --version docker --version -docker-compose --version +docker compose version git --version -echo "Установка завершена!" \ No newline at end of file +echo "Установка и настройка завершены!" \ No newline at end of file