В начале 2022 гола я уже писал статью как установить официальный MTProxy, но с тех пор утекло много воды, сам официальный MTProxy перестал развиваться и появилось несколько альтернатив.
В этой статья я расскажу как быстро установить один из вариантов MTProxy — это MTG.
Обратите внимание, что использование MTProxy может нарушать локальное законодательство Вашей страны. Рекомендую уточнить данный момент до начала выполнения установки. Операции, описанные в данной статье, выполнялись на тестовом стенде, который был удален по окончании написания статьи.
Исходные данные: Ubuntu 24.04
Задача: Установить и настроить MTG
MTG — это opensource реализация MTProto Proxy для Telegram с минимальными настройками и быстрым стартом, написан на Go lang, исходный код размещен на Github.
Есть 2 версии MTG — v1 и v2
Актуальной является версия v2 в которой убрана поддержка adtag и тем самым запуск стал гораздо проще т.к. нет необходимости регистрировать прокси у бота @MTProxybot
Есть 3 варианта запуска MTG:
1. Запуск через docker
2. Запуск через systemd в качестве службы
3. Сборка из исходников и запуск по схеме 1 или 2
Мы рассмотрим 2-й вариант запуска как стандартной службы через systemd
Дополнено 09.04.2026: Я подготовил готовые скрипты для установки, обновления и полного удаления MTG для Ubuntu который делает все тоже самое, что описано ниже в статье.
1. Установить необходимые вспомогательные пакеты:
apt-get install -y curl wget jq tar
2. Скачиваем готовый архив с последней версией MTG под нужную архитектуру:
Приведенный ниже код на bash выполнит определение типа и архитектуры вашей ОС, проверит какая версия MTG актуальна и скачает именно последнюю версию без необходимости ввода номера руками.
Но если Вы хотите скачать конкретную версию MTG, то Вам нужно сходить на страницу Releases на Github и сделать это вручную.
Автоматически делаем так:
case "$(uname -m)" in
x86_64 | x64 | amd64) ARCH="amd64" ;;
i*86 | x86) ARCH="386" ;;
armv8* | armv8 | arm64 | aarch64) ARCH="arm64" ;;
armv7* | armv7 | arm) ARCH="armv7" ;;
armv6* | armv6) ARCH="armv6" ;;
mips*) ARCH="mips" ;;
*) echo "Unsupported CPU architecture!" && exit 1;;
esac && \
LATEST_VER=$(curl -Ls "https://api.github.com/repos/9seconds/mtg/releases/latest" 2>/dev/null | jq -r .tag_name | sed 's/[^0-9.]//g') && \
OS_NAME=$(uname -s | tr '[:upper:]' '[:lower:]') && \
wget https://github.com/9seconds/mtg/releases/download/v${LATEST_VER}/mtg-${LATEST_VER}-${OS_NAME}-${ARCH}.tar.gz -O mtg.tar.gz && \
tar -vzxf mtg.tar.gz && \
yes | cp mtg-${LATEST_VER}-${OS_NAME}-${ARCH}/mtg /usr/sbin/mtg && \
rm -f mtg.tar.gz
3. Создаем отдельного пользователя для работы MTG:
useradd --system --home-dir /var/lib/mtg --no-create-home --shell /usr/sbin/nologin --user-group mtg
4. Создаем вспомогательные каталоги для хранения файлов конфигурации, выставим владельцев и права на эти файлы, чтобы другие пользователи не смогли их читать и копируем файл с примером конфигурации example.config.toml
mkdir /var/lib/mtg /etc/mtg
chown -R mtg:mtg /var/lib/mtg /etc/mtg
chmod 750 /var/lib/mtg /etc/mtg
cp mtg-${LATEST_VER}-${OS_NAME}-${ARCH}/example.config.toml /etc/mtg/mtg.toml
chmod 640 /etc/mtg/config.toml
rm -rf mtg-${LATEST_VER}-${OS_NAME}-${ARCH}
5. Создадим секретный ключ для Fake-TLS в формате hex и запишем его в файл конфигурации:
Этот же ключ потребуется нам для подключения к нашему прокси из Телеграм на последнем шаге, поэтому мы поместим ключ в переменную и потом используем ее еще раз.
Сайт google.com замените на свой в зависимости от потребностей.
Порт для прокси мы изменим с 3128 на 8443 (можете сделать свой порт)
TG_SECRET=$(mtg generate-secret --hex google.com)
sed -i "s@ee367a189aee18fa31c190054efd4a8e9573746f726167652e676f6f676c65617069732e636f6d@${TG_SECRET}@g" /etc/mtg/mtg.toml
sed -i "s/0.0.0.0:3128/0.0.0.0:8443/s" /etc/mtg/mtg.toml
Дополнительные полезные опции которые можно скорректировать в конфиге /etc/mtg/mtg.toml:
prefer-ip — это приоритет выбора протокола для работы с основными и прокси-серверами Телеграм, по умолчанию это prefer-ipv6, но если у Вас нет IPv6 на сервера, то будет логично установить параметр в only-ipv4
auto-update — периодически обновлять список прокси-серверов Телеграм, по умолчанию false, то есть не обновлять, а использовать фиксированные сервера зашитые в MTG. Но я бы рекомендовал сделать true. Список будет скачиваться с этих адресов.
6. Создадим файл конфигурации для systemd для управления работой MTG
Сразу хочу заметить, что файл сделан более гибким, все настройки запуска MTG вынесены в переменную OPTIONS которая будет записана в файл /etc/default/mtg
Таким образом мы сможем легко менять настройки MTG не вмешиваясь в файл конфигурации для systemd.
Так же служба mtg запускается от непривилегированного пользователя mtg
(cat<<-EOF [Unit] Description=MTG - MTProto proxy server Documentation=https://github.com/9seconds/mtg After=network.target [Service] Type=simple User=mtg Group=mtg EnvironmentFile=-/etc/default/mtg WorkingDirectory=/var/lib/mtg ExecStart=/usr/sbin/mtg run \$OPTIONS Restart=on-failure RestartSec=3 LimitNOFILE=65536 AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target EOF )>/etc/systemd/system/mtg.service
Далее скажем systemd перечитать свою конфигурацию:
systemctl daemon-reload
7. Создадим файл /etc/default/mtg в котором будут прописаны настройки запуска MTG:
(cat<<-EOF OPTIONS='/etc/mtg/mtg.toml' EOF )>/etc/default/mtg chmod 640 /etc/default/mtg
8. Запуск MTG:
systemctl enable mtg.service --now
9. Проверим работу MTG:
systemctl status mtg.service
Служба должна работать:
● mtg.service - mtg - MTProto proxy server
Loaded: loaded (/etc/systemd/system/mtg.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-03-20 14:31:05 CET; 2min 39s ago
Docs: https://github.com/9seconds/mtg
Main PID: 993292 (mtg)
Tasks: 8 (limit: 4498)
Memory: 9.1M (peak: 9.4M)
CPU: 280ms
CGroup: /system.slice/mtg.service
└─993292 /usr/sbin/mtg run /etc/mtg/mtg.toml
Mar 20 14:31:05 myserver.local systemd[1]: Started mtg.service - mtg - MTProto proxy server.
Mar 20 14:31:05 myserver.local mtg[993292]: {"level":"debug","configuration":{"debug":true,"allowFallbackOnUnknownDc":false,"secret":"XXXXXXXXXXXXXXXXXXXXX","bindTo":"0.0.0.0:8443","proxyProtocolListener":false,"preferIp":"prefer-ipv4","autoUpdate":false,"do>
Mar 20 14:31:05 myserver.local mtg[993292]: ,"logger":"","timestamp":1774013465079,"message":"configuration"}
Mar 20 14:31:05 myserver.local mtg[993292]: {"level":"info","logger":"allowlist.ipblocklist.firehol","timestamp":1774013465081,"message":"ip list was updated"}
Mar 20 14:31:05 myserver.local mtg[993292]: {"level":"info","logger":"blocklist.ipblockist.firehol","timestamp":1774013465176,"message":"ip list was updated"}
Проверим открытые порты и наличие процесса:
# netstat -ltupn | grep [m]tg tcp 0 0 127.0.0.1:3129 0.0.0.0:* LISTEN 993292/mtg tcp6 0 0 :::8443 :::* LISTEN 993292/mtg # ps -ef | grep [m]tg mtg 993292 1 0 14:31 ? 00:00:00 /usr/sbin/mtg run /etc/mtg/mtg.toml
10. Теперь настало время подключиться к MTProxy в Вашем Телеграм-клиенте:
Для получения готовых ссылок на подключение можно воспользоваться встроенной командой, но к сожалению она выдает некорректные ссылки в случае использования Fake-TLS.
Команда выглядит так:
mtg access /etc/mtg/mtg.toml
Правильная ссылка в случае Fake-TLS будет создана корректно такой командой:
MTG_CONFIG=/etc/mtg/mtg.toml && \
LOCAL_IP=$(ip -o -4 addr list $(ip route show default 2>/dev/null | awk '/default/ {print $5}') 2>/dev/null | awk '{print $4}' | cut -d/ -f1 | head -1) && \
MTG_PORT=$(cat ${MTG_CONFIG} | grep bind-to | head -1 | sed 's/.*:\([0-9]*\).*/\1/') && \
MTG_CONF=$(mtg access ${MTG_CONFIG} 2>/dev/null) && \
echo "tg://proxy?server=${LOCAL_IP}&port=${MTG_PORT}&&secret=$(echo -n ${MTG_CONF} | jq -r .secret.hex)"
На выходе Вы получите что-то вроде:
tg://proxy?server=XX.XX.XX.XX&port=8443&&secret=eeYYYYYYYYYYYYYYYYYYYYYY
Перейдя в Телеграм по этой ссылке Вам будет предложено подключиться к прокси.
11. Сбор и просмотр статистики работы:
По умолчанию MTG предоставляет вывод статистики в формате Prometheus на 127.0.0.1:3129
За настройку статистики отвечает секция [stats.prometheus] в файле конфигурации /etc/mtg/config.toml
Вы можете легко проверить статистику так:
curl http://127.0.0.1:3129
На этом все, MTG установлен и настроен.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.
