Today

Гайд: MTProto-прокси на VPS с сайтом-заглушкой (Ubuntu 26.04 LTS)

Проверено на: Ubuntu 26.04 LTS (Resolute Raccoon), достаточно 1CPU, 1GB RAM (для себя поднимал на 2CPU, 4GB RAM с запасом)
Схема: Nginx с реальным SSL-сертификатом слушает порт 443 и отдаёт сайт-заглушку. Telemt (MTProto-прокси) работает на порту 8443. Клиенты Telegram подключаются к proxy.example.com:8443, обычные посетители видят настоящий HTTPS-сайт на порту 443.

⚠️ Нужен свой домен с A-записью на IP VPS. VPS покупал тут. Был вопрос с заменой айпи, тк первый заблокирован был РКНом. Бесплатная замена толкьо в течении 7 дней (через поддержку!). А дальше 150 рублей (не так дорого в целом). Сайт на 443 выступает маскировкой и делает трафик к вашему домену «легитимным» с точки зрения DPI.

Цены на ВПС-сервера для понимания (1/2/40 - 189 руб, 2/4/60 - 280 руб):

Схема работы

                    ┌─────────────────────────────┐
                    │       VPS (ваш сервер)      │
                    │                             │
Посетитель ───443──►│  Nginx  ──►  сайт-заглушка  │
                    │                             │
Telegram ───8443───►│  Telemt ──►  Telegram DC    │
                    │                             │
                    └─────────────────────────────┘
  • Порт 443 — Nginx с валидным сертификатом Let's Encrypt. Любой сканер увидит настоящий HTTPS-сайт.
  • Порт 8443 — Telemt, MTProto-прокси. Подключаются только Telegram-клиенты с секретом.

Шаг 1. Подготовка VPS

Требования: Ubuntu 26.04 LTS, 1CPU, 1GB RAM.

Все команды ниже без sudo, все что касается bash команд в самом Убунту лучше делать через sudo, к примеру sudo apt update Это не касается содержимого конфигураций (это для новичков!)

# Обновление системы
apt update && apt upgrade -y

# Установка базовых утилит
apt install -y curl wget nano ufw

# Настройка файрвола (UFW предустановлен в Ubuntu 26.04)
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8443/tcp
ufw enable

Проверьте DNS: A-запись домена (например, proxy.example.com) должна указывать на IP VPS:

nslookup proxy.example.com

Шаг 2. Установка Nginx и сайта-заглушки

# Установка Nginx (доступен в стандартных репозиториях Ubuntu 26.04)
apt install -y nginx

# Создание директории для сайта
mkdir -p /var/www/proxy.example.com/html

Поместите файл index.html в /var/www/proxy.example.com/html/. Это может быть любой сайт — лендинг, страница «сайт в разработке», корпоративная заглушка. Чем естественнее выглядит — тем лучше для маскировки.

Создайте конфигурацию /etc/nginx/sites-available/proxy.example.com:

server {
    listen 80;
    listen [::]:80;
    server_name proxy.example.com;

    root /var/www/proxy.example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Активируйте конфигурацию и удалите дефолтную:

ln -s /etc/nginx/sites-available/proxy.example.com /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

Проверьте, что сайт открывается по http://proxy.example.com.


Шаг 3. Выпуск SSL-сертификата для сайта (порт 443)

# Установка Certbot (в Ubuntu 26.04 идёт Certbot 4.0 с плагином Nginx)
apt install -y certbot python3-certbot-nginx

# Выпуск сертификата и автоматическая настройка Nginx
certbot --nginx -d proxy.example.com

Certbot 4.0 автоматически создаёт systemd timer для продления сертификата при установке — отдельно настраивать cron не нужно.

Certbot:

  • выпустит сертификат Let's Encrypt
  • добавит в конфигурацию Nginx блок listen 443 ssl с путями к сертификатам
  • настроит редирект с HTTP на HTTPS

После этого ваш сайт доступен по https://proxy.example.com. Убедитесь, что замок в браузере зелёный.

Проверьте автопродление:

certbot renew --dry-run

Шаг 4. Установка MTProto-прокси (Telemt) на порт 8443

Вариант A: Быстрая установка (MTPROTO_FIX_By_MEKO)

curl -fsSL https://raw.githubusercontent.com/Mekotofeuka/MTPROTO_FIX_By_MEKO/main/install.sh | sudo bash

В интерактивном меню укажите:

  • Домен для маскировки: proxy.example.com (на этот домен вы потом будете натягивать заглушку)
  • Порт: 8443
  • Тип фикса: V3 (рекомендуется)

Скрипт выведет tg://proxy? ссылку для подключения клиентов.

Вариант B: Ручная установка Telemt

# Установка
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh

Или сборка из исходников:

git clone https://github.com/telemt/telemt
cd telemt
cargo build --release
mv ./target/release/telemt /bin/
chmod +x /bin/telemt

Создайте конфигурацию /etc/telemt/config.toml:

[general]
prefer_ipv6 = false
fast_mode = true
use_middle_proxy = true

[general.modes]
classic = false
secure = false
tls = true

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

[[server.listeners]]
ip = "0.0.0.0"
port = 8443

[censorship]
tls_domain = "proxy.example.com"
tls_emulation = true

Ключевые параметры:

  • port = 8443 — Telemt слушает отдельный порт, не конфликтуя с Nginx
  • public_host и public_port — по этим данным формируется ссылка tg://proxy

Запустите службу:

systemctl enable telemt
systemctl start telemt
systemctl status telemt

Шаг 5. Проверка

Порты:

ss -tlnp | grep -E ':443|:8443'

Должно быть:

  • 0.0.0.0:443 — процесс nginx
  • 0.0.0.0:8443 — процесс telemt

Сайт: откройте https://proxy.example.com — должен открыться сайт-заглушка с валидным сертификатом.

Прокси: получите tg://proxy? ссылку из логов:

journalctl -u telemt -n 50 | grep 'tg://'

Или из меню MTPROTO_FIX_By_MEKO. Отправьте ссылку себе в Telegram и подключитесь. Проверьте соединение — например, через @mtprotoproxybot или в настройках Telegram → Данные и память → Использование прокси.


Возможные проблемы

Certbot не выпускает сертификат

  • Порт 80 должен быть доступен извне. Проверьте: ss -tlnp | grep ':80' — должен слушать Nginx.
  • Файрвол: ufw status
  • Провайдер VPS: убедитесь, что порты 80 и 443 открыты в панели.
  • Домен: nslookup proxy.example.com → должен вернуть IP VPS.
  • Если домен на Cloudflare — отключите проксирование (DNS-only), иначе Certbot не пройдёт проверку.

Telemt не запускается

  • Порт 8443 занят: ss -tlnp | grep ':8443'
  • Логи: journalctl -u telemt -f
  • Проверьте синтаксис конфигурации config.toml.

Сайт не открывается на 443

  • Nginx слушает порт: ss -tlnp | grep ':443'
  • Сертификат на месте: ls /etc/letsencrypt/live/proxy.example.com/
  • Логи Nginx: journalctl -u nginx -f или /var/log/nginx/error.log

Telegram не подключается к 8443

  • Убедитесь, что порт 8443 открыт в файрволе и у провайдера.
  • Проверьте, что public_port = 8443 в конфигурации — иначе в ссылке tg:// будет указан неверный порт.
  • Проверьте актуальность секрета (он генерируется при запуске и виден в логах).
  • Если провайдер VPS блокирует нестандартные порты — попробуйте другой порт (например, 9443).

Почему схема «сайт на 443 + прокси на 8443» удобнее

  • Nginx получает стандартный порт 443 — Certbot работает штатно, без конфликтов.
  • Сайт отвечает как обычный HTTPS-ресурс — DPI видит легитимный сертификат и контент.
  • Telemt не мешает Certbot, потому что не занимает порт 80/443.
  • Проще отладка — Nginx и Telemt полностью независимы.

Итог

На одном VPS (Ubuntu 26.04 LTS) работают:

  • HTTPS-сайт на 443 (Nginx + Let's Encrypt, Certbot 4.0 с авто-продлением через systemd)
  • MTProto-прокси на 8443 (Telemt)

Сканеры видят обычный сайт, Telegram-клиенты с секретом — ходят через прокси. Схема проверена на практике и легко воспроизводится.

(c) l0makin про IT