MTProxyHub
Ко всем статьям
9 мин

Запуск MTProxy в Docker: полная инструкция

Пошаговая инструкция по запуску MTProxy через Docker на Linux-сервере: генерация секрета, Fake TLS, настройка WORKERS, hardening контейнера и мониторинг.

Запуск MTProxy в Docker: полная инструкция

Публичные прокси нестабильны, перегружены и требуют доверия к незнакомым людям. Собственный MTProxy на VPS стоит $3–5 в месяц, поднимается за несколько минут и гарантирует, что только вы контролируете доступ. В этой инструкции пройдём весь путь: от заказа сервера до работающего Fake TLS прокси.

Что потребуется

  • VPS на Linux (Ubuntu 22.04 или Debian 12 — рекомендуется)
  • Минимальные характеристики: 1 CPU, 512 MB RAM, 10 GB SSD
  • Расположение сервера: за пределами заблокированного региона (Нидерланды, Финляндия, Германия — популярные варианты)
  • Стоимость: от $3–5/мес у Hetzner, DigitalOcean, Vultr

Шаг 1: Подготовка сервера

Подключитесь по SSH и выполните обновление пакетов:

sudo apt update && sudo apt upgrade -y

Установите Docker официальным скриптом:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

Проверьте установку:

docker --version

Откройте порт 443 в файрволе:

sudo ufw allow 443/tcp
sudo ufw enable

Шаг 2: Генерация секрета

Никогда не используйте SECRET=000... из примеров в интернете — это небезопасно и легко идентифицируется. Всегда генерируйте случайный ключ:

openssl rand -hex 16

Пример вывода: a3f7c2e1d5b8904f6a2c1e3d7b9f4a2e

Для Fake TLS нужен особый формат секрета: к ключу добавляется hex-encoded домен прикрытия. Можно сгенерировать вручную:

# Генерируем базовый ключ
KEY=$(openssl rand -hex 16)

# Кодируем SNI-домен в hex
DOMAIN="google.com"
DOMAIN_HEX=$(echo -n "$DOMAIN" | xxd -p)

# Итоговый Fake TLS секрет
echo "ee${KEY}${DOMAIN_HEX}"

Или использовать готовый генератор: https://mtproto.co/ — открытый инструмент для генерации Fake TLS секретов.

Шаг 3: Запуск контейнера

Запустите официальный контейнер:

docker run -d \
  --name mtproxy \
  --restart always \
  -p 443:443 \
  -e SECRET="ВАШ_СЕКРЕТ_ЗДЕСЬ" \
  -e WORKERS=1 \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

Параметры:

  • --restart always — автозапуск после перезагрузки сервера
  • -p 443:443 — маппинг порта 443
  • SECRET — ваш сгенерированный секрет (с префиксом ee для Fake TLS)
  • WORKERS — количество рабочих процессов (обычно 1 на CPU-ядро)

Шаг 4: Получить ссылку для подключения

docker logs mtproxy 2>&1 | grep "tg://"

Вы увидите ссылку вида:

tg://proxy?server=1.2.3.4&port=443&secret=ee...

Откройте её на устройстве — Telegram автоматически предложит добавить прокси.

Шаг 5: Hardening контейнера

Базовый запуск работает, но для production рекомендуется несколько улучшений безопасности:

docker run -d \
  --name mtproxy \
  --restart always \
  -p 443:443 \
  --read-only \
  --tmpfs /tmp \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  -e SECRET="ВАШ_СЕКРЕТ_ЗДЕСЬ" \
  -e WORKERS=1 \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

Добавленные флаги:

  • --read-only — файловая система контейнера только для чтения
  • --tmpfs /tmp — временный RAM-диск для /tmp
  • --cap-drop ALL — убираем все Linux capabilities
  • --security-opt no-new-privileges — запрет повышения привилегий

Настройка WORKERS

Параметр WORKERS определяет количество рабочих процессов. Официальное правило: 1 воркер ≈ 60 000 одновременных подключений.

Размер сервераРекомендуемый WORKERS
1 CPU, до 500 пользователей1
2 CPU, до 2000 пользователей2
4+ CPU, публичный прокси4+
Слабый сервер с нестабильной нагрузкой2–4 (лучше распределяет соединения)

Альтернатива: mtg (Go-реализация)

9seconds/mtg — популярная альтернатива на Go с метриками Prometheus и более низким потреблением памяти:

docker run -d \
  --name mtg \
  --restart always \
  -p 443:443 \
  nineseconds/mtg:latest \
  run "ВАШ_СЕКРЕТ"

Официальный образ стабильнее и лучше документирован; mtg быстрее на больших нагрузках. Выбор зависит от ваших приоритетов.

Мониторинг и логи

# Текущие логи
docker logs -f mtproxy

# Количество активных соединений
docker exec mtproxy cat /proc/net/tcp | wc -l

# Использование ресурсов
docker stats mtproxy

Если видите в логах Too many open files — нужно увеличить лимиты файловых дескрипторов. Добавьте в запуск:

--ulimit nofile=65536:65536

Обновление контейнера

docker pull telegrammessenger/proxy:latest
docker stop mtproxy && docker rm mtproxy
# Повторите команду запуска из Шага 3

FAQ

Какой порт лучше использовать? Порт 443 — рекомендуется. Открыт везде, стандартен для HTTPS.

Нужно ли открывать порты в файрволе? Да: sudo ufw allow 443/tcp на Ubuntu/Debian.

Сколько пользователей выдержит? 1 CPU, 1 GB RAM → 1000–3000 одновременных пользователей при WORKERS=1.

Чем отличается mtg от официального образа? mtg написан на Go, потребляет меньше памяти, имеет Prometheus-метрики. Официальный образ — C, более стабильный и распространённый.

Как проверить, что прокси работает? Telegram → Settings → Data and Storage → Proxy → введите данные → зелёный индикатор.


Настроили собственный сервер? Читайте, как оптимизировать его под высокие нагрузки и как монетизировать через Promoted Channels.

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