Главная >> Инструкции >> Как пользоваться Ngrok

Как пользоваться Ngrok

Ngrok - это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена. Достаточно только зарегистрироваться на сайте сервиса, установить программу на компьютер и запустить команду создания туннеля.

Конечно, такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно. В этой статье мы рассмотрим как пользоваться Ngrok, а также как установить Ngrok в Ubuntu.


Содержание статьи

Установка Ngrok в Linux

Если вы пользуетесь Ubuntu или другим дистрибутивом, в котором установлен менеджер пакетов snap, вы можете использовать его для установки Ngrok. Просто выполните команду:

snap install ngrok

Кроме того, в Ubuntu и других дистрибутивах, основанных на Debian можно установить пакет из репозиториев разработчиков. Для этого сначала добавьте ключ в систему:

curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null

Затем добавьте сам репозиторий:

echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list

Обновите список пакетов для того чтобы получить данные из только что добавленного репозитория:

sudo apt update

И установите Ngrok:

sudo apt install ngrok

Для любого другого дистрибутива необходимо скачать бинарные файлы из официального сайта. Откройте эту страницу, выберите Linux и нажмите кнопку Download.

Загруженный архив необходимо распаковать. Там находится только исполняемый файл Ngrok, поэтому его можно сразу же поместить в каталог /usr/local/bin используя такую команду:

sudo tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin

Для того чтобы убедится что программа установлена успешно, вы можете посмотреть её версию:

ngrok -v

Синтаксис и опции Ngrok

Давайте сначала рассмотрим синтаксис и опции утилиты командной строки, которая будет использоваться для управления программой. Синтаксис довольно простой:

$ ngrok команда опции

Вот основные команды, которые вы можете использовать:

  • completion - сгенерировать скрипт автодополнения для bash или zsh;
  • config add-authtoken - сохранить токен аутентификации в конфигурационный файл;
  • config check - проверить конфигурационный файл на ошибки;
  • config edit - редактировать конфигурационный файл;
  • http - создание HTTP туннеля;
  • tcp - создание TCP туннеля;
  • start - запуск туннелей, настроенных в конфигурационном файле;
  • service install - установить конфигурационные файлы сервисов в систему;
  • service start - запустить сервис;
  • service stop - остановить сервис;
  • update - обновить утилиту до последней версии;
  • version - показать версию утилиты.

У большинства команд есть свои опции и мы рассмотрим их в разделе о том как пользоваться Ngrok.

Как пользоваться Ngrok

1. Регистрация аккаунта

Сервис имеет бесплатную версию для не коммерческого использования. Она поддерживает всё необходимое для того чтобы сделать локальный порт доступным из интернета. Для того чтобы зарегистрировать аккаунт откройте официальный сайт и нажмите кнопку Sign Up. На этой странице надо указать ваше имя, адрес электронной почты и пароль:

После регистрации вам придёт письмо с подтверждением на почту, необходимо перейти по ссылке из письма. После входа в аккаунт откроется панель управления где можно скачать клиент, если вы не сделали это ранее или посмотреть команды для его настройки:

2. Подключение аккаунта

Для того чтобы установленный клиент заработал необходимо указать ключ авторизации. Этот ключ можно найти внизу страницы Setup & Installation в вашем профиле:

Достаточно выполнить команду, которая там написана:

ngrok config add-authtoken XXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXX

После этого всё готово к использованию. Этот же ключ вы можете посмотреть на вкладке Your Authtoken:

3. Создание туннеля

Для того чтобы сделать доступным локальный HTTP порт извне необходимо использовать команду http. Просто укажите порт в качестве параметра, например для порта 80:

ngrok http 80

После успешного запуска туннеля в терминале будет отображена информация о его состоянии. В поле Forwarding можно найти URL, по которому можно получить доступ к этому сервису. При первом заходе Ngrok покажет предупреждение, что этот сайт доступен через Ngrok. Тут необходимо нажать Visit Site:

После этого станет доступно и само содержимое сайта:

Если вы не хотите чтобы кто-то посторонний смог получить доступ к этому ресурсу, можно добавить HTTP авторизацию. Для этого используйте опцию --basic-auth:

ngrok http --basic-auth="пользователь:пароль" 80

После этого для доступа к сайту необходимо будет ввести пароль. Если для вашего локального сайта необходимо указать Host, то это можно сделать с помощью опции --host-header. Например, для замены домена на example.local используйте такую команду:

ngrok http --host-header="example.local" 80

По умолчанию сервис будет доступен извне по HTTPS. Если вы хотите чтобы он был доступен только по HTTP используйте опцию --scheme. Например:

ngrok http --scheme="http" 80

Если вы хотите сделать доступным порт на другой машине, укажите её IP адрес вместе с портом. Например, для 192.168.1.143:

ngrok http 192.168.1.143:80

4. Веб-интерфейс Ngrok

После того как клиент Ngrok был запущен, вы можете открыть веб интерфейс, который доступен по адресу http://127.0.0.1:4040. Здесь доступна история запросов, в которой можно увидеть какие данные пришли и что было отправлено в ответ:

Здесь есть как заголовки так и тело запроса и ответа. С помощью кнопки Replay можно переотправить запрос. Также можно модифицировать его перед отправкой. Для этого выберите Replay with Modifications:

В открывшемся модальном окне можно изменить метод, путь, передаваемые заголовки, добавлять новые заголовки и менять тело запроса.

5. Настройка туннелей в конфигурационном файле

Ngrok имеет конфигурационный файл, в который сохраняется токен авторизации. Если вы не хотите каждый раз писать длинную команду запуска туннеля, вы можете описать его в конфигурационном файле, а потом запускать по имени. Ngrok хранит конфигурацию в формате Yaml в домашней папке в папке .config. Но не нужно редактировать файл напрямую. Для редактирования существует команда config edit:

ngrok config edit

Для описания туннелей необходимо добавить в конфигурационный файл секцию tunnels. Синтаксис описания туннеля такой:

tunnels:
  имя_туннеля:
    proto: протокол
    addr: порт

Здесь также доступны и другие параметры, которые раньше передавались в командной строке:

  • basic_auth - добавить HTTP авторизацию;
  • host_header - заменить значение заголовка Host;
  • inspect - нужно ли сохранять запросы для инспектирования, по умолчанию включено;
  • schemes - доступные схемы: http и/или https;
  • hostname - указать своё доменное имя для сервиса, доступно только в платной подписке.

Например, для того чтобы создать туннель example для порта 80, с заменой заголовка Host на example.local добавьте в секцию tunnels такие строки:

  example:
    proto: http
    addr: 80
    host_header: "example.local"

Сохраните изменения и проверьте конфигурационный файл такой командой:

ngrok config check

Если всё хорошо и в конфигурационном файле нет ошибок команда выведет такое сообщение:

После этого вы можете запустить настроенный туннель по его имени:

ngrok start example

На этом настройка Ngrok завершена.

Выводы

Теперь вы знаете как пользоваться Ngrok для создания туннелей и проброса локального порта в интернет. В бесплатной версии этот сервис может использоваться только для не длительного проброса локальных сервисов. Например, для разработки или для того чтобы показать как выглядит локальный сайт кому-то. По умолчанию при каждом подключении выдается динамический домен, который каждый раз меняется. Для того чтобы задать свой домен, а также запустить Ngrok в фоне в качестве systemd сервиса необходимо покупать подписку. Какими сервисами пользуетесь вы для того чтобы сделать локальные службы доступными из интернета? Напишите в комментариях!

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

4 комментария к “Как пользоваться Ngrok”

  1. Осталось настроить периодическую отправку доменного имени на электронную почту, чтобы оно всегда было известно, и получаем постоянный бесплатный доступ откуда угодно и куда угодно.

    Ответить
  2. Профан в этой теме и возможно мой вопрос будет глупым но всё же. Я правильно понял что если я запускаю локально у себя приложение на nodejs допустим на localhost:8000, то что бы вывести его в публичную сеть мне нужно указать 8000 порт и в целом это всё?

    Ответить

Оставьте комментарий