Автоматическая установка официального MTProto прокси от Telegram на Ubuntu.
Поддерживает два варианта: C-бинарник (компиляция из исходников) и Docker-контейнер (zero-configuration).
Управление через модульную bash-систему — каждый файл отвечает за одну зону ответственности.
git clone https://github.com/gopnikgame/MTProxy.git
cd MTProxy
sudo bash install_official.shinstall_official.sh копирует модули в /opt/MTProxy/ и создаёт симлинк mtproxy. После запуска предложит выбрать вариант установки:
sudo mtproxy # мастер: выбор Binary (C-бинарник) или Docker-контейнер
mtproxy help # список всех командВсе операции управления требуют
sudo.
| ⚡ Производительность | C-реализация, multi-core (воркеры), официальная поддержка Telegram |
| 🔒 Безопасность | Random Padding (защита от DPI), fakeTLS (ee-секрет, флаг -D), systemd hardening |
| 🌐 SNI-маскировка | Автоопределение доменов nginx / Caddy / remnanode для -D |
| 🛠 Удобство | Интерактивное меню, автообновление конфигов Telegram, симлинк mtproxy |
| 💰 Монетизация | AD Tag через @MTProxybot |
| 🐳 Docker-режим | Zero-configuration контейнер telegrammessenger/proxy, авторестарт в 4:00 |
# Установка (мастер: выбор Binary или Docker)
sudo mtproxy install
sudo mtproxy # то же при первом запуске
# Управление сервисом / контейнером
sudo mtproxy start / stop / restart / status
# Информация
sudo mtproxy info # Ссылка для подключения
sudo mtproxy stats # Статистика прокси
sudo mtproxy logs # Последние 50 строк логов
sudo mtproxy follow-logs # Логи в реальном времени
# Настройка (Binary и Docker)
sudo mtproxy change-secret
sudo mtproxy change-ad-tag
sudo mtproxy change-ports
sudo mtproxy change-workers
sudo mtproxy uninstall # Полное удаление
# Только для Binary-режима
sudo mtproxy update-config # Обновить конфиги Telegram
sudo mtproxy rebuild # Пересборка из исходниковfakeTLS-маскировка (домен + флаг -D):
tg://proxy?server=proxy.example.com&port=443&secret=ee<32hex>
Random Padding (без домена):
tg://proxy?server=1.2.3.4&port=443&secret=dd<32hex>
- Откройте ссылку на устройстве с Telegram → Connect Proxy
- Для монетизации зарегистрируйтесь в @MTProxybot →
/newproxy
Префиксы секрета:
ee= fakeTLS,dd= Random Padding, без префикса = plain
MTProxy/ ← репозиторий (git clone)
├── install_official.sh # Загрузчик: копирует модули, создаёт симлинк
├── manage_mtproxy_official.sh # Диспетчер управления
└── modules/
├── lib_common.sh # Константы, утилиты, build_cmd()
├── lib_sni.sh # Детектор SNI-доменов (nginx/Caddy/remnanode)
├── lib_config.sh # Мастер настройки + show_connection_info()
├── lib_install.sh # Полный пайплайн установки Binary
├── lib_service.sh # Управление сервисом (start/stop/logs/stats)
├── lib_manage.sh # Изменение параметров, rebuild, uninstall
└── lib_docker.sh # Docker-контейнер: установка, управление, конфигурация
После установки все файлы копируются в /opt/MTProxy/:
/opt/MTProxy/
├── .env # Конфигурация (source-совместимый key=value)
├── manage_mtproxy_official.sh # Диспетчер (симлинк: /usr/local/bin/mtproxy)
├── update-configs.sh # Cron: обновление конфигов Telegram (3:00)
├── proxy_link.txt # Ссылка для подключения
├── modules/ # Модули (скопированы из репозитория)
│ └── lib_*.sh
├── objs/bin/mtproto-proxy # Скомпилированный бинарник
└── run/
├── proxy-secret # Ключи Telegram
├── proxy-multi.conf # Серверы Telegram
└── secret.txt # Пользовательский секрет (32 hex)
/usr/local/bin/mtproxy # Симлинк → /opt/MTProxy/manage_mtproxy_official.sh
/usr/local/bin/MTProxy # Симлинк → /opt/MTProxy/manage_mtproxy_official.sh
/etc/systemd/system/mtproxy.service
/etc/sysctl.d/99-mtproxy-pid.conf # kernel.pid_max=65535 (воркараунд MTProxy C-ассерта)
# При установке Docker-варианта:
/opt/mtproto-proxy/
├── docker-compose.yml # Конфигурация контейнера (SECRET, WORKERS, INTERNAL_IP)
└── proxy_link.txt # Ссылка для подключения
# ── Binary ──────────────────────────────────────────────────────
install_official.sh → sudo mtproxy install
└─► run_install() [lib_install.sh]
├─ install_dependencies()
├─ clone_and_build_mtproxy()
├─ interactive_configuration() [lib_config.sh]
│ └─ detect_sni_domains() [lib_sni.sh]
│ select_tls_domain() [lib_sni.sh]
├─ create_systemd_service()
│ └─ build_cmd() [lib_common.sh]
├─ setup_config_updater() cron 3:00
└─ start_and_verify()
# ── Docker ──────────────────────────────────────────────────────
install_official.sh → sudo mtproxy install
└─► run_docker_install() [lib_docker.sh]
├─ _docker_install_engine() Docker Engine (если не установлен)
├─ _docker_select_image_tag() выбор версии образа
├─ _docker_create_compose() docker-compose.yml + INTERNAL_IP
└─ open_ufw_port() UFW правило
# ── Диспетчер ───────────────────────────────────────────────────
manage_mtproxy_official.sh
├─ sources: все 7 lib_*.sh модулей
├─ _detect_install_type() binary / docker / both / none
├─ show_menu() Binary интерактивное меню
├─ show_docker_menu() Docker интерактивное меню
└─ CLI dispatch mtproxy <команда> (авторутинг)
Ключевые функции lib_common.sh, используемые всеми модулями:
| Функция | Описание |
|---|---|
build_cmd() |
Строит ExecStart из .env — исключает дублирование в 4 change_*-функциях |
apply_cmd_to_service() |
sed ExecStart + daemon-reload |
get_client_secret() |
ee/dd/plain-префикс → $CLIENT_SECRET |
get_server_addr() |
domain/NAT/IP логика → $SERVER_ADDR |
# Конфиги Telegram — автоматически каждый день в 3:00 (cron)
sudo mtproxy update-config # вручную
# Пересборка MTProxy из исходников
sudo mtproxy rebuildСервис не запускается
journalctl -u mtproxy -n 50
sudo mtproxy statusКлиенты не подключаются
ss -tuln | grep :443 # проверить порт
sudo ufw allow 443/tcp # открыть firewall
sudo mtproxy stats # статистика подключенийОшибка компиляции при установке
sudo apt-get install build-essential libssl-dev zlib1g-dev
sudo mtproxy rebuild- Ubuntu 20.04+ (рекомендуется 22.04 LTS)
- Открытый входящий порт (рекомендуется 443 TCP)
- Binary: зависимости устанавливаются автоматически:
gitcurlbuild-essentiallibssl-devzlib1g-devxxd - Docker: Docker Engine ≥ 20.10 с плагином
compose— устанавливается автоматически при выборе Docker-режима