Добавить mtproto.sh
This commit is contained in:
242
mtproto.sh
Normal file
242
mtproto.sh
Normal file
@@ -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" <<EOF
|
||||||
|
MTPROTO_PORT=$PORT
|
||||||
|
MTPROTO_SECRET=$SECRET
|
||||||
|
MTPROTO_TAG=$TAG
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Создание docker-compose.yml
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
echo "Creating docker-compose.yml"
|
||||||
|
|
||||||
|
cat > "$COMPOSE_FILE" <<EOF
|
||||||
|
services:
|
||||||
|
mtproto:
|
||||||
|
image: telegrammessenger/proxy:latest
|
||||||
|
container_name: mtproto-proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- "\${MTPROTO_PORT}:443"
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- SECRET=\${MTPROTO_SECRET}
|
||||||
|
- TAG=\${MTPROTO_TAG}
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- proxy-data:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
proxy-data:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Запуск контейнера
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "Starting proxy..."
|
||||||
|
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Получение публичного IP сервера
|
||||||
|
# Используется для формирования ссылки подключения
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
IP=$(curl -s ifconfig.me)
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Финальная информация пользователю
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "================================="
|
||||||
|
echo "MTProto Proxy installed!"
|
||||||
|
echo
|
||||||
|
echo "Server: $IP"
|
||||||
|
echo "Port: $PORT"
|
||||||
|
echo "Secret: $SECRET"
|
||||||
|
echo
|
||||||
|
echo "Connection link:"
|
||||||
|
echo
|
||||||
|
echo "tg://proxy?server=$IP&port=$PORT&secret=$SECRET"
|
||||||
|
echo
|
||||||
|
echo "Config directory:"
|
||||||
|
echo "$INSTALL_DIR"
|
||||||
|
echo "================================="
|
||||||
Reference in New Issue
Block a user