Do localhost a Internet
Tags: programming, localhost, internet, tunel
Published: 2021-11-03 13:55:49

Neste artigo iremos falar um pouco sobre o famoso ngrok, o túnel de conexão. Para poucos que conhece, de bônus iremos demostrar duas implementações, uma usado o nosso querido Docker e outro implementando direto na sua maquina.

![Ngrok](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k12oaj0h5fbbv4hsq87t.png)

## O que é Ngrok?

Como eu transcrevi acima, o ngrok é um túnel de conexão, de acordo com a [Digital Innovation One](https://digitalinnovation.one/artigos/baixando-e-instalando-o-apache-ngrok-no-linux) "O Ngrok é um programa de linha de comando que permite criar um túnel de conexão segura a partir do seu localhost e publicá-lo na internet, o mesmo é multiplataforma, podendo ser usado no Windows, Linux e Mac OS X."

Entretanto, ele quis dizer que basicamente ele gera um URL publica acessível, utilizando como base o seu localhost, logo, com ele você não irá precisar subir sua aplicação em servidor/hospedagem para poder apresentar no seu trabalho, mostrar seus colegas, seu professor, etc. Ele irá facilitar sua vida, deixando de modo simples, lembrando que o ngrok é recomendado apenas para Desenvolvimento e não para colocar sua aplicação em produção.

![Ngrok na pratica](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a567tg0i2kiotm5116ws.png)

### Implementação local

Estaremos usando o windows neste exemplo, agora vamos baixar o ngrok, siga os passos abaixo.

* Para nós conseguirmos baixar o Ngrok é necessário acessar o site [https://ngrok.com/download](https://ngrok.com/download)

* Após baixar o Ngrok basta ir à pasta Downloads e executa o aplicativo do Ngrok

* Por fim vamos iniciar o serviço do Ngrok digitando este comando abaixo. 
     ```ngrok http 8000```


### Implementação usando o Docker

Neste exemplo, vamos criar apenas o serviço do ngrok, pois, na nossa compreensão você já tem o serviço da sua aplicação criado, no nosso exemplo, a nomenclatura do serviço da aplicação se chamará "app".

![Ngrok usando docker](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxqsfo0pbvx6breeesg0.png)

Nele passamos o nosso, app, a porta que ele vai servir e algumas variáveis de ambiente. Como: 

* DOMAIN = O nome do container da sua aplicação
* PORT = A porta que o container da sua aplicação está sendo executado

Existem outras variáveis, irei citar algumas para você:

* PROTOCOL = Protocolo de tunelamento Ngrok, recebe os valores (http, tls e tcp)

* REGION = Região onde o cliente ngrok se conectará para hospedar seus túneis, recebe os valores (us, eu, ap, au, sa, jp e em)

* HOST_HEADER = Opcional, reescreva as solicitações de HTTP de entrada com um cabeçalho de Host modificado. por exemplo 
<b>HOST_HEADER=localdev.test</b>

* BIND_TLS = Opcional, encaminhe apenas o tráfego HTTP ou HTTPS, mas não ambos. Por padrão, quando o ngrok executa um túnel HTTP, ele abre pontos de extremidade para o tráfego HTTP e HTTPS.

* DEBUG = Opcional, grave logs em stdout.

* PARAMS = Passe todos os parâmetros ngrok por uma string. Quando especificado, qualquer outra variável env é ignorada.

Este foi o <b>diário de bordo #07</b> vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

<p align="center">
  <a href="#">
    <img src="https://cdn.dribbble.com/users/1889486/screenshots/5081642/thankyou_.gif" width="500">
  </a>
</p>

<b>Este artigo foi útil para você?</b> 
<b>Deixe um comentário abaixo.</b>

## Referências 

* [BAIXANDO E INSTALANDO O APACHE + NGROK NO LINUX](https://digitalinnovation.one/artigos/baixando-e-instalando-o-apache-ngrok-no-linux)

* [GitHub: Shkoliar/docker-ngrok](https://github.com/shkoliar/docker-ngrok)

* [Ngrok: Documentação](https://ngrok.com/docs)