Как установить Telegram WEB Proxy на свой сервер Ubuntu или Debian

655
Как установить Telegram WEB Proxy на свой сервер Ubuntu или Debian

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.

Telegram прокси сервер установка настройка Linux ubuntu Debian HTTPS mtproto
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
18 ноября 14:20 Безопасная 1С: как защитить ERP без потери производительности Митап УЦСБ: как выстроить комплексную защиту ERP и сохранить производительность. Зарегистрироваться Москва Реклама. 18+ ООО «УЦСБ» ИНН 6672235068