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

Как поднять свой прокси сервер MTProto Proxy?

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

Что нужно для старта

  • VPS-сервер с Linux (Ubuntu 20.04/22.04 — оптимально)
  • Минимум 512 МБ RAM, 1 vCPU
  • Чистый IP (не из спам-баз)
  • Открытые порты (обычно 443 или любой другой)

Вариант 1 — Official Telegram MTProto Proxy (на Go)

Это официальная реализация от команды Telegram, написанная на Go. Самая стабильная.

Установка

# Обновляем систему
apt update && apt upgrade -y

# Устанавливаем зависимости
apt install -y git curl

# Устанавливаем Go (если нет)
curl -OL https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc

# Клонируем репозиторий
git clone https://github.com/TelegramMessenger/MTProxyGo.git
cd MTProxyGo

# Собираем
go build -o mtproxy .

Генерируем секрет и запускаем

# Генерируем случайный секрет (16 байт = 32 hex символа)
SECRET=$(openssl rand -hex 16)
echo "Ваш секрет: $SECRET"

# Запускаем прокси
./mtproxy -secret $SECRET -port 443

Вариант 2 — MTProto Proxy на Python (9seconds/mtprotoproxy)

Популярная альтернатива, простая в настройке.

apt install -y python3 python3-pip git

git clone https://github.com/9seconds/mtprotoproxy.git
cd mtprotoproxy

# Генерируем секрет
python3 -c "import os; print(os.urandom(16).hex())"

# Копируем конфиг
cp config.py.example config.py
nano config.py

В файле config.py меняем:

PORT = 443
USERS = {
    "user1": "ВАШ_СЕКРЕТ_СЮДА",
}
# Включаем режим TLS (маскировка под HTTPS трафик)
PREFER_REQU_SECUR = True

Запуск:

python3 mtprotoproxy.py config.py

Вариант 3 — Docker (самый простой способ)

# Устанавливаем Docker
curl -fsSL https://get.docker.com | sh

# Генерируем секрет
SECRET=$(openssl rand -hex 16)

# Запускаем контейнер
docker run -d \
  --name mtproto-proxy \
  --restart=always \
  -p 443:443 \
  -e SECRET=$SECRET \
  telegrammessenger/proxy:latest

echo "Ваш секрет: $SECRET"

Через 30 секунд прокси готов.

Настройка фаервола

# Разрешаем порт
ufw allow 443/tcp
ufw allow 443/udp
ufw enable

# Проверяем
ufw status

Создание ссылки для подключения

Ссылка для Telegram имеет формат:

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

Режим FakeTLS (рекомендуется)

Этот режим маскирует трафик под обычный HTTPS, что сильно усложняет блокировку. Секрет в этом случае начинается с ee + домен в hex:

# Пример: маскируем под google.com
python3 -c "
import binascii
domain = 'google.com'
hex_domain = binascii.hexlify(domain.encode()).decode()
import os
secret = os.urandom(16).hex()
print('Секрет: ee' + secret + hex_domain)
"

Ссылка с FakeTLS:

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

Автозапуск через systemd

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

[Service]
Type=simple
WorkingDirectory=/root/MTProxyGo
ExecStart=/root/MTProxyGo/mtproxy -secret ВАШ_СЕКРЕТ -port 443
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mtproxy
systemctl start mtproxy
systemctl status mtproxy

Проверка работы

# Смотрим, слушает ли порт
ss -tlnp | grep 443

# Проверяем логи (docker)
docker logs mtproxy -f

# Тест подключения
curl -v telnet://ВАШ_IP:443
Советы по безопасности
РекомендацияЗачем
Используйте нестандартный порт (например, 8443)Меньше внимания от DPI
Включайте FakeTLSТрафик выглядит как HTTPS
Не публикуйте IP публичноСнизите риск блокировки
Меняйте секрет раз в месяцНа случай утечки
Ставьте fail2banЗащита от брутфорса

Самый быстрый путь — Docker вариант: одна команда, и всё работает. Для продакшна или если хотите полный контроль — используйте Go-версию с systemd. FakeTLS включайте всегда — это ваша главная защита от блокировки по DPI.

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

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