Запуск 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— маппинг порта 443SECRET— ваш сгенерированный секрет (с префиксом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 секунд.