Как поделиться своим локальным веб-сервером с Интернетом. Ngrok

Довольно часто у разработчика возникает необходимость показать свои наработки, расположенные на локальном компьютере. Если же приходится тестировать мобильные приложения, то доступ к API также нужен.

Конечно, можно купить ip-адрес, домен, хостинг, настроить всё это. Но проще, быстрее и доступнее использовать утилиту ngrok, создающую туннель к localhost.

Скачать ngrok можно по адресу: https://ngrok.com/

Программа доступна для Mac OS, Windows, Linux и FreBSD. В ограниченном режиме можно использовать бесплатно, которого, к слову сказать, хватает с лихвой в большинстве случаев.

Для начала нужно установить программу.

Установка Ngrok

Mac OS X 64-Bit:

$ cd /usr/local/src && wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-darwin-amd64.zip

Linux 64-Bit:

$ cd /usr/local/src
$ sudo wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

Linux 32-bit:

$ sudo wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-386.zip

FreeBSD 64-Bit:

$ cd /usr/local/src && wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-freebsd-amd64.zip

FreeBSD 32-Bit:

$ cd /usr/local/src && wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-freebsd-386.zip

Например, для Xubuntu:

Установка Ngrok

Если выдаёт ошибку, проверьте права на запись файлов в указанной директории.

Далее необходимо распаковать архив. В нашем случае с Xubuntu:

$ sudo unzip ngrok-stable-linux-amd64.zip

Распаковка архива Ngrok в Xubuntu

Или сделать распаковку в окне:

Распаковка архива Ngrok в Xubuntu

Теперь перемещаем утилиту:

$ sudo mv ngrok /usr/local/bin

Затем даём права на запуск скрипта:

$ sudo sudo chmod +x /usr/local/bin/ngrok

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

$ ./ngrok help

Создание туннеля в простейшем варианте (обратите внимание на порт, обычно он 80, у мена 8000):

$ ngrok http 8000

Получаем:

Создание туннеля в простейшем варианте. Ngrok

Где http://370f2cc5.ngrok.io уникальный адрес в Интернет.

Можно в hosts файл прописать домен, например, mysite.local, после чего запустить туннель:

$ ngrok http -host-header=rewrite mysite.local:80

Если зарегистрироваться, то:

  • будет доступ через SSL
    $ curl https://myapp.ngrok.com
  • появится возможность защиты туннеля паролем
    $ ngrok -httpauth "user:password" 80
  • станет доступен выбор поддоменов с резервированием
    $ ngrok -subdomain myapp 80
  • будет возможно туннелирование TCP и UDP
    $ ngrok -proto tcp 8080

СВами