Как установить Telemt на свой сервер Ubuntu или Debian. Подробная настройка Telegram MTProxy

844
Как установить Telemt на свой сервер Ubuntu или Debian. Подробная настройка Telegram MTProxy

Telemt принимает соединение от Telegram, проверяет секретный ключ и передаёт трафик на инфраструктуру Telegram. Пользователю достаточно открыть специальную ссылку, после чего клиент Telegram сохраняет настройки прокси.

Для маскировки Telemt поддерживает режим Fake TLS. Трафик внешне напоминает соединение TLS, а в начальных данных присутствует имя домена SNI. Дополнительные механизмы позволяют отвечать на некоторые проверочные запросы как обычный HTTPS-сервис.

Но Fake TLS не делает соединение полностью неотличимым от браузерного HTTPS. Системы DPI могут учитывать особенности TLS-отпечатка, сетевое поведение и IP-адрес сервера. Успешная работа зависит также от версии Telegram и ограничений конкретной сети.

Используйте прокси на принадлежащем вам сервере или с разрешения владельца. Не публикуйте административный API и секретные ключи. Самостоятельный прокси не гарантирует анонимность и не защищает от блокировки IP-адреса.

Для установки потребуется VPS с Ubuntu или Debian, доступ по SSH и публичный IP-адрес. Выделять отдельный сервер необязательно, если на существующем VPS достаточно ресурсов и есть свободный TCP-порт.

Компонент Что потребуется
Операционная система Ubuntu Server или Debian
Архитектура Совместимая с опубликованными сборками Telemt, обычно x86-64 или ARM64
Права root или sudo
Сетевой доступ Публичный IP, входящий TCP-порт и исходящие соединения с Telegram
Порт прокси 443 или другой свободный TCP-порт, например 8443
Домен Доступный HTTPS-домен для Fake TLS, желательно контролируемый администратором
Контейнеризация Необязательна. Telemt работает напрямую через systemd

Для личного прокси небольшой VPS обычно достаточен. Конкретные требования к CPU и памяти зависят от количества одновременных подключений, скорости передачи данных и выбранных функций.

2. Установка Telemt на Ubuntu или Debian

Шаг 1. Подключаемся к серверу

Подключитесь к VPS по SSH, заменив IP-адрес на свой.

ssh root@YOUR_SERVER_IP

Если используется обычная учётная запись с sudo, получите административную оболочку.

sudo -i

Дальнейшие команды предполагают, что вы работаете от root.

Обновите список пакетов и установите вспомогательные программы.

apt update
 apt install -y curl ca-certificates openssl jq nano

Шаг 2. Проверяем свободные порты

Перед установкой обязательно проверьте, какие службы уже работают на сервере.

ss -tulnp

Для проверки конкретных портов выполните команду.

ss -ltnp | grep -E ':(443|8443|9091) ' || true

Если вывод содержит строку вида 0.0.0.0:443 с процессом nginx, apache2 или docker-proxy, порт уже занят.

Не останавливайте существующие службы ради Telemt. На сервере с Docker, веб-сайтом или другими прокси безопаснее сначала установить Telemt на отдельный порт 8443.

Если используете Docker, дополнительно проверьте проброшенные порты контейнеров.

docker ps --format "table {{.Names}}t{{.Ports}}"

Команда нужна только при установленном Docker. Отсутствие Docker не мешает работе Telemt.

Шаг 3. Скачиваем официальный установщик

У проекта есть установщик, который загружает программу, создаёт конфигурацию и регистрирует службу systemd.

Вместо непосредственного запуска удалённого скрипта сначала сохраним файл, чтобы при необходимости проверить его содержимое.

curl -fsSL 
   https://raw.githubusercontent.com/telemt/telemt/main/install.sh 
   -o /root/telemt-install.sh

Посмотреть скрипт можно через less.

less /root/telemt-install.sh

Для нового сервера со свободным портом 443 используйте следующую команду.

sh /root/telemt-install.sh --lang ru --port 443

Установщик предложит выбрать TLS-домен, если не передать его заранее. Не оставляйте предложенное значение бездумно. Выбирайте доступный HTTPS-хост, подходящий для вашей схемы маскировки.

Если порт 443 уже занят, устанавливаем Telemt на 8443.

sh /root/telemt-install.sh --lang ru --port 8443

Можно указать TLS-домен явно.

sh /root/telemt-install.sh 
   --lang ru 
   --port 8443 
   --domain tls.example.org

Замените tls.example.org на реальный доступный HTTPS-домен. Примерный домен из инструкции использовать буквально нельзя.

Собственный домен удобен, если вы контролируете DNS и HTTPS-сервис. Однако простая запись DNS на адрес Telemt не превращает прокси в полноценный веб-сервер с действительным сертификатом. Для настоящего TLS-фронтинга потребуется дополнительно настроить HTTPS-сайт или TLS-маршрутизацию.

Шаг 4. Проверяем установку

После завершения установщик должен создать службу telemt.service и конфигурационный файл /etc/telemt/telemt.toml.

Проверьте состояние службы.

systemctl status telemt --no-pager

Успешный запуск сопровождается статусом active (running).

Проверьте порт.

ss -ltnp | grep telemt

Пример успешного результата при работе на 8443.

LISTEN 0 4096 0.0.0.0:8443 0.0.0.0:* users:(("telemt",pid=1234,fd=10))

Числа очереди, PID и дескриптора могут отличаться.

Убедитесь, что программа запускается после перезагрузки сервера.

systemctl is-enabled telemt

Если вывод содержит enabled, автозапуск включён.

При необходимости включите его самостоятельно.

systemctl enable telemt

Шаг 5. Открываем порт в межсетевом экране

Если на сервере используется UFW, посмотрите действующие правила.

ufw status verbose

Для прокси на 8443 разрешите входящие TCP-соединения.

ufw allow 8443/tcp

Для установки на 443 используйте соответствующее правило.

ufw allow 443/tcp

Не включайте UFW на удалённом сервере без проверки правила для фактического SSH-порта, иначе можно потерять административный доступ. Если UFW отключён, открывать порт через него недостаточно для полноценной настройки защиты.

Проверьте также межсетевой экран провайдера VPS. Некоторые панели управления облачными серверами отдельно ограничивают входящие соединения, даже если Linux разрешает нужный порт.

Шаг 6. Получаем ссылку для Telegram

У Telemt предусмотрен локальный API для управления пользователями. Стандартная конфигурация установщика включает интерфейс на 127.0.0.1:9091.

Для просмотра пользователей выполните команду.

curl -fsS http://127.0.0.1:9091/v1/users | jq

Для вывода готовых TLS-ссылок используйте более короткий вариант.

curl -fsS http://127.0.0.1:9091/v1/users 
   | jq -r '.data[] | .links.tls[]?'

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

tg://proxy?server=YOUR_SERVER_IP&port=8443&secret=ee...

Настоящий секрет длиннее. В режиме Fake TLS он содержит специальный префикс и закодированное имя TLS-домена.

Используйте ссылку, сгенерированную Telemt, а не собирайте секрет вручную. Иначе легко получить неправильный параметр secret.

Для подключения отправьте ссылку в Telegram и откройте её. Клиент предложит добавить MTProto-прокси. Подтвердите подключение и проверьте отправку сообщений, загрузку изображений и открытие каналов.

На компьютере параметры можно открыть вручную через настройки Telegram, раздел «Продвинутые настройки» и «Тип соединения» или «Прокси», в зависимости от версии клиента.

3. Ручная конфигурация Telemt и дополнительные настройки

Автоматический установщик создаёт базовую конфигурацию. Но именно в файле telemt.toml задаются параметры соединения, секретные ключи, режимы передачи данных и административные интерфейсы.

Перед изменениями сохраните резервную копию.

cp -a /etc/telemt/telemt.toml 
   /etc/telemt/telemt.toml.bak

Откройте файл.

nano /etc/telemt/telemt.toml

Ниже пример полной минимальной конфигурации для порта 8443. Используйте образец при самостоятельной настройке, заменяя значения уже существующих параметров, а не добавляя повторяющиеся разделы.

[general]
 use_middle_proxy = true
 log_level = "normal"
 
 [general.modes]
 classic = false
 secure = false
 tls = true
 
 [general.links]
 show = "*"
 
 [server]
 port = 8443
 
 [server.api]
 enabled = true
 listen = "127.0.0.1:9091"
 whitelist = ["127.0.0.1/32"]
 
 [[server.listeners]]
 ip = "0.0.0.0"
 
 [censorship]
 tls_domain = "tls.example.org"
 mask = true
 tls_emulation = true
 tls_front_dir = "tlsfront"
 
 [access.users]
 main = "REPLACE_WITH_32_HEX_CHARACTERS"

В конфигурации необходимо заменить домен и секрет. Секрет генерируется командой.

openssl rand -hex 16

Например, команда вернёт 32 шестнадцатеричных символа. Не используйте один и тот же ключ на всех серверах и не публикуйте его вместе с конфигурацией.

Разберём наиболее полезные параметры.

Параметр Назначение
server.port Порт, на котором Telemt принимает соединения
general.modes.tls Разрешает Fake TLS
general.modes.secure Разрешает отдельный режим MTProto с префиксом dd
general.use_middle_proxy Включает передачу трафика через инфраструктуру middle proxy Telegram
censorship.tls_domain Домен SNI для TLS-режима
censorship.mask Включает механизм маскировки для неподходящих подключений
censorship.tls_emulation Включает имитацию отдельных характеристик TLS-соединения
access.users Секретные ключи пользователей
server.api.listen Адрес административного API

После изменения конфигурации можно перезапустить службу.

systemctl restart telemt
 systemctl status telemt --no-pager

Telemt умеет применять ряд изменений пользователей без перезапуска. Однако изменения порта и некоторых других серверных параметров требуют более осторожного подхода. Плановый перезапуск гарантирует чтение обновлённого файла, но кратковременно разрывает активные соединения.

Добавляем отдельные ключи для пользователей

Telemt позволяет создавать несколько пользователей с независимыми секретами. Полезно, если вы хотите предоставить доступ родственникам, коллегам или нескольким устройствам и иметь возможность отключать отдельные ключи.

Сгенерируйте два дополнительных секрета.

openssl rand -hex 16
 openssl rand -hex 16

Добавьте записи в существующий раздел [access.users].

[access.users]
 main = "32_HEX_SECRET_1"
 phone = "32_HEX_SECRET_2"
 friend = "32_HEX_SECRET_3"

Каждая строка должна содержать отдельный реальный секрет из 32 шестнадцатеричных символов. Значения из примера не подходят.

После применения конфигурации получите ссылки.

curl -fsS http://127.0.0.1:9091/v1/users 
   | jq -r '.data[] |
     .username as $user |
     .links.tls[]? |
     "($user) (.)"'

При компрометации отдельного секрета достаточно заменить или удалить соответствующего пользователя.

Для ограничения числа одновременно используемых IP-адресов предусмотрен раздел [access.user_max_unique_ips].

[access.user_max_unique_ips]
 friend = 1

Учитывайте, что несколько устройств за одним NAT могут иметь одинаковый внешний IP. Напротив, одно устройство при переходе с Wi-Fi на мобильную сеть может использовать разные адреса.

Настраиваем домен в ссылке и Fake TLS

Параметр tls_domain задаёт имя, которое клиент использует при TLS-подобном подключении. Параметр public_host отвечает за адрес сервера в выдаваемой ссылке.

Если у вас есть собственный домен proxy.example.org с A-записью на публичный IP сервера, можно добавить в существующий раздел [general.links].

[general.links]
 show = "*"
 public_host = "proxy.example.org"
 public_port = 8443

Для полноценной HTTPS-маскировки желательно иметь рабочий HTTPS-сайт. Telemt поддерживает пересылку неавторизованного трафика на отдельный TLS-сервер через параметры mask_host и mask_port.

Например, при заранее настроенном локальном HTTPS-сервере на 8444 соответствующая часть конфигурации может выглядеть следующим образом.

[censorship]
 tls_domain = "proxy.example.org"
 mask = true
 mask_host = "127.0.0.1"
 mask_port = 8444

Сервер на 8444 должен действительно обслуживать HTTPS с сертификатом для указанного домена. Простой HTTP-сервис или случайный открытый порт не подходят. Если на 8444 ничего не запущено, маскировка не заработает как полноценный HTTPS-сайт.

Такая схема описана в руководстве по TLS-фронтингу.

Если на сервере уже работает nginx на 443, не пытайтесь добавить ещё один процесс на тот же публичный адрес и порт. Есть два варианта. Оставить Telemt на 8443 либо заранее перестроить схему приёма соединений с nginx, отдельным HTTPS-сервисом и Telemt. Второй вариант требует изменений действующей сетевой конфигурации.

Настраиваем статистику и мониторинг

Проверить активность прокси можно через локальный API.

curl -fsS 
   http://127.0.0.1:9091/v1/stats/summary 
   | jq

Для просмотра пользователей и их показателей доступен соответствующий API.

curl -fsS 
   http://127.0.0.1:9091/v1/users 
   | jq

Telemt также поддерживает метрики для систем мониторинга. Для включения локального интерфейса добавьте следующие параметры внутрь существующего раздела [server].

metrics_listen = "127.0.0.1:9090"
 metrics_whitelist = ["127.0.0.1/32"]

После перезапуска проверьте доступность порта.

ss -ltnp | grep 9090

Не открывайте порты 9090 и 9091 наружу. Доступ к статистике лучше организовать через SSH-туннель или защищённую административную сеть.

Подключаем спонсорский Telegram-канал

Telemt поддерживает рекламный тег ad_tag, который выдаёт Telegram через @MTProxybot. Такая функция пригодится владельцам публичных каналов.

В Telegram откройте @MTProxybot, отправьте команду /newproxy и передайте боту публичный IP с портом вашего прокси, а затем базовый пользовательский секрет. Полученный рекламный тег добавьте в раздел [general].

[general]
 use_middle_proxy = true
 ad_tag = "YOUR_32_HEX_AD_TAG"

После перезапуска Telemt откройте в боте /myproxies, выберите зарегистрированный прокси и настройте продвижение публичного канала.

Не путайте базовый ключ пользователя с ad_tag. Первый разрешает клиенту подключаться к серверу, второй связан с функцией продвижения канала. Ссылку, которую выдаёт бот, не следует автоматически считать рабочей ссылкой Telemt с Fake TLS. Получайте её через API самого прокси.

4. Диагностика, безопасность и обновление

Telemt работает, но Telegram не подключается

Проверяйте соединение последовательно, начиная с состояния службы.

systemctl status telemt --no-pager
 journalctl -u telemt -n 100 --no-pager

Если служба работает, проверьте прослушивание TCP-порта.

ss -ltnp | grep ':8443 '

Затем с другого компьютера, находящегося вне сети сервера, проверьте TCP-доступность.

nc -vz YOUR_SERVER_IP 8443

Если установлен netcat, команда покажет, удалось ли установить TCP-соединение. Проверка не подтверждает правильность MTProto и секретного ключа, а лишь доступность порта.

Для диагностики сетевых ошибок также полезна команда.

journalctl -u telemt -f

После её запуска попробуйте подключить Telegram и посмотрите, появляются ли сообщения об ошибках.

Наиболее распространённые причины проблем собраны ниже.

Проблема Что проверить
Connection refused Telemt не запущен, не слушает нужный адрес или порт
Connection timed out Межсетевой экран, маршрутизация, блокировка IP или порта
Unknown TLS SNI Несовпадение домена в секрете с текущим tls_domain
Telegram не принимает ключ Неправильно сформирован секрет или выбран тип прокси
API на 9091 недоступен API отключён, привязан к другому адресу или занят порт
Соединение работает только в одной сети Разные ограничения провайдеров, DNS или фильтрация трафика
Прокси внезапно перестал работать Изменение конфигурации, секретов, IP-адреса или блокировка

Проверяйте прокси отдельно через домашний интернет и мобильную сеть. Если сервер работает в одной сети, но недоступен в другой, переустановка Telemt обычно не решает сетевую проблему.

Основные меры защиты

  • Оставляйте API и метрики доступными только локально.
  • Используйте независимые случайные секреты для разных пользователей.
  • Не отправляйте конфигурацию вместе с ключами в публичные репозитории.
  • Не открывайте на сервере ненужные порты.
  • Не запускайте несколько прокси на одном TCP-порту.
  • Следите за обновлениями Telemt и Telegram.
  • Ограничивайте подробное журналирование, если не требуется диагностика.
  • Храните резервную копию конфигурации с ограниченным доступом.

Ссылка на прокси фактически представляет собой реквизит доступа. Любой человек, получивший действительный секрет, может попытаться воспользоваться прокси, если дополнительные ограничения не запрещают подключение.

Обновляем Telemt

Узнать установленную версию можно командой.

telemt --version

Если программа установлена в /bin, допустим и явный вызов.

/bin/telemt --version

Перед обновлением сделайте копию текущей конфигурации.

cp -a /etc/telemt/telemt.toml 
   /root/telemt-before-update.toml

Официальный установщик поддерживает повторный запуск для обновления. Однако на рабочем сервере сначала ознакомьтесь с новой версией скрипта и изменениями релиза. Особенно внимательно проверяйте совместимость конфигурации, если используете нестандартные сетевые настройки или несколько прокси.

После обновления проверьте службу, порт и подключение через Telegram. Не меняйте одновременно версию программы, TLS-домен и пользовательские секреты. Иначе будет сложнее найти причину возможной неисправности.

Вариант без командной строки

Если не хочется вручную управлять конфигурационными файлами, существует альтернативный способ через AmneziaVPN.

AmneziaVPN поддерживает установку Telemt на собственный сервер через графический интерфейс. В разделе серверных сервисов можно выбрать Telemt, задать порт, получить ссылку и посмотреть состояние подключения. Установка доступна в поддерживаемых версиях приложения.

Такой вариант удобнее для личного прокси без сложного администрирования. Порядок установки и поддерживаемые функции приведены в инструкции Amnezia.

Частые вопросы

Можно ли установить Telemt на сервер, где уже работает Docker?

Да. Telemt не требует Docker и может работать как отдельная служба systemd. Главное, чтобы выбранный TCP-порт не был занят контейнером или другой программой. Если Docker уже занимает 443, можно использовать 8443.

Обязательно ли покупать домен для Telemt?

Для самого MTProto-прокси домен не обязателен. Клиенты могут подключаться по IP-адресу. Но для Fake TLS нужен TLS-домен, а для качественной маскировки с настоящим HTTPS-сайтом удобнее иметь собственное доменное имя и действительный сертификат.

Чем Telemt отличается от обычного MTProxy?

Telemt представляет собой альтернативную реализацию Telegram MTProxy. Помимо базового проксирования, проект поддерживает дополнительные механизмы маскировки, управление пользователями, статистику и отдельные сценарии маршрутизации. Наличие дополнительных функций не гарантирует лучшую работу во всех сетях.

Можно ли пользоваться звонками Telegram через Telemt?

Обычный MTProto-прокси не предназначен для передачи Telegram-звонков. Для звонков требуется другой сетевой путь или поддерживаемый клиентом способ проксирования, например SOCKS5 при соответствующих условиях. Telemt не заменяет полноценный VPN.

Можно ли использовать один Telemt на нескольких телефонах?

Да. По умолчанию одним секретным ключом могут пользоваться несколько устройств и людей. Для раздельного управления лучше создать независимые ключи через раздел access.users.

Можно ли использовать Cloudflare перед Telemt?

Обычное HTTP-проксирование Cloudflare не предназначено для произвольного MTProto TCP-трафика. Простое включение облачного проксирования DNS-записи не превратит Telemt в совместимый HTTPS-сервис. Для TCP-проксирования требуются специально поддерживаемые решения, а не стандартная схема веб-сайта за CDN.

Поможет ли смена порта, если Telemt заблокировали?

Иногда, если ограничен конкретный порт. Но смена порта бесполезна при блокировке IP-адреса или более глубокой фильтрации протокола. Для диагностики сначала проверьте доступность сервера и сравните результаты подключения из разных сетей.

Можно ли совместить Telemt и Telegram Web Proxy?

Telemt поддерживает разные режимы, включая WEB, однако настройка WEB-прокси отличается от обычного MTProto. Требуются отдельные параметры веб-службы, домена и TLS, а также совместимый клиент Telegram. Простая установка Telemt в режиме Fake TLS автоматически WEB-прокси не включает.

Что выбрать для собственного сервера

Для обычного личного Telegram-прокси я бы начал с официального Telemt, установленного как служба systemd. Docker здесь не нужен. Если сервер уже обслуживает сайт или другие приложения на 443, безопаснее сначала попробовать порт 8443, не вмешиваясь в существующую конфигурацию.

После запуска проверьте статус службы, получите ссылку через локальный API, подключите Telegram и протестируйте работу из нескольких сетей. Когда базовая схема заработает, можно добавлять пользователей, статистику и полноценную HTTPS-маскировку.

Не рассчитывайте, что один режим Fake TLS навсегда защитит IP. Стабильность зависит от сети, версии Telegram, параметров прокси и доступности серверов Telegram.


Telemt Telegram mtproxy сервер прокси установка настройка Linux ubuntu Debian
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
SECLAB / TG
LIVE SecurityLab.ru
Вы зашли хитро.
Дальше — совсем просто.
Одна кнопка — и SecurityLab в вашей ленте. Новости про взломы без лишних маршрутов.
Подписаться @SecLabnews

Рекламодатель
Реклама. АО «Позитив Текнолоджиз». ИНН 7718668887. 18+
Сайт рекламодателя: ptsecurity.com↗️
АО «Позитив Текнолоджиз»