#!/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 if [ $? -ne 0 ]; then echo "Ошибка при обновлении пакетов." exit 1 fi # Установка tmux check_install tmux # Установка mc (Midnight Commander) check_install mc # Установка git check_install git # Установка Docker 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 (без дефиса, как 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 # Установка 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 "Установленные версии:" tmux -V mc -V dry --version docker --version docker compose version git --version echo "Установка и настройка завершены!"