From 873a1202eeef46737f0e30d620b0020ced243ba9 Mon Sep 17 00:00:00 2001 From: Verum Date: Fri, 6 Mar 2026 18:10:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20mtproto.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mtproto.sh | 242 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 mtproto.sh diff --git a/mtproto.sh b/mtproto.sh new file mode 100644 index 0000000..d7730ce --- /dev/null +++ b/mtproto.sh @@ -0,0 +1,242 @@ +#!/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" <