#!/usr/bin/env bash # ----------------------------------------------------------------------------- # Включает режим немедленного завершения скрипта при любой ошибке. # Это предотвращает ситуацию, когда одна из команд не выполнилась, # но скрипт продолжил работу и создал некорректную конфигурацию. # ----------------------------------------------------------------------------- set -e # ----------------------------------------------------------------------------- # Директория установки MTProto Proxy. # Здесь будут храниться: # - docker-compose.yml # - .env # При необходимости путь можно изменить. # ----------------------------------------------------------------------------- INSTALL_DIR="/opt/mtproto" # ----------------------------------------------------------------------------- # Заголовок установщика # ----------------------------------------------------------------------------- echo "=== MTProto Proxy Installer ===" # ----------------------------------------------------------------------------- # Проверка запуска от root. # Установка Docker, обновление системы и работа с /opt требуют root прав. # Если скрипт запущен обычным пользователем — завершаем выполнение. # ----------------------------------------------------------------------------- if [ "$EUID" -ne 0 ]; then echo "Run script as root" exit 1 fi # ----------------------------------------------------------------------------- # Запрос порта для MTProto Proxy. # Если пользователь просто нажмёт Enter — будет использован порт 443. # ----------------------------------------------------------------------------- echo read -p "Enter MTProto port (default 443): " PORT # Если переменная пустая — подставляем значение по умолчанию PORT=${PORT:-443} # ----------------------------------------------------------------------------- # Запрос TAG. # TAG используется для Telegram Ads / статистики прокси. # Он необязательный, поэтому можно просто нажать Enter. # ----------------------------------------------------------------------------- echo read -p "Enter TAG (optional, press enter to skip): " TAG # ----------------------------------------------------------------------------- # Генерация SECRET ключа. # SECRET — это основной ключ доступа к MTProto Proxy. # Генерируется 16 байт случайных данных (32 hex символа). # ----------------------------------------------------------------------------- SECRET=$(openssl rand -hex 16) # ----------------------------------------------------------------------------- # Вывод сгенерированного секретного ключа пользователю # ----------------------------------------------------------------------------- echo echo "Generated SECRET:" echo "$SECRET" echo # ----------------------------------------------------------------------------- # Обновление системы. # Это рекомендуется делать перед установкой Docker, # чтобы избежать проблем с зависимостями. # ----------------------------------------------------------------------------- echo "Updating system..." apt update apt upgrade -y # ----------------------------------------------------------------------------- # Проверяем установлен ли Docker. # command -v docker возвращает путь к бинарнику если он существует. # Если Docker не найден — запускается процедура установки. # ----------------------------------------------------------------------------- if ! command -v docker >/dev/null 2>&1; then echo "Installing Docker..." # --------------------------------------------------------------------------- # Установка необходимых пакетов # --------------------------------------------------------------------------- apt install -y ca-certificates curl gnupg # --------------------------------------------------------------------------- # Создание директории для хранения GPG ключей репозиториев # --------------------------------------------------------------------------- install -m 0755 -d /etc/apt/keyrings # --------------------------------------------------------------------------- # Добавление официального GPG ключа Docker # --------------------------------------------------------------------------- curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ | gpg --dearmor -o /etc/apt/keyrings/docker.gpg # --------------------------------------------------------------------------- # Разрешение чтения ключа системой # --------------------------------------------------------------------------- chmod a+r /etc/apt/keyrings/docker.gpg # --------------------------------------------------------------------------- # Добавление официального Docker репозитория в систему # VERSION_CODENAME автоматически определяет версию Ubuntu # --------------------------------------------------------------------------- echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo $VERSION_CODENAME) stable" \ > /etc/apt/sources.list.d/docker.list # --------------------------------------------------------------------------- # Обновление списка пакетов после добавления репозитория # --------------------------------------------------------------------------- apt update # --------------------------------------------------------------------------- # Установка Docker Engine и Docker Compose plugin # --------------------------------------------------------------------------- apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # --------------------------------------------------------------------------- # Включаем автозапуск Docker при старте системы # --------------------------------------------------------------------------- systemctl enable docker # Запускаем Docker сразу systemctl start docker fi # ----------------------------------------------------------------------------- # Создание директории установки MTProto # ----------------------------------------------------------------------------- echo "Creating directory $INSTALL_DIR" mkdir -p "$INSTALL_DIR" # ----------------------------------------------------------------------------- # Пути к создаваемым конфигурационным файлам # ----------------------------------------------------------------------------- ENV_FILE="$INSTALL_DIR/.env" COMPOSE_FILE="$INSTALL_DIR/docker-compose.yml" # ----------------------------------------------------------------------------- # Создание файла .env # Этот файл хранит переменные окружения для Docker Compose # ----------------------------------------------------------------------------- echo "Creating .env" cat > "$ENV_FILE" < "$COMPOSE_FILE" <