"Быстрый
<br />
Чтобы уведомления The Dude доходили в Telegram даже при заблокированном api.telegram.org:</p>
<ul>
<li>Создай бота через @BotFather, получи токен и Chat ID</li>
<li>В The Dude добавь Notification типа "Execute on server"</li>
<li>Пропиши команду /tool fetch с URL api.<a class="wpil_keyword_link" href="https://t.me/it_apteka_com/34" target="_blank" rel="noopener" title="telegram" data-wpil-keyword-link="linked" data-wpil-monitor-id="2909">telegram</a>.org в поле Command</li>
<li>Если api.telegram.org заблокирован — подними MTProto или SOCKS5 прокси и маршрутизируй трафик через него</li>
<li>Проверь кнопкой Test — в боте должно появиться сообщение</li>
</ul>
<p>
<h2>Диагноз: узел упал, уведомление не пришло</h2>
<p>Уведомления The Dude в Telegram не работают — знакомая ситуация. Поднял мониторинг, настроил карту <a class="wpil_keyword_link" href="https://it-apteka.com/category/networks/" target="_blank" rel="noopener" title="Сети" data-wpil-keyword-link="linked" data-wpil-monitor-id="2905">сети</a>, добавил пороги. А потом обнаружил, что коммутатор лежал два часа, а ты узнал об этом от пользователей, а не от системы.</p>
<p>По факту причин здесь две. Либо уведомление не настроено правильно, либо RouterOS не может достучаться до api.telegram.org — потому что провайдер или ТСПУ блокирует Telegram. В 2026 году это уже не редкий случай, а стандартная ситуация для части российских сетей.</p>
<p>В статье разберём оба варианта: базовую настройку уведомлений через /tool fetch и обход блокировки через MTProto proxy. Уйдёт 30-40 минут, нужен <a class="wpil_keyword_link" href="https://it-apteka.com/tag/mikrotik/" target="_blank" rel="noopener" title="mikrotik" data-wpil-keyword-link="linked" data-wpil-monitor-id="2908">MikroTik</a> с The Dude, доступ к RouterOS и отдельный VPS за пределами блокировок — если провайдер режет Telegram.</p>
<p>Что сделаем:</p>
<ul>
<li>Создадим Telegram-бота и получим токен и Chat ID</li>
<li>Настроим Notification в The Dude типа «Execute on server»</li>
<li>Пропишем команду /tool fetch для отправки сообщений</li>
<li>Поднимем MTProto proxy и настроим маршрутизацию трафика через него</li>
<li>Разберём типичные ошибки</li>
</ul>
<h2>Как это работает: архитектура уведомления</h2>
<p>The Dude работает поверх RouterOS. Когда статус устройства или сервиса меняется, срабатывает триггер и выполняется действие из секции Notifications. Тип уведомления «Execute on server» означает, что RouterOS выполнит произвольную команду на роутере.</p>
<p>Telegram принимает сообщения через HTTP API. Отправить сообщение — это GET или POST запрос к api.telegram.org. RouterOS умеет делать HTTP-запросы через /tool fetch. Соединяем одно с другим — получаем уведомление в Telegram при любом событии в сети.</p>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
A["Устройство меняет статус"] --> B["The Dude фиксирует событие"]
B --> C["Триггер Notification"]
C --> D["Execute on server"]
D --> E["RouterOS /tool fetch"]
E --> F{"api.telegram.org доступен?"}
F -->|"Да"| G["Сообщение в Telegram"]
F -->|"Нет"| H["MTProto/SOCKS5 Proxy"]
H --> I["VPS за пределами блокировки"]
I --> G
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style G fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style H fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
</pre>
<h2>Системные требования</h2>
<table>
<thead>
<tr>
<th>Компонент</th>
<th>Минимум</th>
<th>Рекомендуется</th>
</tr>
</thead>
<tbody>
<tr>
<td>RouterOS</td>
<td>6.40+</td>
<td>7.x (стабильный канал)</td>
</tr>
<tr>
<td>The Dude Server</td>
<td>6.x (пакет на RouterOS)</td>
<td>7.x</td>
</tr>
<tr>
<td>The Dude Client</td>
<td>6.x</td>
<td>Последний релиз с mikrotik.com</td>
</tr>
<tr>
<td>VPS для прокси</td>
<td>1 CPU / 512 MB RAM</td>
<td>1 CPU / 1 GB RAM, порт 443</td>
</tr>
<tr>
<td>ОС на VPS</td>
<td>Ubuntu 20.04</td>
<td><a href="https://it-apteka.com/nastrojka-staticheskogo-ip-v-ubuntu-22-04-24-04-i-debian-12-13-nov/" title="Настройка статического IP в Ubuntu 22.04-24.04 и Debian 12-13: Новый мир Netplan" target="_blank" rel="noopener" data-wpil-monitor-id="2900">Ubuntu 22.04 / Debian</a> 12</td>
</tr>
</tbody>
</table>
<p>На момент публикации актуальна RouterOS 7.18. Перед настройкой проверь свежие релизы на <a href="https://mikrotik.com/download" rel="nofollow" target="_blank">mikrotik.com/download</a>.</p>
<h2>Шаг 1. Создаём Telegram-бота</h2>
<p>Открой Telegram и найди @BotFather. Это официальный бот Telegram для управления ботами — не ищи альтернативы.</p>
<p>Отправь команду:</p>
<pre><code class="language-text">
/newbot
</code></pre>
<p>BotFather спросит имя бота (любое, например «MyDudeBot») и username (должен оканчиваться на «bot», например «my_dude_alert_bot»). После создания BotFather выдаст токен вида:</p>
<pre><code class="language-text">
1234567890:AAFabcDEFghiJKLmnoPQRstu-vwxYZ012345
</code></pre>
"Важно:
<br />
Токен — это пароль от бота. Не публикуй его в открытых конфигах и не вставляй в скрипты, которые хранятся в публичных репозиториях. Если токен утёк — отзови его через /revoke в BotFather и создай новый.<br />
<p>Теперь нужен Chat ID — идентификатор чата, куда бот будет слать сообщения. Напиши своему боту любое сообщение (например, «hello»). Затем открой в браузере:</p>
<pre><code class="language-bash">
https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates
</code></pre>
<p>В ответе найди поле «chat» — там будет «id». Это и есть Chat ID. Запиши его.</p>
<pre><code class="language-text">
{
"ok": true,
"result": [{
"message": {
"chat": {
"id": 123456789,
"type": "private"
}
}
}]
}
</code></pre>
<p>Если хочешь слать уведомления в группу — добавь бота в группу администратором, напиши что-нибудь в группе, потом снова вызови getUpdates. Chat ID группы начинается с минуса, например -1001234567890.</p>
<h2>Шаг 2. Проверяем доступность api.telegram.org</h2>
<p>Прежде чем настраивать уведомления — проверь, достигает ли RouterOS Telegram. Зайди в терминал RouterOS (SSH или Winbox Terminal) и выполни:</p>
<pre><code class="language-bash">
/tool fetch url="https://api.telegram.org" keep-result=no
</code></pre>
<p>Если получаешь ошибку «connection timed out» или «connection refused» — api.telegram.org заблокирован. Переходи сразу к разделу про MTProto proxy. Если команда выполнилась без ошибок — идём дальше.</p>
<p>Можно проверить пингом (хотя Telegram не всегда отвечает на ICMP):</p>
<pre><code class="language-bash">
/ping address=api.telegram.org count=3
</code></pre>
<h2>Шаг 3. Настройка уведомления в The Dude</h2>
<p>Открой The Dude Client и подключись к серверу. На левой панели найди раздел «Notifications» — это список всех настроенных уведомлений.</p>
<p>Нажми «+» чтобы создать новое. Заполни:</p>
<ul>
<li><b>Name</b> — любое понятное имя, например «Telegram Alert»</li>
<li><b>Type</b> — выбери «Execute on server»</li>
<li><b>Command</b> — вставь команду отправки сообщения (см. ниже)</li>
</ul>
<p>Базовая команда для поля Command:</p>
<pre><code class="language-bash">
/tool fetch url="https://api.telegram.org/bot<ТОКЕН>/sendMessage\?chat_id=<CHAT_ID>&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no
</code></pre>
<p>Замени <ТОКЕН> и <CHAT_ID> на свои значения. Экранирование знака вопроса обязательно (\?) — без него RouterOS ломает URL.</p>
<p>Расширенная команда с форматированием:</p>
<pre><code class="language-bash">
/tool fetch url="https://api.telegram.org/bot<ТОКЕН>/sendMessage\?chat_id=<CHAT_ID>&text=[TimeAndDate]%0ADevice:%20[Device.Name]%0AIP:%20[Device.FirstAddress]%0AMAC:%20[Device.MacAddressesCommaList]%0AStatus:%20[Service.Status]&parse_mode=markdown" keep-result=no
</code></pre>
<p>%0A — это URL-кодированный перенос строки. %20 — пробел. Весь URL должен быть в одну строку без переносов.</p>
<p>Переменные The Dude которые можно использовать в тексте уведомления:</p>
<table>
<thead>
<tr>
<th>Переменная</th>
<th>Что подставляет</th>
</tr>
</thead>
<tbody>
<tr>
<td>[Device.Name]</td>
<td>Имя устройства в The Dude</td>
</tr>
<tr>
<td>[Device.FirstAddress]</td>
<td>Первый IP-адрес устройства</td>
</tr>
<tr>
<td>[Device.MacAddressesCommaList]</td>
<td>MAC-адреса через запятую</td>
</tr>
<tr>
<td>[Device.Status]</td>
<td>Статус устройства (up/down)</td>
</tr>
<tr>
<td>[Service.Status]</td>
<td>Статус сервиса</td>
</tr>
<tr>
<td>[TimeAndDate]</td>
<td>Дата и время события</td>
</tr>
<tr>
<td>[Time]</td>
<td>Только время</td>
</tr>
</tbody>
</table>
<h2>Шаг 4. Привязка уведомления к устройству</h2>
<p>Создать уведомление — это половина дела. Его нужно привязать к устройству или сервису.</p>
<p>Двойной клик на устройстве в карте открывает его свойства. Перейди на вкладку «Notifications». Нажми «+» и выбери созданный «Telegram Alert». Укажи триггеры — когда отправлять уведомление. Стандартный вариант:</p>
<ul>
<li>Status change: any — при любом изменении статуса</li>
<li>Status change: to down — только при падении</li>
<li>Status change: to up — только при восстановлении</li>
</ul>
<p>Нажми кнопку «Test» чтобы проверить. В поле Command переменные не подставляются при тесте — это нормальное поведение. В реальном уведомлении они будут заменены на значения.</p>
"Результат"
<br />
Если всё настроено правильно — в Telegram появится сообщение от бота сразу после нажатия Test. Если сообщения нет — читай раздел "Осложнения".<br />
<h2>MTProto proxy: когда api.telegram.org заблокирован</h2>
<p>Это самая интересная часть. Классическая проблема российских сетей — /tool fetch к api.telegram.org виснет или возвращает ошибку подключения. Роскомнадзор режет трафик к Telegram на уровне ТСПУ.</p>
<p>Решение — MTProto proxy. Это официальный прокси-сервер от Telegram, разработанный специально для обхода блокировок. Он работает только с Telegram и маскирует трафик под обычный HTTPS. Тебе нужен VPS за пределами блокировок — любой европейский хостер, например Hetzner или DigitalOcean.</p>
<p>Но тут важный момент. MTProto proxy — это прокси для Telegram-клиентов, а не для HTTP API. /tool fetch в RouterOS обращается к HTTP API, а не через клиентский протокол. Для /tool fetch нужен обычный <a href="https://it-apteka.com/socks4-socks5-i-http-proksi-otlichija-dostoinstva-i-nedostatki/" title="SOCKS4, SOCKS5 и HTTP прокси: отличия, достоинства и недостатки" target="_blank" rel="noopener" data-wpil-monitor-id="2896">HTTP или SOCKS5 прокси</a>, который проксирует запросы к api.telegram.org.</p>
<p>Архитектура которая работает:</p>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart LR
A["RouterOS /tool fetch"] --> B["SOCKS5 Proxy на VPS"]
B --> C["api.telegram.org"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style B fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style C fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
</pre>
<h3>Вариант А: поднимаем SOCKS5 прокси на VPS</h3>
<p>Это самый простой вариант. Dante — один из самых распространённых SOCKS5-серверов. Устанавливаем на VPS с Ubuntu/Debian:</p>
<pre><code class="language-bash">
apt update && apt install -y dante-server
</code></pre>
<p>Конфигурация /etc/danted.conf (минимальная, без авторизации — только для твоего IP):</p>
<pre><code class="language-text">
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
clientmethod: none
socksmethod: none
client pass {
from: <ВАШ_IP_РОУТЕРА>/32 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp
log: connect disconnect error
}
</code></pre>
<p>Замени eth0 на имя интерфейса VPS (проверь через ip a). Замени <ВАШ_IP_РОУТЕРА> на внешний IP твоего MikroTik.</p>
<pre><code class="language-bash">
systemctl enable danted
systemctl start danted
systemctl status danted
</code></pre>
<p>Проверь с самого VPS что SOCKS5 работает:</p>
<pre><code class="language-bash">
curl -x socks5h://127.0.0.1:1080 https://api.telegram.org/botTEST/getMe
</code></pre>
<p>Если в ответе JSON — всё работает. Теперь настраиваем маршрутизацию на MikroTik.</p>
<h3>Маршрутизация /tool fetch через SOCKS5 в RouterOS</h3>
<p>RouterOS не поддерживает SOCKS5 напрямую в /tool fetch — это ограничение команды. Нужно маршрутизировать IP-трафик к api.telegram.org через туннель или через policy-based routing.</p>
<p>Самый чистый способ — добавить маршрут к IP-адресам Telegram через VPS-сервер, используя WireGuard или OpenVPN туннель между MikroTik и VPS. Но это отдельная история.</p>
<p>Быстрый способ без туннеля — использовать на VPS HTTP-прокси (nginx как reverse proxy или 3proxy) и вызывать его из /tool fetch напрямую:</p>
<pre><code class="language-bash">
apt install -y nginx
</code></pre>
<p>Конфиг /etc/nginx/sites-available/tgproxy:</p>
<pre><code class="language-text">
server {
listen 8443;
allow <ВАШ_IP_РОУТЕРА>;
deny all;
location / {
proxy_pass https://api.telegram.org;
proxy_ssl_server_name on;
proxy_set_header Host api.telegram.org;
proxy_set_header X-Real-IP $remote_addr;
}
}
</code></pre>
<pre><code class="language-bash">
ln -s /etc/nginx/sites-available/tgproxy /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
</code></pre>
<p>Теперь в The Dude меняем URL в команде уведомления — вместо api.telegram.org подставляем IP нашего VPS и порт:</p>
<pre><code class="language-bash">
/tool fetch url="http://<IP_VPS>:8443/bot<ТОКЕН>/sendMessage\?chat_id=<CHAT_ID>&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no
</code></pre>
<p>Проверь из RouterOS:</p>
<pre><code class="language-bash">
/tool fetch url="http://<IP_VPS>:8443/botТОКЕН/getMe" keep-result=no
</code></pre>
<p>Если ответ не содержит ошибок — маршрут работает.</p>
<h3>Вариант Б: MTProto proxy + туннель</h3>
<p>Если нужна именно MTProto-маскировка трафика — на VPS поднимаем MTProto proxy, а рядом SOCKS5 или HTTP прокси для API-запросов. MTProto proxy обслуживает Telegram-клиентов на телефонах, SOCKS5 — запросы от RouterOS.</p>
<p>Устанавливаем MTProto proxy через <a class="wpil_keyword_link" href="https://it-apteka.com/tag/docker/" target="_blank" rel="noopener" title="Docker" data-wpil-keyword-link="linked" data-wpil-monitor-id="2907">Docker</a> на VPS:</p>
<pre><code class="language-bash">
apt install -y docker.io
systemctl enable docker && systemctl start docker
</code></pre>
<pre><code class="language-bash">
SECRET=$(openssl rand -hex 16)
echo "Твой секрет: $SECRET"
docker run -d \
--name mtproto-proxy \
--restart=always \
-p 443:443 \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
</code></pre>
<p>После запуска контейнер выведет ссылку для подключения вида tg://proxy?server=…. Сохрани её — она нужна для настройки Telegram-клиентов.</p>
<pre><code class="language-bash">
docker logs mtproto-proxy
</code></pre>
<p>Проверяем что контейнер запустился и работает:</p>
<pre><code class="language-bash">
docker exec mtproto-proxy curl http://localhost:2398/stats
</code></pre>
<p>Параметр active_targets должен быть больше нуля. Если ноль — VPS не достигает Telegram-серверов, проверь исходящий трафик на порту 443.</p>
<h2>Настройка файрвола на VPS</h2>
<p>Прокси без защиты — приглашение для абьюза. Минимальный набор правил UFW:</p>
<pre><code class="language-bash">
ufw allow ssh
ufw allow 443/tcp comment "MTProto proxy"
ufw allow from <ВАШ_IP_РОУТЕРА> to any port 8443 comment "Nginx TG API proxy"
ufw allow from <ВАШ_IP_РОУТЕРА> to any port 1080 comment "SOCKS5 Dante"
ufw --force enable
ufw status
</code></pre>
<p>Порт 1080 открыт только для IP твоего роутера. Остальным — отказ. Это не опциональная рекомендация, это обязательный шаг.</p>
<h2>Таблица портов</h2>
<table>
<thead>
<tr>
<th>Порт</th>
<th>Протокол</th>
<th>Назначение</th>
<th>Открыт снаружи</th>
</tr>
</thead>
<tbody>
<tr>
<td>443</td>
<td>TCP</td>
<td>MTProto proxy для клиентов</td>
<td>Да (все)</td>
</tr>
<tr>
<td>8443</td>
<td>TCP</td>
<td>Nginx reverse proxy к TG API</td>
<td>Только для IP роутера</td>
</tr>
<tr>
<td>1080</td>
<td>TCP</td>
<td>Dante SOCKS5</td>
<td>Только для IP роутера</td>
</tr>
<tr>
<td>2398</td>
<td>TCP</td>
<td>MTProto stats (localhost)</td>
<td>Нет</td>
</tr>
<tr>
<td>22</td>
<td>TCP</td>
<td>SSH управление VPS</td>
<td>Лучше ограничить по IP</td>
</tr>
</tbody>
</table>
<h2>Проверка работы</h2>
<p>После настройки проверяем каждый уровень по цепочке.</p>
<p><a href="https://it-apteka.com/nastrojka-ospf-na-mikrotik-routeros-7-polnyj-gajd-ot-diagnoza-do-proverki/" title="Настройка OSPF на MikroTik RouterOS 7: полный гайд от диагноза до проверки" target="_blank" rel="noopener" data-wpil-monitor-id="2897">Проверка доступности VPS из RouterOS</a>:</p>
<pre><code class="language-bash">
/ping address=<IP_VPS> count=3
</code></pre>
<p>Проверка что nginx-прокси отвечает:</p>
<pre><code class="language-bash">
/tool fetch url="http://<IP_VPS>:8443/botТОКЕН/getMe" output=user as-value
</code></pre>
<p>В выводе должен быть JSON с данными бота — поле «username» с именем твоего бота.</p>
<p>Ручная отправка тестового сообщения прямо из RouterOS:</p>
<pre><code class="language-bash">
/tool fetch url="http://<IP_VPS>:8443/botТОКЕН/sendMessage\?chat_id=<CHAT_ID>&text=Test+from+RouterOS" keep-result=no
</code></pre>
<p>Если сообщение пришло — интеграция работает. Возвращайся в The Dude и нажимай Test в настройках уведомления.</p>
<h2>Осложнения</h2>
<h3>Ошибка: connection timed out при /tool fetch</h3>
<p>Причина — api.telegram.org заблокирован или недоступен с IP роутера. Решение — перейди на схему с прокси. Проверь доступность VPS через пинг. Убедись что <a href="https://it-apteka.com/avtomaticheskaja-ustanovka-wordpress-na-vps-za-5-minut-skript-pod-kljuch/" title="Установка WordPress на Ubuntu VPS: bash-скрипт, Nginx, SSL и WP-CLI за 10 минут" target="_blank" rel="noopener" data-wpil-monitor-id="2898">nginx на VPS</a> запущен и порт 8443 открыт.</p>
<pre><code class="language-bash">
systemctl status nginx
netstat -tlnp | grep 8443
</code></pre>
<h3>Ошибка: bad HTTP message при /tool fetch</h3>
<p>Причина — неправильно сформирован URL. Чаще всего забытый знак \? или пробел внутри URL. RouterOS требует URL в одну строку без реальных пробелов. Пробелы заменяй на %20, перенос строки на %0A.</p>
<pre><code class="language-bash">
# Неправильно - знак ? без экранирования
url="https://api.telegram.org/.../sendMessage?chat_id=..."
# Правильно
url="https://api.telegram.org/.../sendMessage\?chat_id=..."
</code></pre>
<h3>Сообщение приходит при Test, но не приходит при реальном событии</h3>
<p>Причина — уведомление не привязано к устройству или триггер настроен неправильно. Проверь: двойной клик на устройстве — вкладка Notifications — должен быть «Telegram Alert» в списке с нужным триггером.</p>
<p>Ещё одна причина — The Dude отправляет уведомление, но RouterOS занят и /tool fetch не выполняется моментально. Проверь логи RouterOS:</p>
<pre><code class="language-bash">
/log print where topics~"script"
</code></pre>
<h3>Ошибка: Docker контейнер mtproto-proxy не запускается</h3>
<p>Причина — занят порт 443 или нет доступа к Telegram. Проверь:</p>
<pre><code class="language-bash">
netstat -tlnp | grep 443
docker logs mtproto-proxy
</code></pre>
<p>Если порт занят — останови мешающий сервис или поменяй порт контейнера на нестандартный (-p 8443:443). Если в логах ошибки подключения — VPS не может достичь Telegram-серверов, проблема на уровне хостинга.</p>
<h3>Ошибка: nginx возвращает 403</h3>
<p>Причина — IP роутера не попал в allow-список. Проверь внешний IP MikroTik:</p>
<pre><code class="language-bash">
/ip address print
</code></pre>
<p>Если роутер за NAT у провайдера — используй IP провайдерского шлюза или переключись на схему с авторизацией по паролю в Dante.</p>
<h3>Уведомления приходят, но с задержкой 5-10 минут</h3>
<p>Причина — в настройках уведомления выставлен интервал повторения или Throttle. В The Dude открой Notification — проверь параметры «Repeat interval» и «Throttle». Для срочных алертов ставь Throttle в 0 или минимальное значение.</p>
<h2>Альтернативные решения</h2>
<h3>3proxy вместо Dante</h3>
<p>3proxy — более гибкий инструмент, поддерживает HTTP и SOCKS5 одновременно, умеет авторизацию. Вариант если нужна авторизация по логину/паролю вместо ограничения по IP:</p>
<pre><code class="language-bash">
apt install -y 3proxy
</code></pre>
<p>Базовый конфиг /etc/3proxy/3proxy.cfg:</p>
<pre><code class="language-text">
daemon
log /var/log/3proxy.log
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
auth strong
users admin:CL:<ПАРОЛь>
allow admin
proxy -p8080
socks -p1080
</code></pre>
<h3>WireGuard туннель вместо открытого прокси</h3>
<p>Самый надёжный вариант — WireGuard туннель между MikroTik и VPS. Весь трафик к api.telegram.org идёт через туннель, прокси не нужен вообще. Настройка сложнее, зато прокси не торчит в интернет ни на каком порту. Подходит если уже есть WireGuard-инфраструктура.</p>
<h3>Email-уведомления как резерв</h3>
<p>The Dude поддерживает email-уведомления без всяких прокси — через штатный SMTP. Если Telegram недоступен совсем — email как fallback. Настраивается в Contents — Notifications — тип «<a class="wpil_keyword_link" href="https://it-apteka.com/tag/mail/" target="_blank" rel="noopener" title="mail" data-wpil-keyword-link="linked" data-wpil-monitor-id="2906">Mail</a>.</p>
<h2>Профилактика и мониторинг</h2>
<p>Отдельная строка в crontab на VPS без комментария убила несколько IT-отделов. Конфиг MTProto proxy обновляется автоматически, но это не значит что за ним не надо следить.</p>
<p>Автоматическое обновление конфигурации MTProxy (добавь в cron на VPS):</p>
<pre><code class="language-bash">
0 3 * * * docker pull telegrammessenger/proxy:latest && docker restart mtproto-proxy
</code></pre>
<p>Мониторинг доступности прокси из <a href="https://it-apteka.com/rezervnoe-kopirovanie-mikrotik-routeros-7-v-telegram-avtomatizacija-za-20-minut/" title="Резервное копирование MikroTik RouterOS 7 в Telegram: рабочий скрипт и разбор ошибок" target="_blank" rel="noopener" data-wpil-monitor-id="2899">RouterOS — добавь скрипт</a> в Scheduler:</p>
<pre><code class="language-bash">
/tool fetch url="http://<IP_VPS>:8443/botТОКЕН/getMe" keep-result=no
:if ($fetchresult = "error") do={
:log error "TG proxy unavailable"
}
</code></pre>
<p>Бэкап конфигурации RouterOS перед изменениями — обязательно:</p>
<pre><code class="language-bash">
/system backup save name=before-tg-setup
</code></pre>
<p>Проверяй логи VPS раз в неделю. Если в логах Dante или nginx появились попытки подключения с чужих IP — немедленно ужесточи правила файрвола или смени порт.</p>
<h2>Обновление MTProto proxy</h2>
<p>Telegram периодически меняет конфигурацию серверов. Официальный образ <a href="https://it-apteka.com/avtomaticheskoe-obnovlenie-docker-kontejnerov-polnoe-rukovodstvo-i-primery/" title="Автоматическое обновление Docker контейнеров: полное руководство и примеры" target="_blank" rel="noopener" data-wpil-monitor-id="2895">Docker обновляется автоматически при рестарте контейнера</a>. Если прокси перестал работать после обновления — пересоздай контейнер с новым секретом:</p>
<pre><code class="language-bash">
docker stop mtproto-proxy
docker rm mtproto-proxy
SECRET=$(openssl rand -hex 16)
docker run -d \
--name mtproto-proxy \
--restart=always \
-p 443:443 \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
docker logs mtproto-proxy
</code></pre>
<h2>FAQ</h2>
<h3>Почему уведомления The Dude в Telegram не работают после настройки?</h3>
<p>Первым делом проверь три вещи. Один — выполни /tool fetch к api.telegram.org из терминала RouterOS и смотри на результат. Два — убедись что уведомление привязано к устройству на вкладке Notifications в свойствах устройства. Три — нажми Test и посмотри в лог RouterOS (/log print) — там будет ошибка если что-то пошло не так.</p>
<h3>Как проверить что The Dude правильно отправляет уведомления в Telegram?</h3>
<p>Нажми кнопку Test в настройках уведомления. Если в боте появилось сообщение — работает. Если нет — смотри логи RouterOS через /log print. Проверь токен и Chat ID: открой в браузере https://api.telegram.org/botТОКЕН/getMe — должен вернуть JSON с данными бота.</p>
<h3>Что делать если api.telegram.org заблокирован провайдером?</h3>
<p>Нужен промежуточный сервер — VPS за пределами блокировок. Подними на нём nginx как reverse proxy к api.telegram.org (порт 8443) и в команде /tool fetch замени api.telegram.org на IP своего VPS. Дополнительно закрой этот порт на файрволе для <a href="https://it-apteka.com/mikrotik-hap-obzor-vseh-modelej-harakteristiki-i-nastrojka-routera/" title="MikroTik hAP: обзор всех моделей, характеристики и настройка роутера" target="_blank" rel="noopener" data-wpil-monitor-id="2901">всех кроме IP своего роутера</a>.</p>
<h3>Чем MTProto proxy отличается от SOCKS5 для уведомлений The Dude?</h3>
<p>MTProto proxy работает на уровне Telegram-клиентов и предназначен для использования в Telegram-приложении на телефоне. RouterOS и /tool fetch работают с HTTP API Telegram, который требует обычного HTTP или SOCKS5 прокси. Для уведомлений из The Dude нужен SOCKS5 или HTTP reverse proxy, а MTProto proxy используют параллельно — для телефонов сотрудников или для клиентов которым нужен доступ к Telegram.</p>
<h3>Можно ли использовать публичные MTProto прокси для уведомлений The Dude?</h3>
<p>Нет. Публичные MTProto прокси предназначены для Telegram-клиентов, не для HTTP API. Кроме того, они ненадёжны — регулярно умирают, меняют адреса, и ты не контролируешь их доступность. Для production-мониторинга нужен только свой VPS с контролируемым прокси.</p>
<h2>Итог</h2>
<p>Уведомления настроены. Теперь когда узел падает — Telegram сообщает об этом раньше пользователей. Если провайдер режет Telegram — прокси на VPS решает проблему раз и навсегда.</p>
<p>Вся схема: BotFather — токен и Chat ID — уведомление в The Dude типа «Execute on server» — команда /tool fetch — и опционально nginx или Dante на VPS если api.telegram.org недоступен напрямую.</p>
"Не
<br />
Пиши в комментарии — разберёмся. Опиши версию RouterOS, что пишет /log print и что выдаёт /tool fetch при ручном запуске. Это закрывает 90% проблем за пять минут.<br />
Быстрый ответ
Чтобы уведомления The Dude доходили в Telegram даже при заблокированном api.telegram.org:
- Создай бота через @BotFather, получи токен и Chat ID
- В The Dude добавь Notification типа «Execute on server»
- Пропиши команду /tool fetch с URL api.telegram.org в поле Command
- Если api.telegram.org заблокирован — подними MTProto или SOCKS5 прокси и маршрутизируй трафик через него
- Проверь кнопкой Test — в боте должно появиться сообщение
Диагноз: узел упал, уведомление не пришло
Уведомления The Dude в Telegram не работают — знакомая ситуация. Поднял мониторинг, настроил карту сети, добавил пороги. А потом обнаружил, что коммутатор лежал два часа, а ты узнал об этом от пользователей, а не от системы.
По факту причин здесь две. Либо уведомление не настроено правильно, либо RouterOS не может достучаться до api.telegram.org — потому что провайдер или ТСПУ блокирует Telegram. В 2026 году это уже не редкий случай, а стандартная ситуация для части российских сетей.
В статье разберём оба варианта: базовую настройку уведомлений через /tool fetch и обход блокировки через MTProto proxy. Уйдёт 30-40 минут, нужен MikroTik с The Dude, доступ к RouterOS и отдельный VPS за пределами блокировок — если провайдер режет Telegram.
Что сделаем:
- Создадим Telegram-бота и получим токен и Chat ID
- Настроим Notification в The Dude типа «Execute on server»
- Пропишем команду /tool fetch для отправки сообщений
- Поднимем MTProto proxy и настроим маршрутизацию трафика через него
- Разберём типичные ошибки
Как это работает: архитектура уведомления
The Dude работает поверх RouterOS. Когда статус устройства или сервиса меняется, срабатывает триггер и выполняется действие из секции Notifications. Тип уведомления «Execute on server» означает, что RouterOS выполнит произвольную команду на роутере.
Telegram принимает сообщения через HTTP API. Отправить сообщение — это GET или POST запрос к api.telegram.org. RouterOS умеет делать HTTP-запросы через /tool fetch. Соединяем одно с другим — получаем уведомление в Telegram при любом событии в сети.
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
A["Устройство меняет статус"] --> B["The Dude фиксирует событие"]
B --> C["Триггер Notification"]
C --> D["Execute on server"]
D --> E["RouterOS /tool fetch"]
E --> F{"api.telegram.org доступен?"}
F -->|"Да"| G["Сообщение в Telegram"]
F -->|"Нет"| H["MTProto/SOCKS5 Proxy"]
H --> I["VPS за пределами блокировки"]
I --> G
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style G fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style H fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
Системные требования
| Компонент |
Минимум |
Рекомендуется |
| RouterOS |
6.40+ |
7.x (стабильный канал) |
| The Dude Server |
6.x (пакет на RouterOS) |
7.x |
| The Dude Client |
6.x |
Последний релиз с mikrotik.com |
| VPS для прокси |
1 CPU / 512 MB RAM |
1 CPU / 1 GB RAM, порт 443 |
| ОС на VPS |
Ubuntu 20.04 |
Ubuntu 22.04 / Debian 12 |
На момент публикации актуальна RouterOS 7.18. Перед настройкой проверь свежие релизы на mikrotik.com/download.
Шаг 1. Создаём Telegram-бота
Открой Telegram и найди @BotFather. Это официальный бот Telegram для управления ботами — не ищи альтернативы.
Отправь команду:
/newbot
BotFather спросит имя бота (любое, например «MyDudeBot») и username (должен оканчиваться на «bot», например «my_dude_alert_bot»). После создания BotFather выдаст токен вида:
1234567890:AAFabcDEFghiJKLmnoPQRstu-vwxYZ012345
Важно: сохрани токен
Токен — это пароль от бота. Не публикуй его в открытых конфигах и не вставляй в скрипты, которые хранятся в публичных репозиториях. Если токен утёк — отзови его через /revoke в BotFather и создай новый.
Теперь нужен Chat ID — идентификатор чата, куда бот будет слать сообщения. Напиши своему боту любое сообщение (например, «hello»). Затем открой в браузере:
https://api.telegram.org/bot/getUpdates
В ответе найди поле «chat» — там будет «id». Это и есть Chat ID. Запиши его.
{
"ok": true,
"result": [{
"message": {
"chat": {
"id": 123456789,
"type": "private"
}
}
}]
}
Если хочешь слать уведомления в группу — добавь бота в группу администратором, напиши что-нибудь в группе, потом снова вызови getUpdates. Chat ID группы начинается с минуса, например -1001234567890.
Шаг 2. Проверяем доступность api.telegram.org
Прежде чем настраивать уведомления — проверь, достигает ли RouterOS Telegram. Зайди в терминал RouterOS (SSH или Winbox Terminal) и выполни:
/tool fetch url="https://api.telegram.org" keep-result=no
Если получаешь ошибку «connection timed out» или «connection refused» — api.telegram.org заблокирован. Переходи сразу к разделу про MTProto proxy. Если команда выполнилась без ошибок — идём дальше.
Можно проверить пингом (хотя Telegram не всегда отвечает на ICMP):
/ping address=api.telegram.org count=3
Шаг 3. Настройка уведомления в The Dude
Открой The Dude Client и подключись к серверу. На левой панели найди раздел «Notifications» — это список всех настроенных уведомлений.
Нажми «+» чтобы создать новое. Заполни:
- Name — любое понятное имя, например «Telegram Alert»
- Type — выбери «Execute on server»
- Command — вставь команду отправки сообщения (см. ниже)
Базовая команда для поля Command:
/tool fetch url="https://api.telegram.org/bot/sendMessage\?chat_id=&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no
Замени и на свои значения. Экранирование знака вопроса обязательно (\?) — без него RouterOS ломает URL.
Расширенная команда с форматированием:
/tool fetch url="https://api.telegram.org/bot/sendMessage\?chat_id=&text=[TimeAndDate]%0ADevice:%20[Device.Name]%0AIP:%20[Device.FirstAddress]%0AMAC:%20[Device.MacAddressesCommaList]%0AStatus:%20[Service.Status]&parse_mode=markdown" keep-result=no
%0A — это URL-кодированный перенос строки. %20 — пробел. Весь URL должен быть в одну строку без переносов.
Переменные The Dude которые можно использовать в тексте уведомления:
| Переменная |
Что подставляет |
| [Device.Name] |
Имя устройства в The Dude |
| [Device.FirstAddress] |
Первый IP-адрес устройства |
| [Device.MacAddressesCommaList] |
MAC-адреса через запятую |
| [Device.Status] |
Статус устройства (up/down) |
| [Service.Status] |
Статус сервиса |
| [TimeAndDate] |
Дата и время события |
| [Time] |
Только время |
Шаг 4. Привязка уведомления к устройству
Создать уведомление — это половина дела. Его нужно привязать к устройству или сервису.
Двойной клик на устройстве в карте открывает его свойства. Перейди на вкладку «Notifications». Нажми «+» и выбери созданный «Telegram Alert». Укажи триггеры — когда отправлять уведомление. Стандартный вариант:
- Status change: any — при любом изменении статуса
- Status change: to down — только при падении
- Status change: to up — только при восстановлении
Нажми кнопку «Test» чтобы проверить. В поле Command переменные не подставляются при тесте — это нормальное поведение. В реальном уведомлении они будут заменены на значения.
Результат
Если всё настроено правильно — в Telegram появится сообщение от бота сразу после нажатия Test. Если сообщения нет — читай раздел «Осложнения».
MTProto proxy: когда api.telegram.org заблокирован
Это самая интересная часть. Классическая проблема российских сетей — /tool fetch к api.telegram.org виснет или возвращает ошибку подключения. Роскомнадзор режет трафик к Telegram на уровне ТСПУ.
Решение — MTProto proxy. Это официальный прокси-сервер от Telegram, разработанный специально для обхода блокировок. Он работает только с Telegram и маскирует трафик под обычный HTTPS. Тебе нужен VPS за пределами блокировок — любой европейский хостер, например Hetzner или DigitalOcean.
Но тут важный момент. MTProto proxy — это прокси для Telegram-клиентов, а не для HTTP API. /tool fetch в RouterOS обращается к HTTP API, а не через клиентский протокол. Для /tool fetch нужен обычный HTTP или SOCKS5 прокси, который проксирует запросы к api.telegram.org.
Архитектура которая работает:
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart LR
A["RouterOS /tool fetch"] --> B["SOCKS5 Proxy на VPS"]
B --> C["api.telegram.org"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style B fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style C fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
Вариант А: поднимаем SOCKS5 прокси на VPS
Это самый простой вариант. Dante — один из самых распространённых SOCKS5-серверов. Устанавливаем на VPS с Ubuntu/Debian:
apt update && apt install -y dante-server
Конфигурация /etc/danted.conf (минимальная, без авторизации — только для твоего IP):
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
clientmethod: none
socksmethod: none
client pass {
from: /32 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp
log: connect disconnect error
}
Замени eth0 на имя интерфейса VPS (проверь через ip a). Замени на внешний IP твоего MikroTik.
systemctl enable danted
systemctl start danted
systemctl status danted
Проверь с самого VPS что SOCKS5 работает:
curl -x socks5h://127.0.0.1:1080 https://api.telegram.org/botTEST/getMe
Если в ответе JSON — всё работает. Теперь настраиваем маршрутизацию на MikroTik.
Маршрутизация /tool fetch через SOCKS5 в RouterOS
RouterOS не поддерживает SOCKS5 напрямую в /tool fetch — это ограничение команды. Нужно маршрутизировать IP-трафик к api.telegram.org через туннель или через policy-based routing.
Самый чистый способ — добавить маршрут к IP-адресам Telegram через VPS-сервер, используя WireGuard или OpenVPN туннель между MikroTik и VPS. Но это отдельная история.
Быстрый способ без туннеля — использовать на VPS HTTP-прокси (nginx как reverse proxy или 3proxy) и вызывать его из /tool fetch напрямую:
apt install -y nginx
Конфиг /etc/nginx/sites-available/tgproxy:
server {
listen 8443;
allow ;
deny all;
location / {
proxy_pass https://api.telegram.org;
proxy_ssl_server_name on;
proxy_set_header Host api.telegram.org;
proxy_set_header X-Real-IP $remote_addr;
}
}
ln -s /etc/nginx/sites-available/tgproxy /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Теперь в The Dude меняем URL в команде уведомления — вместо api.telegram.org подставляем IP нашего VPS и порт:
/tool fetch url="http://:8443/bot/sendMessage\?chat_id=&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no
Проверь из RouterOS:
/tool fetch url="http://:8443/botТОКЕН/getMe" keep-result=no
Если ответ не содержит ошибок — маршрут работает.
Вариант Б: MTProto proxy + туннель
Если нужна именно MTProto-маскировка трафика — на VPS поднимаем MTProto proxy, а рядом SOCKS5 или HTTP прокси для API-запросов. MTProto proxy обслуживает Telegram-клиентов на телефонах, SOCKS5 — запросы от RouterOS.
Устанавливаем MTProto proxy через Docker на VPS:
apt install -y docker.io
systemctl enable docker && systemctl start docker
SECRET=$(openssl rand -hex 16)
echo "Твой секрет: $SECRET"
docker run -d \
--name mtproto-proxy \
--restart=always \
-p 443:443 \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
После запуска контейнер выведет ссылку для подключения вида tg://proxy?server=…. Сохрани её — она нужна для настройки Telegram-клиентов.
docker logs mtproto-proxy
Проверяем что контейнер запустился и работает:
docker exec mtproto-proxy curl http://localhost:2398/stats
Параметр active_targets должен быть больше нуля. Если ноль — VPS не достигает Telegram-серверов, проверь исходящий трафик на порту 443.
Настройка файрвола на VPS
Прокси без защиты — приглашение для абьюза. Минимальный набор правил UFW:
ufw allow ssh
ufw allow 443/tcp comment "MTProto proxy"
ufw allow from to any port 8443 comment "Nginx TG API proxy"
ufw allow from to any port 1080 comment "SOCKS5 Dante"
ufw --force enable
ufw status
Порт 1080 открыт только для IP твоего роутера. Остальным — отказ. Это не опциональная рекомендация, это обязательный шаг.
Таблица портов
| Порт |
Протокол |
Назначение |
Открыт снаружи |
| 443 |
TCP |
MTProto proxy для клиентов |
Да (все) |
| 8443 |
TCP |
Nginx reverse proxy к TG API |
Только для IP роутера |
| 1080 |
TCP |
Dante SOCKS5 |
Только для IP роутера |
| 2398 |
TCP |
MTProto stats (localhost) |
Нет |
| 22 |
TCP |
SSH управление VPS |
Лучше ограничить по IP |
Проверка работы
После настройки проверяем каждый уровень по цепочке.
Проверка доступности VPS из RouterOS:
/ping address= count=3
Проверка что nginx-прокси отвечает:
/tool fetch url="http://:8443/botТОКЕН/getMe" output=user as-value
В выводе должен быть JSON с данными бота — поле «username» с именем твоего бота.
Ручная отправка тестового сообщения прямо из RouterOS:
/tool fetch url="http://:8443/botТОКЕН/sendMessage\?chat_id=&text=Test+from+RouterOS" keep-result=no
Если сообщение пришло — интеграция работает. Возвращайся в The Dude и нажимай Test в настройках уведомления.
Осложнения
Ошибка: connection timed out при /tool fetch
Причина — api.telegram.org заблокирован или недоступен с IP роутера. Решение — перейди на схему с прокси. Проверь доступность VPS через пинг. Убедись что nginx на VPS запущен и порт 8443 открыт.
systemctl status nginx
netstat -tlnp | grep 8443
Ошибка: bad HTTP message при /tool fetch
Причина — неправильно сформирован URL. Чаще всего забытый знак \? или пробел внутри URL. RouterOS требует URL в одну строку без реальных пробелов. Пробелы заменяй на %20, перенос строки на %0A.
# Неправильно - знак ? без экранирования
url="https://api.telegram.org/.../sendMessage?chat_id=..."
# Правильно
url="https://api.telegram.org/.../sendMessage\?chat_id=..."
Сообщение приходит при Test, но не приходит при реальном событии
Причина — уведомление не привязано к устройству или триггер настроен неправильно. Проверь: двойной клик на устройстве — вкладка Notifications — должен быть «Telegram Alert» в списке с нужным триггером.
Ещё одна причина — The Dude отправляет уведомление, но RouterOS занят и /tool fetch не выполняется моментально. Проверь логи RouterOS:
/log print where topics~"script"
Ошибка: Docker контейнер mtproto-proxy не запускается
Причина — занят порт 443 или нет доступа к Telegram. Проверь:
netstat -tlnp | grep 443
docker logs mtproto-proxy
Если порт занят — останови мешающий сервис или поменяй порт контейнера на нестандартный (-p 8443:443). Если в логах ошибки подключения — VPS не может достичь Telegram-серверов, проблема на уровне хостинга.
Ошибка: nginx возвращает 403
Причина — IP роутера не попал в allow-список. Проверь внешний IP MikroTik:
/ip address print
Если роутер за NAT у провайдера — используй IP провайдерского шлюза или переключись на схему с авторизацией по паролю в Dante.
Уведомления приходят, но с задержкой 5-10 минут
Причина — в настройках уведомления выставлен интервал повторения или Throttle. В The Dude открой Notification — проверь параметры «Repeat interval» и «Throttle». Для срочных алертов ставь Throttle в 0 или минимальное значение.
Альтернативные решения
3proxy вместо Dante
3proxy — более гибкий инструмент, поддерживает HTTP и SOCKS5 одновременно, умеет авторизацию. Вариант если нужна авторизация по логину/паролю вместо ограничения по IP:
apt install -y 3proxy
Базовый конфиг /etc/3proxy/3proxy.cfg:
daemon
log /var/log/3proxy.log
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
auth strong
users admin:CL:
allow admin
proxy -p8080
socks -p1080
WireGuard туннель вместо открытого прокси
Самый надёжный вариант — WireGuard туннель между MikroTik и VPS. Весь трафик к api.telegram.org идёт через туннель, прокси не нужен вообще. Настройка сложнее, зато прокси не торчит в интернет ни на каком порту. Подходит если уже есть WireGuard-инфраструктура.
Email-уведомления как резерв
The Dude поддерживает email-уведомления без всяких прокси — через штатный SMTP. Если Telegram недоступен совсем — email как fallback. Настраивается в Contents — Notifications — тип «Mail.
Профилактика и мониторинг
Отдельная строка в crontab на VPS без комментария убила несколько IT-отделов. Конфиг MTProto proxy обновляется автоматически, но это не значит что за ним не надо следить.
Автоматическое обновление конфигурации MTProxy (добавь в cron на VPS):
0 3 * * * docker pull telegrammessenger/proxy:latest && docker restart mtproto-proxy
Мониторинг доступности прокси из RouterOS — добавь скрипт в Scheduler:
/tool fetch url="http://:8443/botТОКЕН/getMe" keep-result=no
:if ($fetchresult = "error") do={
:log error "TG proxy unavailable"
}
Бэкап конфигурации RouterOS перед изменениями — обязательно:
/system backup save name=before-tg-setup
Проверяй логи VPS раз в неделю. Если в логах Dante или nginx появились попытки подключения с чужих IP — немедленно ужесточи правила файрвола или смени порт.
Обновление MTProto proxy
Telegram периодически меняет конфигурацию серверов. Официальный образ Docker обновляется автоматически при рестарте контейнера. Если прокси перестал работать после обновления — пересоздай контейнер с новым секретом:
docker stop mtproto-proxy
docker rm mtproto-proxy
SECRET=$(openssl rand -hex 16)
docker run -d \
--name mtproto-proxy \
--restart=always \
-p 443:443 \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
docker logs mtproto-proxy
FAQ
Почему уведомления The Dude в Telegram не работают после настройки?
Первым делом проверь три вещи. Один — выполни /tool fetch к api.telegram.org из терминала RouterOS и смотри на результат. Два — убедись что уведомление привязано к устройству на вкладке Notifications в свойствах устройства. Три — нажми Test и посмотри в лог RouterOS (/log print) — там будет ошибка если что-то пошло не так.
Как проверить что The Dude правильно отправляет уведомления в Telegram?
Нажми кнопку Test в настройках уведомления. Если в боте появилось сообщение — работает. Если нет — смотри логи RouterOS через /log print. Проверь токен и Chat ID: открой в браузере https://api.telegram.org/botТОКЕН/getMe — должен вернуть JSON с данными бота.
Что делать если api.telegram.org заблокирован провайдером?
Нужен промежуточный сервер — VPS за пределами блокировок. Подними на нём nginx как reverse proxy к api.telegram.org (порт 8443) и в команде /tool fetch замени api.telegram.org на IP своего VPS. Дополнительно закрой этот порт на файрволе для всех кроме IP своего роутера.
Чем MTProto proxy отличается от SOCKS5 для уведомлений The Dude?
MTProto proxy работает на уровне Telegram-клиентов и предназначен для использования в Telegram-приложении на телефоне. RouterOS и /tool fetch работают с HTTP API Telegram, который требует обычного HTTP или SOCKS5 прокси. Для уведомлений из The Dude нужен SOCKS5 или HTTP reverse proxy, а MTProto proxy используют параллельно — для телефонов сотрудников или для клиентов которым нужен доступ к Telegram.
Можно ли использовать публичные MTProto прокси для уведомлений The Dude?
Нет. Публичные MTProto прокси предназначены для Telegram-клиентов, не для HTTP API. Кроме того, они ненадёжны — регулярно умирают, меняют адреса, и ты не контролируешь их доступность. Для production-мониторинга нужен только свой VPS с контролируемым прокси.
Итог
Уведомления настроены. Теперь когда узел падает — Telegram сообщает об этом раньше пользователей. Если провайдер режет Telegram — прокси на VPS решает проблему раз и навсегда.
Вся схема: BotFather — токен и Chat ID — уведомление в The Dude типа «Execute on server» — команда /tool fetch — и опционально nginx или Dante на VPS если api.telegram.org недоступен напрямую.
Не заработало?
Пиши в комментарии — разберёмся. Опиши версию RouterOS, что пишет /log print и что выдаёт /tool fetch при ручном запуске. Это закрывает 90% проблем за пять минут.