Рубрики
Интернет

Как установить и настроить MTProto прокси на своем сервере?

MTProto — это протокол, разработанный Telegram для обхода блокировок. Ниже расскажу как установить и настроить MTProto прокси на своем сервере.

Что потребуется

  • VPS с Linux (Ubuntu 20.04/22.04 или Debian 11/12)
  • Root-доступ
  • Минимум 512 MB RAM, 1 CPU
  • Открытый порт (например, 443 или любой другой)

Вариант 1: официальный Python-сервер от Telegram (простой)

Шаг 1 — Обновляем систему

apt update && apt upgrade -y
apt install git curl python3 python3-pip -y

Шаг 2 — Клонируем репозиторий

git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy

Это C-реализация от самого Telegram. Компилируем:

apt install build-essential libssl-dev zlib1g-dev -y
make

После сборки бинарник будет в objs/bin/mtproto-proxy.

Шаг 3 — Получаем секрет и конфиг

# Скачиваем актуальный конфиг серверов Telegram
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

Генерируем свой секрет (16 байт в hex):

head -c 16 /dev/urandom | xxd -ps

Запоминаем этот HEX — это и есть твой SECRET.

Шаг 4 — Запускаем прокси

./objs/bin/mtproto-proxy \
  -u nobody \
  -p 8888 \
  -H 443 \
  -S <ВАШ_СЕКРЕТ> \
  --aes-pwd proxy-secret \
  proxy-multi.conf \
  -M 1

Параметры:

  • -p 8888 — внутренний порт (stats)
  • -H 443 — внешний порт, на который подключаются клиенты
  • -S — ваш секрет
  • -M 1 — количество воркеров (обычно = кол-ву CPU)

Вариант 2: через Docker (рекомендую для быстрого старта)

Самый удобный способ — использовать готовый образ.

apt install docker.io -y
systemctl enable --now docker

Генерируем секрет:

SECRET=$(head -c 16 /dev/urandom | xxd -ps)
echo "Ваш секрет: $SECRET"

Запускаем контейнер:

docker run -d \
  --name mtproto \
  --restart=always \
  -p 443:443 \
  -v /tmp/mtproxy:/data \
  -e SECRET=$SECRET \
  telegrammessenger/proxy:latest

Проверяем логи:

docker logs mtproto

В логах увидишь ссылку вида:

tg://proxy?server=...&port=443&secret=...

Вариант 3: MTG (Go-реализация, самая современная)

mtg — быстрая реализация на Go с поддержкой FakeTLS (маскировка под HTTPS).

# Устанавливаем бинарник
curl -L https://github.com/9seconds/mtg/releases/latest/download/mtg-linux-amd64 \
  -o /usr/local/bin/mtg
chmod +x /usr/local/bin/mtg

Генерируем секрет с FakeTLS (выглядит как обычный TLS-трафик):

mtg generate-secret --hex google.com

Это создаст секрет, который маскирует MTProto под соединение с google.com.

Запускаем:

mtg run <СЕКРЕТ> 0.0.0.0:443

Настройка автозапуска (systemd)

Создаём юнит-файл для любого варианта:

nano /etc/systemd/system/mtproto.service
[Unit]
Description=MTProto Proxy
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mtg run <СЕКРЕТ> 0.0.0.0:443
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Активируем:

systemctl daemon-reload
systemctl enable --now mtproto
systemctl status mtproto

Открываем порт в firewall

# UFW
ufw allow 443/tcp
ufw reload

# iptables
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Как подключиться к прокси

Ссылка для подключения формируется так:

tg://proxy?server=ВАШ_IP&port=443&secret=ВАШ_СЕКРЕТ

Если используете FakeTLS (mtg), секрет уже содержит нужный префикс — просто копируйте что выдала команда generate-secret.

В Telegram: Настройки → Данные и хранилище → Тип подключения → Использовать прокси

Вставляете ссылку или вводите параметры вручную.

Полезные советы

СитуацияРешение
Хочу скрыть трафикИспользуй mtg с FakeTLS
Много пользователейУвеличь -M (воркеры) или RAM
Порт 443 занят nginxИспользуй порт 8443 или настрой port forwarding
Нужна статистикаC-версия отдаёт stats на -p порту

Мониторинг

Для C-версии статистика доступна так:

curl http://localhost:8888/stats

Для Docker:

docker stats mtproto

Если что-то не работает — первым делом проверь, открыт ли порт снаружи (nmap -p 443 ВАШ_IP с другой машины), и убедись что в логах нет ошибок с загрузкой proxy-secret.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *