
Тестирование веб-хуков, интеграций или локальных приложений часто требует доступа к проекту из внешней сети. Настройка порт-форвардинга на роутере или использование публичного хостинга занимает время, а в некоторых сетях полностью недоступно. Ngrok решает этот вопрос за счёт туннеля, который соединяет локальный сервер с публичным URL.
После установки инструмента пользователь получает возможность запускать команды ngrok http или ngrok tcp, назначая порт, который должен быть открыт извне. Сервис автоматически выдаёт временный адрес, доступный через интернет. Это подходит для Node.js, Django, Laravel, Telegram Bot API, локальных CMS и мобильных приложений, требующих обратных запросов.
Перед запуском туннеля важно привязать аккаунт через ngrok authtoken, иначе доступ будет ограничен. Дополнительно можно настроить постоянный поддомен, HTTPS-доступ и параметры ограничений трафика. Для тестирования запросов Ngrok предоставляет локальную панель по адресу http://localhost:4040, где фиксируются все входящие обращения, включая заголовки, тело запроса и статус ответа.
Ngrok: как открыть порт и пробросить локальный сервер

Перед пробросом порта требуется убедиться, что локальный сервер запущен и прослушивает нужный порт. Например, если приложение работает на localhost:3000, этот порт и будет передаваться в Ngrok.
- Открыть терминал.
- Выполнить команду ngrok authtoken <токен>, если это не сделано ранее.
- Запустить туннель: ngrok http 3000 или ngrok tcp 3000 при работе с нестандартными протоколами.
После запуска инструмент выдаёт публичные URL. HTTP-туннель создаёт обычный HTTP/HTTPS-доступ, TCP – прямое подключение через внешний порт.
- http://localhost:4040 – локальный интерфейс для просмотра запросов.
- Адреса вида https://xxxxx.ngrok.io – для передачи клиентам или сервисам.
- TCP-туннель возвращает строку подключения формата tcp://0.tcp.ngrok.io:xxxxx.
Если требуется постоянный домен, создаётся конфигурационный файл ngrok.yml со строками:
tunnels:
app:
addr: 3000
proto: http
hostname: example.ngrok.io
После сохранения файл позволяет запускать туннель командой ngrok start app без повторного указания параметров.
Установка Ngrok и подготовка токена авторизации

Установка начинается с загрузки последней версии Ngrok с официального сайта под нужную операционную систему. После распаковки файл ngrok размещается в директорию, указанную в переменной окружения PATH, чтобы запуск был возможен из любого терминала.
Для Linux и macOS устанавливается разрешение на выполнение:
chmod +x ngrok
На Windows файл можно оставить в удобной папке или добавить путь в системную переменную.
Дальнейшая настройка требует авторизации. После регистрации в личном кабинете доступен уникальный Authtoken. Команда привязки к аккаунту выглядит так:
ngrok authtoken <ваш_токен>
Если требуется хранение конфигурации отдельно, создаётся файл ngrok.yml в домашней директории со строкой:
authtoken: <ваш_токен>
После выполнения этих шагов инструмент готов к созданию туннелей и пробросу локальных подключений.
Создание туннеля для HTTP-приложения через ngrok http

Перед запуском туннеля требуется убедиться, что приложение работает локально, например на http://localhost:3000. Ngrok подключается к этому порту и создаёт публичный доступ без изменения настроек сервера.
Базовая команда запуска:
ngrok http 3000
В терминале отображаются два URL: один с HTTP, другой с HTTPS. HTTPS-адрес подходит для сервисов, которым требуется безопасное соединение, включая GitHub Webhooks, Telegram Bot API или платёжные шлюзы.
Если требуется указать схему и точный адрес, используется расширенный синтаксис:
ngrok http http://localhost:3000
Дополнительные параметры позволяют управлять соединением. Например:
ngrok http 3000 --host-header=rewrite
Опция —host-header полезна при работе с обратным прокси или фреймворками, которые проверяют соответствие заголовка Host.
После запуска доступна панель мониторинга по адресу http://localhost:4040. Здесь отображаются запросы, заголовки, тело данных и ответы сервера. Это упрощает отладку API и вебхуков без сторонних инструментов.
Проброс нестандартного порта и запуск ngrok tcp
TCP-режим используется в ситуациях, когда приложение не работает по HTTP и требует прямого подключения. К таким случаям относятся базы данных, игровые сервера, SSH и собственные протоколы. Перед запуском требуется убедиться, что процесс прослушивает указанный порт, например localhost:25565.
Команда запуска туннеля выглядит так:
ngrok tcp 25565
После выполнения появляется строка подключения формата:
tcp://0.tcp.ngrok.io:XXXXX
Этот адрес передаётся клиентам вместо локального IP. Внешний порт отличается от исходного, но доступ будет направлен на локальный 25565.
Для удобства можно использовать таблицу сопоставлений:
| Тип приложения | Локальный порт | Команда запуска |
|---|---|---|
| SSH | 22 | ngrok tcp 22 |
| PostgreSQL | 5432 | ngrok tcp 5432 |
| Minecraft Server | 25565 | ngrok tcp 25565 |
Если приложение использует авторизацию или шифрование, рекомендуется оставить эти механизмы включёнными. Ngrok не шифрует TCP-трафик, поэтому безопасность зависит от конфигурации сервера.
Настройка постоянного домена и конфигурационного файла ngrok.yml

Временные адреса меняются после каждого запуска, поэтому удобнее использовать закреплённый домен. Он подключается через личный кабинет Ngrok в разделе Reserved Domains. После выбора имени система предоставит строку, которую требуется добавить в конфигурационный файл.
Файл ngrok.yml размещается в домашней директории. Если он отсутствует, его можно создать вручную. Минимальный пример для HTTP-туннеля:
authtoken: <ваш_токен>
tunnels:
app:
proto: http
addr: 3000
hostname: myapp.ngrok.io
Для TCP-подключения структура изменяется:
tunnels:
db:
proto: tcp
addr: 5432
hostname: db-access.ngrok.io
После сохранения конфигурации запуск осуществляется командой:
ngrok start app
Если в файле описано несколько туннелей, запуск возможен как выборочно, так и единым набором:
ngrok start --all
- hostname определяет публичный домен.
- proto выбирается исходя из типа подключения: http или tcp.
- addr устанавливает локальный порт.
При изменениях в конфигурации требуется перезапустить Ngrok, иначе параметры не применятся.
Ограничения, лимиты и параметры запуска туннеля

Ngrok накладывает ограничения на бесплатный тариф: один активный туннель, временные URL и лимит одновременных подключений. Платные аккаунты позволяют создавать несколько туннелей, закреплённые домены и увеличенное число соединений.
Основные параметры запуска:
- —region – выбор сервера по географии, например us, eu, ap. Используется для уменьшения задержки.
- —log – путь к файлу для записи логов. Формат: ngrok.log.
- —config – использование альтернативного конфигурационного файла, если требуется несколько настроек.
- —subdomain – временная настройка поддомена на бесплатном тарифе (не все тарифы поддерживают).
- —inspect – включает или отключает веб-интерфейс для просмотра запросов на localhost:4040.
Лимиты TCP-туннелей зависят от тарифного плана. Бесплатная версия предоставляет один туннель с динамическим портом, платная – до 100 и возможность закрепления внешнего порта.
Для стабилизации соединения рекомендуется использовать платные тарифы с закреплёнными доменами и лимитами по количеству соединений. При превышении лимита новые подключения будут отклоняться до освобождения ресурсов.
Проверка доступа к локальному серверу и диагностика ошибок

После запуска туннеля необходимо убедиться, что локальный сервер доступен через публичный URL. Для HTTP-туннелей достаточно открыть https://xxxxxx.ngrok.io в браузере или выполнить curl запрос:
curl -I https://xxxxxx.ngrok.io
Если сервер отвечает корректно, возвращается статус 200 OK или другой код, соответствующий работе приложения.
Для TCP-подключений проверка выполняется через клиент, который использует адрес формата tcp://0.tcp.ngrok.io:XXXXX. Например, для SSH:
ssh user@0.tcp.ngrok.io -p XXXXX
Если соединение не устанавливается, следует проверить:
- Запущен ли локальный сервис на указанном порту.
- Нет ли блокировки firewall или антивирусом.
- Правильность привязки Authtoken и конфигурации ngrok.yml.
- Совпадение протокола туннеля и приложения (HTTP vs TCP).
Для анализа входящих запросов и ошибок используется локальная панель http://localhost:4040, где отображаются все обращения, заголовки, тело запроса и ответы сервера. Это позволяет выявить неправильные маршруты, ошибки аутентификации или несовпадение заголовков Host.
Вопрос-ответ:
Как установить Ngrok и привязать токен авторизации?
Скачайте последнюю версию Ngrok с официального сайта под вашу ОС и распакуйте архив. На Linux и macOS установите разрешение на выполнение через chmod +x ngrok, на Windows разместите файл в удобной папке и добавьте путь в системную переменную. Авторизация выполняется командой ngrok authtoken <ваш_токен>, которую можно найти в личном кабинете Ngrok.
Как пробросить локальный HTTP-сервер через Ngrok?
Убедитесь, что сервер запущен на локальном порту, например 3000. В терминале выполните команду ngrok http 3000. Ngrok создаст публичные URL для HTTP и HTTPS. Для приложений, проверяющих заголовок Host, используйте опцию —host-header=rewrite. Для анализа запросов доступна панель http://localhost:4040, где фиксируются заголовки, тело запроса и ответы сервера.
Можно ли пробросить нестандартные порты или TCP-приложения?
Да, для TCP-приложений используется команда ngrok tcp <порт>. Например, для базы данных PostgreSQL на порту 5432: ngrok tcp 5432. После запуска Ngrok выдаёт адрес вида tcp://0.tcp.ngrok.io:XXXXX, который используют клиенты. Важно убедиться, что локальный сервис прослушивает порт и firewall не блокирует подключения.
