Ngrok – Vá além do localhost

Quem desenvolve para a web sabe que, durante o desenvolvimento, é comum usar um servidor HTTP local para poder testar os sites e aplicações web desenvolvidos. Sabe também que, por ser um servidor local, outras pessoas não tem acesso ao que você desenvolve localmente, e isso pode ser um problema caso você queira que outra pessoa teste rapidamente o que você desenvolveu ou queira apenas mostrar uma funcionalidade nova a um amigo.

Claro, em um setup adequado, o ambiente de produção na verdade seria dividido em três ambientes:

  • Dev – Possuindo o código da branch mais recentemente atualizada;
  • QA – Possuindo o código da branch que já possui um certo nível de estabilidade e está quase pronto para ser lançado;
  • Produção – Possuindo o código mais estável e que está realmente em produção;

E , com um setup assim, bastaria fazer o deploy para o ambiente de dev e tudo certo, tudo ok. O problema é que mesmo um deploy as vezes pode ser lento demais, logo, a melhor opção seria mostrar o que está mesmo rodando em sua máquina. Mas, e se a pessoa eLogo do Ngrokstiver longe? ¯_(ツ)_/¯

É por isso que hoje vou falar sobre o Ngrok, um programa de fácil uso, que não exige cadastro, e que permite criar o que é conhecido por túneis, entre a internet e o seu computador.

Mas, o que é um túnel?

Simples, jovem gafanhoto, um túnel é um simples proxy, ou redirecionamento, de um outro computador para o seu. Vou te dar um exemplo: Imagine que você, na máquina A, tem um servidor escutando na porta 8080. Se você criar um túnel reverso para a máquina B na porta 9090, será possível que alguém, na máquina B, ao acessar http://127.0.0.1:9090 no navegador, veja o que na verdade está na sua máquina, e não na máquina B, pois todos os dados que foram para tal porta na verdade foram redirecionados para o seu computador e atendidos pelo seu servidor escutando na porta 8080.

E é isso que o ngrok faz? CONEXÃO ENTRE DUAS MÁQUINAS?

hmmm…Mais ou menos. O que o Ngrok faz, em termos exatos, é criar um túnel de algum servidor executando na sua máquina para os servidores do Ngrok. Assim, se você tem algum serviço escutando na porta 8080, e executa o Ngrok para criar um túnel para a porta 8080 do seu computador, o Ngrok te fornecerá um endereço no estilo http://<hash>.ngrok.io que, ao ser acessado, implicará em acesso ao servidor rodando na sua máquina.

O detalhe que fez o Ngrok ser o assunto de hoje é que, mesmo sendo de uso simples, o Ngrok possui algumas características bem interessantes que chamam a atenção:

  • Inspetor de requisições: Você consegue literalmente ver o que o usuário do outro lado está acessando na sua máquina, incluindo cabeçalhos de requisição e resposta;
  • Replay de requisições: Se alguma requisição causou alguma exceção na sua aplicação, é possível dar replay nela, de forma que o mesmo conteúdo seja enviado novamente ao seu servidor para verificar se o problema foi corrigido;
  • Proteção com usuário e senha: Por ser público, a URL do Ngrok pode ser acessada por qualquer um. Para maior proteção, é possível protegê-la definindo um usuário e senha para acesso à URL.
  • Suporte a websocket: Útil para aplicações em tempo real.
  • Criação de túneis TCP: Em aplicações que não usam só HTTP, essa feature é útil para permitir o acesso de um servidor TCP qualquer na sua máquina por outras pessoas.
  • Código aberto: Você pode instalar o servidor do Ngrok em algum VPS que você possua e ter um servidor só seu para criação de túneis para a sua máquina.
  • Multiplataforma: Pode ser usado em qualquer sistema operacional facilmente pois não possui dependências;

Além disso, a simplicidade do software é absurda. Para você ter uma idéia, após a instalação, basta rodar:

E copiar a URL que o Ngrok te fornece, ali mesmo, no terminal, para mandar para seus amigos e conhecidos testarem, pois, como explicado acima, quem acessar esta URL verá diretamente o que está rodando no seu computador, no servidor da porta especificada. Simples, fácil, rápido e seguro.

Segue os links para o projeto:

Até semana que vem!

Gostou do conteúdo desse post? Apoie o blog pagando a partir de R$1/mês através da nossa página no Apoia.se! Isso me ajudará a manter o blog no ar, além de trazer mais coisas legais para vocês! Obrigado desde já! 😀