Запуск и настройка ngrok

Morwenns

Member
Joined
Jan 6, 2020
Messages
115
Reaction score
55
Ngrok — это платформа, которая с помощью установленной утилиты, позволяет, организовать удалённый доступ на веб-сервер или какой-то другой сервис, запущенный ПК. Доступ организуется через созданный при запуске ngrok безопасный туннель. ПК, при этом, может находиться за NAT’ом, и не иметь статического IP адреса.

Совсем не обязательно тащить тестовый проект куда-то ещё, можно показать его заказчику прямо с локальной машины, или, например, с помощью Ngrok можно очень легко расшарить файлы лежащие на ПК.

Для начала, нам потребуется веб-сервер, запущенный на компьютере (конечно же, его нужно настроить при необходимости):
Code:
# dnf install nginx
# systemctl start nginx

И непосредственно сам Ngrok. Его можно запускать от обычного пользователя, и со включенным selinux:
Code:
$ mkdir ngrok
$ cd ngrok/
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
$ ./ngrok http 80

ngrok.png

ngrok


Сразу после запуска, можно увидеть, что сервис создал временный поддомен вида abcde123.ngrok.io для организации доступа на ПК, а локально по адресу 127.0.0.1:4040, была запущена панель, в которой отображаются данные по удалённым подключениям к туннелю. Пробуем открыть домен abcde123.ngrok.io из любого места, и получаем доступ к настроенной на веб-сервере директории.

ngrok2.png


При необходимости, мы можем указать регион, в котором будет запущен прокси:
Code:
$ ./ngrok http -region=eu 80
Или защитить запущенный туннель паролем для доступа:
Code:
$ ./ngrok http -auth="user:pa55w0rd" 80

В случае появления ошибки вида:
Code:
The connection to was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:80.

Стоит проверить, запущен ли веб-сервер локально, и работает ли он на 80 порте.

Полезно знать об Ngrok.
Авторизуемся. Если вы планируете использовать сервер часто, имеет смысл зарегистрироваться на ngrok.com, забрать со страницы настроек авторизации токен, и добавить его в локальный клиент с помощью команды:

Code:
$ ./ngrok authtoken 5vEpKbBvnjSrMqZIkYJLb_2sbNRQbxZm0PSo23X6QpQ
Токен будет записан в файл ~/.ngrok2/ngrok.yml и теперь, клиент при работе с сервисом будет авторизовываться на нём. Это позволит получить доступ к бесплатному тарифу, но с лимитами бОльшими, чем доступны не авторизованному пользователю. На платных тарифах имеются дополнительные возможности, делающие работу с сервисом удобной (резерв поддоменов, например), но в рамках данной заметки я рассматриваю только то, что пользователь может использовать без оплаты.

Проксируем на другие ПК в локальной сети. Совсем не обязательно держать веб-сервер на той же машине, где запускается Ngrok. Если сервис в локальной сети работает на отдельной машине, мы можем проксировать трафик туда:

Code:
$ ./ngrok http 192.168.1.25:8080

Работаем не только с веб-сервером. На самом деле мы можем настроить удалённый доступ к любому tcp сервису, запущенному на ПК. Например, если мы хотим получить доступ по SSH, то можем сделать вот так:
Code:
./ngrok tcp 22

При этом, от сервиса мы получим адрес вида tcp://0.tcp.ngrok.io:18211 -> localhost:22, и для доступа на ПК нам останется просто соединиться по SSH на хостнейм 0.tcp.ngrok.io и порт 18211. Любители поднимать игровые серверы могут поступать аналогично. Просто запускаете проксирование на нужный tcp порт, даёте координаты друзьям и приступаете к игре.

Заглядываем в документацию. Описанное в заметке — далеко не все возможности, так что всем заинтересовавшимся я настоятельно рекомендую заглянуть в документацию, где в очень доступной форме, с примерами команд, приведено описание всех возможностей данного сервиса и утилиты.
 
Joined
Jun 12, 2007
Messages
6
Reaction score
0
Just wanted to chime in, ngrok is super easy to set up once you get the hang of it. Make sure you're using the latest version and configure your tunnel settings correctly for the best results.
 

dkobzev

New member
Joined
Feb 18, 2007
Messages
2
Reaction score
0
What's up guys, I just wanna chime in on this. I've used ngrok for exposing my local dev environment to the public and it's super easy to set up, just follow the defaults. If you're running into issues, make sure your firewall isn't blocking the ngrok process.
 

satab

New member
Joined
Apr 16, 2016
Messages
4
Reaction score
0
"Hey, just had to mention that ngrok is super easy to set up if you're using a Linux distro, but I've also had success with the Windows executable. Just download, run, and select the protocol you want to expose (HTTP, SSH, etc.) and you're good to go. Has anyone had issues with ngrok and reverse proxies?"
 

adwayk

Member
Joined
Oct 6, 2008
Messages
6
Reaction score
0
"Hey guys, for those who don't read russian, I think the OP just asked about setting up ngrok. If you're new to it, the docs have a pretty straightforward guide. I had some issues with it last week, but a simple reboot solved the problem."
 
Top