Свой прокси для Telegram
Пошаговая установка MTProto-прокси на собственный сервер. Ответь на четыре вопроса, впиши свои данные — и все команды ниже подстроятся под тебя. Останется копировать и вставлять.
- ~30 минут от покупки сервера до первого подключения
- Ubuntu 24.04
- MTProxyL 1.6.31 и telemt 3.5.13
На чём всё работает
Прокси собирается из двух открытых проектов. Если он у тебя заработал — поставь им звезду на GitHub: это бесплатно, занимает секунду и показывает авторам, что их работа нужна людям.
Есть свой домен?
С доменом прокси выглядит как обычный сайт, а после блокировки адреса ссылки у людей не меняются. Без домена тоже работает, но его проще заметить и после бана ссылки придётся раздавать заново.
Включить WEB Proxy?
Второй способ подключения рядом с обычным: для провайдера он выглядит как сайт. Нужен ещё один поддомен. Работает в свежих версиях Telegram.
Нужен спонсорский канал?
Твой Telegram-канал будет закреплён вверху списка чатов у всех, кто подключился через прокси. Так прокси приводит подписчиков.
Поставить бота для присмотра?
Бот напишет тебе в Telegram, если прокси перестал открываться из России, покажет ссылки и трафик, пришлёт копию настроек. Без него о блокировке узнаешь от людей.
Твои данные
Заполняй по ходу шагов — пустые места в командах подсвечены жёлтым.
Всё, что ты вводишь, остаётся в этом браузере и никуда не отправляется.
Что понадобится
Сервер, программа для входа на него и, если выбрал, домен.
Сервер
Нужен VPS — виртуальный сервер, который арендуется у хостинг-компании, как квартира посуточно. Тебе дадут его IP-адрес и пароль, всё остальное сделают команды отсюда.
Что выбрать при заказе:
- Операционная система Ubuntu 24.04. Всё здесь проверено на ней.
- Страна — не Россия. Финляндия, Нидерланды, Германия, Латвия, Польша. Из российских дата-центров Telegram часто закрыт, а адреса блокируются быстрее.
- Есть IPv4-адрес (обычный, вида 203.0.113.10). Виртуализация KVM — у большинства хостеров она по умолчанию.
- IP можно сменить из панели, бесплатно или недорого. Рано или поздно адрес заблокируют, и смена IP — это 15 минут вместо переезда.
- Почасовая или помесячная оплата. Если адрес окажется плохим, сервер можно удалить, потеряв копейки.
Программа для входа на сервер
Команды вставляются в терминал сервера. Удобнее всего — Termius: есть для Windows, macOS, Android и iPhone. В Termius нажми New Host, впиши IP сервера, логин root и пароль от хостера, затем Connect. Откроется чёрное окно — это и есть терминал.
Как вставить команду в терминал
Нажми «Скопировать» над командой здесь, потом в Termius — долгое нажатие и Paste на телефоне, правая кнопка мыши или Ctrl+Shift+V на компьютере. Блок из нескольких строк вставляй целиком, сразу. Enter после вставки нажимать не обязательно, если последняя строка уже выполнилась.
Домен
Подойдёт любой недорогой домен, например в зоне .site, .fit, .online. Под прокси возьмём поддомен — files.твойдомен.site, а для WEB Proxy второй — web.files.твойдомен.site.
Управлять записями домена удобно в бесплатном Cloudflare — там понятная панель и записи обновляются за минуту. Подойдёт и панель регистратора.
Проверка сервера
До установки. Хостер может выдать сервер, с которого не видно Telegram, или адрес, который в России уже закрыт. Лучше узнать это сейчас.
Видит ли сервер Telegram
Зайди на сервер в Termius и вставь блок. Он ничего не меняет, только смотрит.
ok(){ echo -e " \e[32m✅ $1\e[0m"; }; bad(){ echo -e " \e[31m❌ $1\e[0m"; }; warn(){ echo -e " \e[33m⚠️ $1\e[0m"; }
. /etc/os-release; [ "$VERSION_ID" = "24.04" ] && ok "ОС: $PRETTY_NAME" || warn "ОС: $PRETTY_NAME — инструкция проверена на Ubuntu 24.04"
R=$(free -m | awk '/^Mem:/{print $2}'); [ "$R" -ge 900 ] && ok "память: $R МБ" || warn "память: $R МБ — маловато"
C=$(curl -4 -s -o /dev/null -w '%{http_code}' -m10 https://core.telegram.org/getProxyConfig)
[ "$C" = "200" ] && ok "Telegram по IPv4 открыт" || bad "core.telegram.org по IPv4: $C — с этого сервера прокси не заработает"
F=0; for ip in 149.154.175.50 149.154.167.51 149.154.175.100 149.154.167.91 91.108.56.130; do timeout 5 bash -c "</dev/tcp/$ip/443" 2>/dev/null || { F=1; bad "дата-центр $ip закрыт"; }; done
[ "$F" = 0 ] && ok "все 5 дата-центров Telegram открыты"
curl -4 -s -m15 https://core.telegram.org/getProxyConfig | awk '/^proxy_for/{print $3}' | tr -d ';' | sort -u > /tmp/me.txt
T=$(wc -l < /tmp/me.txt); OKN=0; FAIL=""
while read hp; do timeout 5 bash -c "</dev/tcp/${hp%:*}/${hp##*:}" 2>/dev/null && OKN=$((OKN+1)) || FAIL="$FAIL $hp"; done < /tmp/me.txt
if [ "$T" -gt 0 ] && [ "$OKN" = "$T" ]; then ok "ME-серверы: $OKN из $T — спонсорский канал будет работать"
elif echo "$FAIL" | grep -q '91\.108\.56\.'; then bad "ME-серверы: $OKN из $T, закрыт DC 5 — прокси будет, спонсорского канала не будет"
else bad "ME-серверы: $OKN из $T, закрыты:$FAIL"; fi ✅ ОС: Ubuntu 24.04.3 LTS
✅ память: 961 МБ
✅ Telegram по IPv4 открыт
✅ все 5 дата-центров Telegram открыты
✅ ME-серверы: 19 из 19 — спонсорский канал будет работать| Если видишь | Что делать |
|---|---|
Telegram по IPv4: 000, дата-центры закрыты | С этой площадки прокси не заработает. Другой хостер или другая страна |
закрыт DC 5 | Прокси будет работать, а спонсорский канал — нет. Нужен канал — возьми другую площадку |
память меньше 900 МБ | Заработает, но лучше тариф с 1 ГБ |
Что такое ME-серверы
Это промежуточные серверы Telegram (middle proxy). Обычный трафик идёт и без них, а вот спонсорский канал работает только через них — и только если сервер достаёт до всех. Чаще всего у хостеров закрыт один — дата-центр 5. Конфигом это не исправить, только сменой площадки.
Открыт ли адрес из России
Открой check-host.net → TCP, впиши адрес и смотри только российские узлы — Москву и Санкт-Петербург.
{{ip}}:22| Москва и Петербург | Что значит |
|---|---|
| «Подключился» | Адрес открыт — дальше |
| Таймаут у всех российских узлов | Адрес уже закрыт. Смени IP в панели хостера, лучше на адрес из другой подсети (отличаются первые три числа), и проверь снова |
check-host проверяет только, доходит ли соединение. Блокировку, которая срабатывает чуть позже, при установке защищённого соединения, он не видит. Окончательный ответ даст телефон в шаге 8.
Домен
Направляем домен на сервер. Это нужно до установки: при ней выпускается сертификат, и он проверяет, куда смотрит домен.
В панели домена (Cloudflare или у регистратора) создай A-запись. Имя — поддомен прокси, значение — IP сервера.
| Тип | Имя | Значение |
|---|---|---|
| A | files.example.com | IP сервера |
| A | web.files.example.com | IP сервера |
В Cloudflare — серое облако. У записи есть переключатель Proxy status: поставь DNS only. С оранжевым облаком Cloudflare не пропускает трафик прокси, и ничего не заработает.
Что такое A-запись и зачем домен вообще
A-запись говорит интернету: «этот домен находится по такому-то IP». В ссылках на прокси будет домен, а не IP. Когда адрес заблокируют, ты сменишь IP у хостера и поправишь одну A-запись — а ссылки у всех людей останутся прежними.
Через минуту проверь на сервере, что запись видна:
IP=$(curl -4 -s -m8 ifconfig.me)
for d in {{dom}} {{web}}; do
R=$(getent ahostsv4 $d | awk '{print $1; exit}')
[ "$R" = "$IP" ] && echo -e " \e[32m✅ $d → $R\e[0m" || echo -e " \e[31m❌ $d → ${R:-нет}, а сервер $IP — поправь A-запись и подожди минуту\e[0m"
doneIP=$(curl -4 -s -m8 ifconfig.me)
R=$(getent ahostsv4 {{dom}} | awk '{print $1; exit}')
[ "$R" = "$IP" ] && echo -e " \e[32m✅ {{dom}} → $R\e[0m" || echo -e " \e[31m❌ {{dom}} → ${R:-нет}, а сервер $IP — поправь A-запись и подожди минуту\e[0m"Красная строка — запись ещё не обновилась или указывает не туда. Подожди пару минут и повтори.
Спонсорский канал
Получаем тег — 32 символа, по которым Telegram узнаёт твой прокси и показывает твой канал.
Сначала создай хотя бы один секрет в блоке «Твои данные» вверху — кнопка «Создать секрет». Потом:
- Открой @MTProxybot и отправь
/newproxy. - Бот попросит адрес. Отправь:
files.example.com:443— именно домен, а не IP: тогда тег переживёт смену адреса. - Бот попросит секрет. Отправь 32 символа своего первого секрета:
0123456789abcdef0123456789abcdef - Бот ответит строкой proxy tag. Вставь её в поле «Тег спонсора» вверху.
- Там же, в настройках прокси в боте, выбери канал для продвижения. Канал должен быть публичным.
Свой канал ты не увидишь, если сам на него подписан. Проверять — с другого аккаунта, который не подписан.
Тег получил уже после установки
mtproxyl settings set AD_TAG {{tag}}Бот
Свой бот для присмотра за прокси. Создаётся за минуту.
- Открой @BotFather, отправь
/newbot, придумай имя и адрес бота. В ответ придёт токен вида1234567890:AAH…— вставь его в поле «Токен бота» вверху. - Открой @userinfobot — он пришлёт твой ID, число. Вставь в поле «Твой Telegram ID». Только этот аккаунт сможет управлять ботом.
Один бот — на один сервер. Если поставить один токен на два сервера, они будут мешать друг другу.
Установка
Одна команда ставит прокси, маскировку под сайт с настоящим сертификатом, защиту от сканеров и настройки сети. Займёт 3–5 минут.
Во время установки на экране появятся вопросы — это не остановка: ответы уже переданы в команде и подставятся сами.
УСТАНОВКА ЗАВЕРШЕНА
friends:
ee · TLS: tg://proxy?server=…&port=443&secret=ee…Что значат параметры команды
| Параметр | Зачем |
|---|---|
--engine binary | Прокси работает как обычная программа, без Docker — на 1 ГБ памяти так легче |
--host, --sni | Что будет в ссылках и под какой сайт маскироваться |
--secret | Твои секреты. При переезде на новый сервер вставь старые — ссылки у людей не изменятся |
--selfmask | Свой сайт-заглушка на твоём домене с сертификатом Let’s Encrypt. Кто откроет домен в браузере, увидит обычную страницу |
--zapret2 no --syn-limiter meko | Защита от сканеров: ограничивает частые подключения с одного адреса. Её мы смягчим в шаге 7 |
--meko yes | Настройки сети сервера под прокси |
--web no | WEB Proxy включим отдельно в шаге 7 — так надёжнее |
Строки в выводе, которых не надо бояться
Не удалось снять TLS cert length … оставляем 2048 | Норма: сертификата ещё нет. Ниже появится строка с найденной длиной |
Пресет: Smart By-MEKO … 54/minute burst 1 | Так ставится всегда. Шаг 7 это настраивает |
UFW: открыты 80 и 443, хотя UFW выключен | Безвредная особенность проверки. UFW не включай: в нём нет правила для входа по SSH, и ты потеряешь доступ к серверу |
Pending kernel upgrade | Система ждёт перезагрузки — сделаем в шаге 10 |
Где остановиться и что делать
Контрольная сумма sha256 не совпала | Файл скачался битым — запусти команду ещё раз |
| Ошибка выпуска сертификата Let’s Encrypt | Домен ещё не смотрит на сервер. Вернись к шагу 3, дождись зелёной строки и повтори установку |
Секрет в ссылках в конце (после secret=ee) не совпал с полем «Секреты» | В команду попали не те секреты — сверь и повтори установку |
Донастройка
То, что не задаётся при установке, но заметно влияет на скорость подключения.
Быстрое подключение и самовосстановление
mtproxyl nft set NFT_OTHER_RATE 15/second mtproxyl nft set NFT_OTHER_BURST 30 mtproxyl nft apply mtproxyl dc autorestart on
Первые три строки смягчают защиту от сканеров. По умолчанию она пропускает с одного адреса только одно новое соединение за раз, а Telegram на Android и компьютере открывает сразу несколько — и подключение растягивается на 3–10 секунд. Особенно у людей за общим адресом мобильного оператора или VPN. После настройки подключение занимает около секунды, а сканеры по-прежнему ограничены.
Последняя строка включает самовосстановление: если прокси потеряет связь с дата-центрами Telegram, он перезапустится сам.
Не запускай mtproxyl nft smart и mtproxyl nft preset smart — они вернут жёсткий лимит.
WEB Proxy
Включаем второй способ подключения. Сертификат сам перевыпустится сразу на оба домена.
mtproxyl web set WEB_DOMAIN {{web}}
mtproxyl web set WEB_LAYOUT shared
mtproxyl web set WEB_SECRET_MODE dd
mtproxyl web enableТеперь способы передачи данных: быстрый для Android и компьютера и тот, который понимает iPhone.
mtproxyl expert set web carriers websocket,websocket-lanes --no-apply mtproxyl web set WEB_CARRIER https mtproxyl web enable
Ключ --no-apply в первой строке нужен, чтобы команда не задала вопрос и не прервала вставку блока.
Бот
apt-get -o DPkg::Lock::Timeout=900 install -y python3-venv qrencode
mtproxyl tgbot install --token '{{token}}' --admin {{id}}
mtproxyl tgbot statusПервая строка ждёт, пока свежая Ubuntu закончит свои обновления, — без этого бот иногда не ставится. Потом напиши своему боту /start, и придёт меню.
Проверка доступности из России включена сама: каждые 15 минут прокси проверяется из российских сетей, и если открывается плохо — бот напишет.
Проверка
Сначала сервер проверит себя сам, потом — главное: подключается ли телефон из России.
Автопроверка
Ставим маленькую программу xmodz-check: она одной командой показывает, всё ли в порядке, зелёным и красным. Заодно ставится xmodz-newip — она понадобится, если адрес заблокируют. Обе только читают настройки, кроме описанного в разделе «Прокси забанили». Исходники открыты: xmodz-check.sh, xmodz-newip.sh.
curl -4 -fsSL https://xomodz.fit/xmodz-check.sh -o /usr/local/bin/xmodz-check curl -4 -fsSL https://xomodz.fit/xmodz-newip.sh -o /usr/local/bin/xmodz-newip printf '%s %s\n' 7cda8d045fd9176692cc8b8eb276dc4ad585bf8272854dc984a24952b5c4b2ec /usr/local/bin/xmodz-check a85653b000ea93853f81302ef353dffcaeacf7082470528a9b4d2168588d5da1 /usr/local/bin/xmodz-newip | sha256sum -c && chmod +x /usr/local/bin/xmodz-check /usr/local/bin/xmodz-newip xmodz-check
── B. ДВИЖОК ── ✅ mtproxyl-telemt работает ✅ 443 слушается ── E. ЛИМИТЕР ── ✅ мягкий лимит: limit rate 15/second burst 30
Красная строка обычно сама говорит, что не так. Сразу после перезапуска прокси первые минуты часть строк бывает жёлтой или красной — повтори через 5–10 минут. Дальше запускай просто xmodz-check раз в неделю.
Без своего домена блок «Маскировка и сертификат» пропускается — так и должно быть.
Телефон
Самое важное: сервер не может проверить, открывается ли он у людей в России. Возьми телефон, выключи VPN, проверь на мобильном интернете и потом на Wi-Fi.
Сначала браузер. Открой оба адреса:
https://{{ip}}
https://{{dom}}| IP | Домен | Что значит |
|---|---|---|
| быстро «Подключение не защищено» | открылся сайт | Всё открыто, дальше |
| долго грузится | долго грузится | Адрес заблокирован — смени IP, раздел «Прокси забанили» |
| быстро «Подключение не защищено» | долго грузится или чужой сертификат | Заблокирован домен. Нужен новый домен, сервер в порядке |
«Подключение не защищено» на IP — это хорошо: сервер ответил, просто сертификат выписан на домен, а не на адрес.
Теперь Telegram. Открой ссылку из шага 9 на телефоне и проверь по списку:
- «Подключено» появляется за пару секунд — проверь трижды: выключи прокси и включи снова
- Переписка, фото, видео, кружок и файл побольше грузятся без вечной загрузки
- Android и iPhone, мобильный интернет и Wi-Fi, с VPN и без
- Спонсорский канал вверху списка чатов — на аккаунте, который на канал не подписан. Появляется не сразу, иногда через час
- WEB-ссылка (
tg://webproxy…) — в свежей версии Telegram
Ссылки
Готовые ссылки для людей. Нажал — Telegram предложил подключить прокси.
Ссылки всегда можно получить на сервере — для каждой метки отдельно, а WEB-ссылки второй строкой:
mtproxyl secret link {{s1l}}mtproxyl web links
Кто знает ссылку, тот пользуется прокси. Личные ссылки давай из рук в руки. Перешлют дальше — через неделю на прокси сотни людей, и адрес заблокируют.
Ссылка утекла — выпусти для этой метки новый секрет. Старая ссылка перестанет работать, остальные метки не пострадают:
mtproxyl secret rotate {{s1l}}На месяцы вперёд
Чтобы прокси жил без присмотра: обновления безопасности, учёт трафика, ограничение журнала.
export DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt update apt install -y unattended-upgrades vnstat printf 'APT::Periodic::Update-Package-Lists "1";\nAPT::Periodic::Unattended-Upgrade "1";\n' > /etc/apt/apt.conf.d/20auto-upgrades systemctl enable --now vnstat mkdir -p /etc/systemd/journald.conf.d printf '[Journal]\nSystemMaxUse=200M\n' > /etc/systemd/journald.conf.d/99-xmodz.conf systemctl restart systemd-journald
Обновления безопасности будут ставиться сами раз в сутки, без перезагрузки. Сертификат продлевается сам. Журнал не займёт больше 200 МБ.
Обновить систему и перезагрузить
Свежая Ubuntu приходит с сотнями необновлённых пакетов. Обнови один раз, пока на прокси ещё нет людей:
mtproxyl backup export DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold full-upgrade -y reboot
Termius отключится — так и должно быть. Через 3–5 минут зайди снова и запусти xmodz-check. Всё зелёное — прокси переживает перезагрузку.
Прокси забанили
Блокировка адреса — не авария, а обычное дело для прокси. Чинится за 15 минут, можно с телефона, и ссылки у людей не меняются.
- Бот пишет, что доступность из России упала, или люди жалуются, что не подключается.
- В панели хостера смени IP. Если можно выбрать подсеть — бери другую: блокируют обычно целыми подсетями.
- Проверь новый адрес на check-host, как в шаге 2.
- Поправь A-записи домена на новый IP. Именно поправь, не удаляй и не создавай заново: удалённая запись у провайдеров запоминается как «такого домена нет» примерно на полчаса.
- Зайди на сервер по новому IP и запусти
xmodz-newip— она перенастроит защиту и WEB Proxy на новый адрес и перезапустит прокси. - Через 10–15 минут —
xmodz-checkи телефон без VPN, как в шаге 8.
xmodz-newip
Без домена в ссылках стоит IP: xmodz-newip сам впишет новый адрес, но ссылки у людей изменятся — раздай их заново. Если был спонсорский канал, тег в @MTProxybot тоже придётся получить заново на новый IP.
Новый IP тоже не открывается, а в браузере телефона IP отвечает быстро, а домен висит — заблокировано имя. Тогда нужен новый домен: A-записи, новый тег спонсора в @MTProxybot и установка заново с новым доменом и прежними секретами.
Не работает
Сначала xmodz-check — красная строка чаще всего и есть ответ.
| Что видишь | Причина и что делать |
|---|---|
| Без VPN не подключается, с VPN — да | Адрес или домен заблокирован. Проверка браузером из шага 8 покажет, что именно |
| Подключение 3–10 секунд | Не выполнен шаг 7. В xmodz-check блок «Лимитер» покажет burst 1 |
| Нет спонсорского канала | Смотришь с подписанного аккаунта? Нужен неподписанный. В xmodz-check красный блок «Спонсорский канал» — сервер не достаёт ME-серверы, нужна другая площадка (шаг 2) |
Бот не ставится: Could not get lock | Свежая Ubuntu ещё ставит обновления. Повтори блок бота из шага 7 целиком — он подождёт сам |
Бот молчит на /start | Токен с ошибкой или этот же токен стоит на другом сервере |
| Сайт на домене не открывается, а прокси работает | mtproxyl selfmask apply |
Сразу после старта в журнале All ME servers for DC failed at init | Норма первых секунд: прокси собирает соединения с Telegram |
check-host: соединение отклонено | Адрес живой, но на этом порту ничего не запущено. До установки прокси — это нормально |
Журнал прокси за последние минуты:
journalctl -u mtproxyl-telemt -n 100 --no-pager
Вопросы про MTProxyL и telemt — в чатах проектов, ссылки в их репозиториях на GitHub.
Команды
Самое частое. Полный список — mtproxyl help.
xmodz-check | Проверить всё |
mtproxyl status | Состояние, подключения, трафик |
mtproxyl secret list | Все метки и трафик по ним |
mtproxyl secret link метка | Ссылки для метки |
mtproxyl secret add метка | Новая ссылка для новой группы людей |
mtproxyl secret rotate метка | Новый секрет для метки — старая ссылка перестанет работать |
mtproxyl dc | Связь с дата-центрами Telegram |
mtproxyl availability check | Открывается ли прокси из России прямо сейчас |
mtproxyl ip-history status | История адресов подключений — по ней видно, не разошлась ли ссылка |
mtproxyl web status | Состояние WEB Proxy |
mtproxyl backup | Сохранить копию настроек |
mtproxyl | Меню со всеми настройками |
Обновления
Раз в неделю — xmodz-check. Он сам скажет, если вышла новая версия MTProxyL.
Менеджер MTProxyL
Прокси при этом не перезапускается, люди ничего не заметят.
mtproxyl backup mtproxyl update --no-restart
Движок telemt
Прокси перезапустится, подключения на секунду оборвутся — лучше ночью. Команда покажет список версий: введи номер нужной (обычно 1 — самая новая) и подтверди перезапуск.
mtproxyl backup mtproxyl engine update
Через 5–10 минут — xmodz-check. Что-то сломалось — вернуть прошлую версию:
mtproxyl engine rollback --yes