Telegram WEB Proxy можно запустить на собственном VPS с Ubuntu или Debian. Понадобятся домен, публичный IP-адрес и два свободных порта. Сервер будет принимать соединения Telegram через обычный HTTPS, а затем передавать трафик в сеть мессенджера.
Для установки возьмём официальный проект tproxy-server из репозитория Telegram Desktop. Он включает установщик, который разворачивает веб-сервер Caddy, WEB-релей и обычный MTProxy. Docker не потребуется.
WEB Proxy отличается от обычного MTProxy. Клиент использует встроенный браузерный компонент WebView, через который передаёт зашифрованные соединения по HTTPS или WebSocket. Внешне сервер работает как сайт. Подробнее принцип работы WEB-прокси уже разбирали на SecurityLab.
Инструкция рассчитана на собственный сервер или VPS, которым вы вправе управлять. WEB Proxy не обеспечивает анонимность, не заменяет VPN и не гарантирует доступность Telegram при любых сетевых ограничениях. Учитывайте требования законодательства и правила хостинг-провайдера.
1. Подготовка сервера
Для установки понадобятся Ubuntu 22.04 или новее либо Debian 12 или новее, архитектура x86_64, публичный IPv4, доступ по SSH с правами root или sudo и домен.
Для примера используем следующие условные данные.
- Сервер с Ubuntu 24.04.
- Публичный IP-адрес 203.0.113.10.
- Домен connect.example.org.
- Почта администратора admin@example.org.
Замените адреса на собственные. IP 203.0.113.10 и домен example.org приведены исключительно для примера.
Сначала проверьте порты. Подключитесь к серверу по SSH и выполните команду.
sudo ss -lntp
Посмотрите, заняты ли TCP-порты 80 и 443. Если на 443 уже работает Nginx, Caddy, Apache, Xray или Docker-контейнер, не запускайте автоматическую установку. Установщик заменяет конфигурацию Caddy и может нарушить работу существующих сайтов. Для такого сервера потребуется ручная интеграция или отдельный VPS.
Далее создайте у регистратора DNS-запись типа A.
Тип: A
Имя: connect
Значение: 203.0.113.10
Если домен обслуживается Cloudflare, переключите запись в режим DNS only, без проксирования через CDN.
Проверьте, что домен разрешается в IP сервера.
getent ahostsv4 connect.example.org
Разрешите входящие TCP-соединения на порты 80 и 443. Сначала убедитесь, что доступ по SSH сохранён.
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
При использовании сетевого межсетевого экрана в панели хостинга откройте те же порты там. Для выпуска HTTPS-сертификата Let's Encrypt сервер должен быть доступен извне.
2. Установка TG WEB Proxy
Установим Git и OpenSSL.
sudo apt update
sudo apt install -y git openssl ca-certificates
Создадим секретный ключ для прокси.
openssl rand -hex 16
Команда напечатает 32 шестнадцатеричных символа. Сохраните полученную строку в защищённом месте. При установке потребуется ввести секрет вручную.
Подготовим сайт. Официальный установщик требует веб-страницу, которую сервер будет показывать обычным посетителям без учётных данных прокси. Для первоначальной проверки достаточно файла index.html.
sudo mkdir -p /opt/tproxy-public
sudo nano /opt/tproxy-public/index.html
Добавьте собственную HTML-страницу. Минимальный тестовый пример.
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Information Center</title>
</head>
<body>
<h1>Information Center</h1>
<p>Welcome to our information website.</p>
</body>
</html>
Для постоянной работы лучше разместить полноценный собственный сайт с несколькими страницами. Одинаковые шаблонные заглушки на множестве серверов упрощают обнаружение прокси по характерным признакам.
Теперь скачиваем исходный код.
cd /opt
sudo git clone https://github.com/telegramdesktop/tproxy-server.git
cd /opt/tproxy-server
Запускаем установщик.
sudo ./deploy/install.sh
--hostname connect.example.org
--email admin@example.org
--site-dir /opt/tproxy-public
Установщик запросит секрет, который мы сгенерировали ранее. Вставьте строку из команды openssl rand -hex 16 и нажмите Enter.
Дальше скрипт самостоятельно скачает необходимые компоненты, проверит их, соберёт MTProxy и tproxy-server, настроит systemd, локальные правила межсетевого экрана, Caddy и выпуск TLS-сертификата.
При успешном завершении появятся параметры подключения. Пример вывода выглядит следующим образом.
Installed for https://connect.example.org/abc123
Internal mtproxy secret: ...
Proxy server: connect.example.org/abc123
Proxy secret: ...
Proxy link: https://t.me/webproxy?server=...
Не перепутайте Internal mtproxy secret и Proxy secret. В актуальном установщике по умолчанию создаётся случайный путь для WEB-релея. Поэтому адрес для клиента может содержать дополнительную часть после имени домена, а клиентский секрет будет отличаться от первоначального.
Используйте именно значения Proxy server и Proxy secret, которые напечатал установщик. Самостоятельно сокращать адрес до домена или подставлять исходный ключ нельзя.
3. Проверяем работу и подключаем Telegram
Первым делом проверим состояние сервисов.
sudo systemctl --no-pager --full status
caddy tproxy-firewall mtproxy tproxy-server
У работающих служб должен отображаться статус active (running). Служба настройки межсетевого экрана может иметь статус active (exited), что нормально для однократного применения правил.
Проверим готовность WEB-релея.
curl -fsS -o /dev/null -w '%{http_code}
'
http://127.0.0.1:8081/readyz
Ожидаемый ответ при исправной работе релея равен 200.
Теперь проверим HTTPS-сайт.
curl -fsS https://connect.example.org/
Сервер должен вернуть содержимое созданного index.html. Если HTTPS работает, проверьте сертификат.
openssl s_client
-connect connect.example.org:443
-servername connect.example.org
</dev/null 2>/dev/null |
openssl x509 -noout -subject -issuer -dates
Сертификат должен соответствовать домену и иметь действующий срок.
Подключаем Telegram. Откройте последнюю версию Telegram, которая поддерживает тип WEB Proxy.
В Telegram Desktop перейдите в «Настройки», затем «Продвинутые настройки», «Тип соединения», «Использовать прокси». Добавьте новый прокси типа WEB.
Введите два параметра, полученных после установки.
Тип: WEB
Сервер: значение Proxy server
Secret: значение Proxy secret
Указывать порт не нужно. Telegram WEB Proxy использует HTTPS на порту 443.
Для подключения на мобильном клиенте можно отправить себе ссылку формата tg://webproxy?server=...&secret=... и открыть её внутри Telegram. Ссылку формата https://t.me/webproxy не всегда удаётся обработать в обычном браузере, поэтому надёжнее добавлять прокси вручную или через ссылку tg://.
Успешная проверка HTTPS-сайта ещё не доказывает, что Telegram работает через прокси. После подключения отправьте сообщение, загрузите фотографию и проверьте соединение через другую сеть, например мобильный интернет.
4. Ошибки, диагностика и ограничения
Если Telegram не подключается, посмотрите журналы служб.
sudo journalctl -u tproxy-server -n 100 --no-pager
sudo journalctl -u mtproxy -n 100 --no-pager
sudo journalctl -u caddy -n 100 --no-pager
Для просмотра текущих событий в реальном времени выполните команду.
sudo journalctl -u tproxy-server -f
Проверьте входящие сетевые соединения и правила защиты внутреннего MTProxy.
sudo ss -lntp
sudo nft list table inet tproxy_backend
Снаружи должны быть доступны только необходимые публичные порты, обычно 80 и 443. Внутренние службы на 8080 и 8081 должны слушать адрес 127.0.0.1. Порт MTProxy 2398 не должен быть доступен из интернета.
Самые характерные проблемы следующие.
| Проблема | Причина и решение |
|---|---|
| Домен не открывается | Проверьте DNS, IP-адрес и входящие TCP-порты 80 и 443. |
| Не выпускается TLS-сертификат | Проверьте DNS, доступность сервера извне, настройки Caddy и отсутствие неверной AAAA-записи. |
| Сайт открывается, Telegram не подключается | Проверьте значения Proxy server и Proxy secret, журналы релея и доступ сервера к инфраструктуре Telegram. |
| Telegram подключается, но сообщения не проходят | Проверьте MTProxy и возможные ошибки NAT. При размещении за NAT нужен корректный параметр nat-info. |
| Соединения обрываются | Проверьте сетевую доступность домена, возможные ограничения провайдера, журналы и выбранный транспорт. |
| Порт 443 уже занят | Не запускайте полный установщик поверх работающего веб-сервера. Используйте отдельный VPS или настраивайте ручную интеграцию. |
При проблемах со скоростью можно попробовать режим websocket. В официальной реализации транспорт выбирается в конфигурации профиля.
sudo nano /etc/tproxy-server/profiles.json
В существующий профиль добавляют параметр carrier_mode со значением websocket, сохраняя остальные поля и секрет без изменений. После правки перезапустите релей.
sudo systemctl restart tproxy-server
WebSocket может сократить задержки, связанные с передачей данных отдельными HTTPS-запросами, но универсального выигрыша в скорости нет. Результат зависит от сети, числа соединений, задержек и ограничений сервера.
Для наблюдения за работой релея используйте локальную страницу метрик.
curl -fsS http://127.0.0.1:8081/metrics
Оставляйте интерфейс метрик доступным только локально. Не включайте подробное логирование полных адресов запросов и секретных параметров WEB-релея.
Альтернатива без командной строки. В AmneziaVPN начиная с версии 5.0.2.1 поддерживается установка TProxy (Telegram WEB) через графический интерфейс. Добавьте собственный сервер в AmneziaVPN, откройте параметры сервера, перейдите в «Сервисы», выберите TProxy и укажите домен с электронной почтой для сертификата. Программа создаст секрет, страницу сайта и настройки подключения. Такой способ описан в инструкции Amnezia. Для нового чистого VPS такой вариант проще, если не требуется вручную управлять конфигурацией.
Частые вопросы
Можно ли установить Telegram WEB Proxy без домена?
Для рассматриваемой официальной реализации нужен собственный домен или поддомен с работающим HTTPS-сертификатом. Обычного IP-адреса недостаточно. Домен используется в установлении защищённого соединения и формировании параметров доступа к релею.
Можно ли использовать сервер, где уже работает Docker?
Да, если необходимые порты свободны и установленным компонентам не мешают существующие настройки сети. Однако официальный автоматический установщик рассчитан преимущественно на чистый сервер. Если Docker уже использует TCP 80 или 443, лучше выделить отдельный VPS либо настроить WEB-релей за существующим обратным прокси вручную.
Можно ли установить WEB Proxy на порт 8443 вместо 443?
В стандартном клиентском режиме WEB Proxy порт 443 фиксирован. Приложение не предлагает отдельного поля для другого порта. Изменение внутреннего порта релея не меняет публичный порт подключения Telegram.
Нужен ли отдельный сервер для каждого пользователя?
Нет. Один WEB-релей может обслуживать нескольких пользователей. Их количество ограничивают пропускная способность сервера, настройки релея, ресурсы MTProxy и качество каналов до Telegram. Для семейного использования достаточно начать с одного сервера и стандартных настроек.
Может ли владелец WEB Proxy читать сообщения Telegram?
В штатной архитектуре прокси пересылает зашифрованные данные и не получает доступ к содержимому сообщений только благодаря своему положению между клиентом и Telegram. Однако оператор сервера может наблюдать сетевые подключения, IP-адреса и другие технические метаданные. WEB Proxy не обеспечивает анонимность.
Будет ли Telegram WEB Proxy работать, если IP сервера заблокируют?
Нет гарантии. WEB Proxy меняет внешний вид трафика, но не скрывает сам факт соединения с конкретным IP-адресом. Если сеть полностью блокирует доступ к адресу или домену сервера, обычный HTTPS также может оказаться недоступным.
Вывод. Для чистого VPS с Ubuntu или Debian разумнее начать с официального telegramdesktop/tproxy-server. Установщик подготовит три основных компонента и выдаст готовые параметры подключения. Если требуется только простой личный прокси без ручного управления службами, установка TProxy через AmneziaVPN удобнее.
Перед запуском на действующем сервере проверьте порты 80 и 443. Если сервер уже обслуживает сайты или другие сетевые службы, сначала изучите текущую конфигурацию, чтобы не нарушить их работу. Настроенный HTTPS-сайт, готовность релея и успешная передача сообщений Telegram через другую сеть вместе дают гораздо более надёжную проверку, чем один статус systemd.