Итак, представим ситуацию: у вас локально запущен web-сервер с неким приложением. Вам нужно срочно сделать так, чтобы к этому приложению можно было получить доступ из Интернета. У вас нет времени на настройку хостинга (ну, или нет желания/возможности за него платить). Что делать? На самом деле, решить эту проблему можно очень легко, потратив буквально одну минуту. Нас выручит такое решение, как ngrok.
Установка ngrok
В первую очередь, идём на официальный сайт ngrok и следуем инструкциям по установке на вашу ОС. К примеру, на Mac можно запустить команду:
brew install ngrok/ngrok/ngrok
На Windows используйте Chocolatey:
choco install ngrok
В принципе, это всё, ngrok готов к работе!
Получение токена
Теперь нам потребуется специальный токен ngrok, который можно получить в личном кабинете. Для этого зарегистрируйтесь на сайте и перейдите во вкладку Your authtoken. Здесь просто скопируйте содержимое из поля Your Authtoken, после чего в терминале запустите команду:
ngrok config add-authtoken YOUR_TOKEN_HERE
Регистрация на сервисе совершенно бесплатна, но учтите, что тариф Free имеет ряд ограничений. В частности, внешний домен будет иметь постфикс ngrok-free.app
, а количество запросов HTTP в месяц не может превышать 20 000.
Запуск ngrok
Удостоверьтесь, что ваше web-приложение запущено локально, после чего в отдельной вкладке терминала выполните команду:
ngrok http PORT
PORT
— это номер порта, на котором работает ваше приложение.
После запуска этой команды вы увидите информацию в духе:
Forwarding https://2f71-85-254-75-227.ngrok-free.app -> http://localhost:3000
https://2f71-85-254-75-227.ngrok-free.app
— это адрес вашего приложения в Интернете!
Настройки безопасности
Учтите, что некоторые веб-фреймворки (например, Rails) могут по умолчанию блокировать доступы через Ngrok. Чтобы решить эту проблему, вам потребуется разрешить обращение через Ngrok. Конкретный порядок действий зависит от вашего фреймворка. К примеру, на Rails можно в конфигурацию добавить:
Rails.application.config.hosts << /.*\.ngrok-free\.app/i
После этого не забудьте перезапустить сервис.