В условиях ужесточения блокировок и внедрения систем глубокого анализа трафика (DPI), классические прокси-серверы (SOCKS5, стандартный MTProto) всё чаще попадают под фильтры провайдеров. Они либо блокируются по сигнатурам, либо подвергаются таргетингу (замедлению).
Команда Telegram Desktop разработала и открыла код альтернативного решения — tproxy-server (Web Proxy). Его главная особенность в том, что он инкапсулирует зашифрованный трафик MTProto внутрь обычного HTTPS или WebSocket-соединения. Для DPI-систем и сетевых администраторов это выглядит как абсолютно легитимное посещение защищенного веб-сайта.
В этой статье мы разберем, как работает эта технология, и установим её на собственный VPS за 5 минут с помощью автоматизированного скрипта.
Как это работает?
Архитектура Web Proxy отличается от классической:
Клиент Telegram (например, Desktop или WEB) открывает скрытый WebView.
Вместо прямого TCP-соединения с прокси, клиент устанавливает стандартное HTTPS/WSS соединение с вашим доменом.
Серверная часть (
tproxy-serverна Go) принимает этот веб-трафик, извлекает из него MTProto-пакеты и перенаправляет их локальному демонуmtproxy(на C).mtproxyобщается с серверами Telegram как обычно.
Ключевое преимущество: Внешний наблюдатель видит только TLS-трафик к вашему домену. Без расшифровки (которая невозможна благодаря HTTPS) отличить этот трафик от посещения обычного сайта-визитки невозможно.
Требования к серверу
Перед началом убедитесь, что у вас есть:
VPS/VDS: Архитектура x86_64, ОС Ubuntu 22.04+ или Debian 12+. (Минимум 1 ГБ RAM для комфортной компиляции).
Расположение сервера лучше всего брать зарубежом (Нидерланды, Финляндия и др.)
Доменное имя: Например,
proxy.example.com. Оно должно быть привязано к IP-адресу вашего сервера через A-запись.Открытые порты: В панели управления хостинга и фаерволе сервера должны быть открыты порты 80 (для получения SSL-сертификата Let's Encrypt) и 443 (для основного трафика).
-
Важно: Не используйте CDN (например, Cloudflare) в прозрачном режиме для этого домена. Caddy должен иметь прямой доступ к порту 80 для HTTP-01 валидации.
Рекомендуемые сервера
Пошаговая установка
Для максимальной простоты и исключения человеческих ошибок (включая обход известных багов с правами доступа в оригинальных скриптах сборки) мы используем проверенный bash-скрипт.
Шаг 1: Подготовка
Подключитесь к вашему серверу по SSH под пользователем root (или используйте sudo).
Шаг 2: Загрузка и запуск скрипта
Скачайте скрипт установки и запустите его строго через интерпретатор bash (использование sh может вызвать синтаксические ошибки из-за различий в оболочках):
curl -fsSL https://raw.githubusercontent.com/fastbrains13/telegram-web-proxy/main/install.sh -o install.sh chmod +x install.sh sudo bash install.sh
Шаг 3: Ввод данных
Скрипт интерактивно запросит у вас три параметра:
Доменное имя (например,
fbinfo.site).Email (нужен только для экстренных уведомлений от Let's Encrypt, можно использовать любой рабочий).
Секретный ключ. Если оставить поле пустым и нажать Enter, скрипт сгенерирует надежный 32-символьный hex-ключ автоматически.
Что делает скрипт "под капотом"?
Если вам интересно, что именно запускается от имени root, скрипт выполняет следующие действия:
Устанавливает зависимости:
curl,git,build-essential,golang-go,nftables.Клонирует официальный репозиторий и компилирует
tproxy-server(пропуская проблемные unit-тесты прав доступа).Создает системных пользователей
tproxyиmtproxyс ограниченными правами.Генерирует конфигурационные файлы со строгими правами доступа (
chmod 0400), что является требованием безопасности Telegram.Устанавливает и настраивает веб-сервер Caddy для автоматического получения и продления SSL-сертификатов.
Настраивает правила
nftables, чтобы скрыть внутренние порты (2398, 8080, 8081) от внешнего мира, оставляя доступными только 80 и 443.Регистрирует и запускает systemd-службы.
Подключение в Telegram
После успешного завершения скрипт выведет в консоль готовые данные для подключения и удобную ссылку.

Она выглядит так:
https://t.me/webproxy?server=fbinfo.site&secret=48fabba482b3c337550ef2ba9fa0a77b
Просто кликните по этой ссылке на устройстве, где установлен Telegram (на данный момент наилучшая поддержка реализована в Telegram Desktop). Приложение автоматически распознает формат, предложит добавить прокси и сразу же проверит соединение.
Проверка работоспособности и диагностика
Если что-то пошло не так, первым делом проверьте статус служб:
systemctl status caddy tproxy-server mtproxy --no-pager
Все они должны иметь статус active (running) и подсвечиваться зеленым.
Частые проблемы:
Ошибка 502 Bad Gateway при проверке домена: Подождите 30–60 секунд. Caddy в фоновом режиме запрашивает SSL-сертификат у Let's Encrypt. Повторите проверку:
curl -Ihttps://ваш-домен.site. Должен вернуться статусHTTP/2 200.Скрипт зависает на скачивании зависимостей Go: Убедитесь, что ваш хостинг-провайдер не блокирует исходящие соединения к
github.comилиcore.telegram.org. В редких случаях может потребоваться временное использование HTTP-прокси для установки.Клиент не подключается: Проверьте, что A-запись домена обновилась и указывает на правильный IP. Убедитесь, что порт 443 открыт в фаерволе хостинга (Security Groups).
Рекомендация по безопасности (Anti-Probing)
По умолчанию скрипт создает простую HTML-заглушку. Если ваш прокси будет использоваться многими людьми, рекомендуется заменить содержимое /srv/tproxy-site/ на копию реального, существующего сайта.
Это защитит от так называемого "активного зондирования" (active probing), когда блокирующие системы пытаются отличить прокси от обычного сайта, анализируя содержимое главной страницы. tproxy-server устроен так, что он покажет ваш сайт любому обычному посетителю, и только клиент Telegram, знающий правильный secret, сможет "пробиться" через него к прокси-функционалу.
Репозиторий скрипта: GitHub
Официальный репозиторий технологии: telegramdesktop/tproxy-server