• Как показать себя и свои наработки

    grok

    За что мы боремся?

    В жизни разработчика регулярно возникает необходимость показать результаты работы кому-либо еще — коллеге, заказчику, тестировщику. Всё довольно просто, если вы сидите в одной комнате или, хотя бы, здании: можно пригласить его к своему столу (скорее всего придется пообещать кофе или печеньки) и показать лично на собственном мониторе. Всё сложнее, если вы находитесь в разных районах, городах или даже странах. А иногда вам может пригодиться доступный из интернета API, развернутый локально — например, если вы разрабатываете или тестируете мобильные приложения.

    Путей решения проблемы много. Одним из них является покупка белого внешнего ip-адреса, проброска портов, покупка доменного имени и его настройка. Решение полноценное, но не всегда доступное — не у всех провайдеров можно получить белый адрес, не все готовы разрешить вам использовать необходимые порты. Я уж молчу о том, что вы оказываетесь привязаны к выбранному провайдеру и не можете использовать это решение, сидя в кафе с рабочим ноутбуком по широкополосному соединению. Еще можно арендовать сервер у какого-нибудь хостера и всё, что требуется показать, сперва деплоить туда. Тут, понятно, возникают другие проблемы: ограничение производительности этого сервера, лишний элемент инфраструктуры, требующий поддержки. Да и постоянный деплой изменений, которые вы просто хотите показать, но, возможно, не готовы даже на коммит?

    На помощь спешит ngrok

    Ngrok — это сервис, позволяющий прокинуть порт локального компьютера на сервера ngrok. Любой желающий сможет получить доступ к вашему локальному приложению по глобально доступному субдомену сервиса .ngrok.io.

    Установка

    wget https://dl.ngrok.com/ngrok_2.0.19_linux_amd64.zip
    unzip ngrok_2.0.19_linux_amd64.zip
    mv ngrok /usr/local/bin
    sudo chmod +x /usr/local/bin/ngrok

    Использование

    В простейшем варианте достаточно:

    ngrok http 80

    Вы увидите монитор вашего туннеля:

    Tunnel Status	online                   
    Version			2.0.19/2.0.19                  
    Web Interface	http://127.0.0.1:4040                 
    Forwarding		http://8d323578.ngrok.io -> localhost:80     
    Forwarding		https://8d323578.ngrok.io -> localhost:80      

    Откроем наш уникальный адрес в браузере. В мониторе появится информация о нашем запросе:

    HTTP Requests                           
    -------------                                     
    GET /favicon.ico		200 OK     
    GET /css/all.css		200 OK   
    GET /js/index.js		200 OK               
    GET /images/loader.gif	200 OK         
    GET /					200 OK

    Приятной фишкой является возможность поднять basic auth, указав один лишний ключ:

    ngrok http -auth="login:password" 80 

    Узнать о других возможностях сервиса можно так:

    ngrok help