https://a.storyblok.com/f/270183/469192/f24ec47f2d/nexmo-ngrok-tunnel.jpg

Conecte seu servidor de desenvolvimento local à API da Vonage usando um túnel Ngrok

Publicado em November 12, 2020

Tempo de leitura: 7 minutos

Muitas vezes, ao desenvolver demonstrações para conferências, escrevendo posts de blog e “guias práticos” ou ao criar um guia para o nosso portal de desenvolvedores , precisamos expor nosso ambiente de desenvolvimento local à internet pública para que ele possa ser acessado pelas APIs da Vonage.

ngrok diagrangrok diagra

Por que usamos o ngrok?

Nossa equipe de relações com desenvolvedores trabalha remotamente e viaja com frequência; por isso, às vezes trabalhamos de casa, outras vezes estamos em nosso escritório em Londres ou em um café. Para receber webhooks de entrada, precisaríamos configurar um servidor local, redirecionar as portas corretas, garantir que o DNS tenha nosso novo IP público e que a alteração tenha sido propagada, configurar o SSL e assim por diante. Isso não é apenas impraticável, mas provavelmente impossível em certas situações. Mas com o ngrok , podemos expor nosso servidor local em seu próprio subdomínio com suporte a HTTPS por meio de um único comando.

ngrok in terminalngrok in terminal

No entanto, observe que, caso você esteja em uma rede corporativa, não deve criar nenhum túnel remoto sem antes consultar o administrador de rede. Consulte a seção abaixo sobre questões de segurança para obter mais detalhes.

A outra opção é implantar nosso código em um servidor remoto. Com plataformas como Heroku e Digital Ocean, isso está ficando cada vez mais fácil, mas ainda há algumas configurações a serem feitas e, normalmente, algum custo envolvido. Mas se tudo o que eu quero fazer é hospedar um arquivo NCCO (Call Control Object) , é improvável que qualquer outro serviço seja mais fácil do que:

python -m SimpleHTTPServer &> /dev/null & ngrok http 8000

Começando a usar o ngrok

O site do ngrok disponibiliza downloads para a maioria dos principais sistemas operacionais; além disso, traz instruções sobre como instalar o ngrok, o que basicamente consiste em descompactá-lo. Costumo mover o arquivo binário do ngrok para /usr/local/bin (ou em outro diretório no meu $PATH) no Mac/Linux para poder chamá-lo facilmente pela linha de comando sem precisar especificar o caminho completo para o binário. O How-to Geek tem um ótimo artigo sobre como editar o PATH do sistema no Windows , caso você queira fazer algo semelhante em um computador com Windows.

Depois de instalado, executar o ngrok é tão fácil quanto digitar o seguinte comando, em que 8000 é o número da porta em que seu servidor local está rodando

ngrok http 8000

Isso iniciará o ngrok no seu terminal.

Depois de iniciado, você deverá ver as URLs públicas que o ngrok criou para você, bem como outras informações, como a região em que seu túnel está em execução, quantas conexões há no momento e um registro das solicitações HTTP recebidas.

Como o ngrok é executado no seu terminal, provavelmente você precisará manter uma janela de terminal aberta para o seu servidor local e outra janela de terminal separada para o ngrok. Como alternativa, você pode usar o GNU Screen ou o tmux. A documentação de ambos é bastante densa. Você pode encontrar boas informações sobre os conceitos básicos do screen pesquisando por “quickstart GNU screen <operating system>

Repetição de solicitações

Um dos recursos mais úteis do ngrok é a capacidade de reproduzir solicitações.

ngrok web consolengrok web console

Ao iniciar o ngrok, uma das URLs listadas é a da interface web. Essa interface web é executada localmente no seu computador, normalmente na porta 4040, e fornece uma grande variedade de informações sobre o túnel em execução, incluindo métricas sobre as solicitações.

Na guia “Inspecionar”, há também uma lista de todas as solicitações recebidas. Essa lista inclui o tipo de solicitação (GET, POST, HEAD etc.), qual URL foi solicitada e qual código de resposta HTTP foi enviado pelo seu servidor local (200, 404 etc.). Ao clicar em uma solicitação, serão exibidas mais informações, incluindo os cabeçalhos e até mesmo o texto bruto da solicitação/resposta. Isso pode ser de grande valor na depuração de interações com APIs.

Depois de selecionar uma solicitação da lista, você pode reproduzir essa solicitação. Isso reenviará a solicitação para o seu servidor local! Por exemplo, se você estiver desenvolvendo um aplicativo que utiliza a SMS API de Vonage para SMS recebidas, em vez de ter que enviar outro SMS para acionar o webhook, você pode simplesmente reproduzir a última solicitação de SMS recebida.

Recursos adicionais

ngrok tem muitos recursos adicionais, incluindo uma API, por isso recomendo fortemente que você leia a documentação deles para se familiarizar com tudo o que está disponível, já que vou abordar apenas alguns dos recursos mais comuns que usamos durante o desenvolvimento.

Recursos pagos

Tudo o que discutimos até agora está disponível sem um account no ngrok ou com um account gratuito. Os recursos só estão disponíveis com uma assinatura paga do ngrok, mas achamos que são superúteis, por isso as incluí.

Questões de segurança

Se você quiser estragar o dia de um administrador de rede, diga a ele que quer executar um proxy reverso aberto na rede local. O ngrok é um aplicativo fantástico que usamos diariamente aqui na Vonage, mas é importante estar ciente das implicações de segurança decorrentes do uso de um túnel através do firewall da sua rede. Converse com o seu administrador de rede antes de usar o ngrok na rede do trabalho.

Se você estiver trabalhando em casa, em uma cafeteria, em algum outro lugar onde não haja um administrador de rede com quem possa conversar, ou onde você mesmo seja o administrador de rede, recomendamos usar o ngrok com autenticação HTTP básica, lista de endereços IP autorizados e HTTPS forçado.

Você pode encontrar informações sobre como usar a autenticação HTTP Basic com a Vonage, bem como nossos endereços IP públicos em nossa base de conhecimento.

Alternativas

Compartilhar:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Aaron BassettEx-funcionários da Vonage

Aaron era um defensor de desenvolvedores na Nexmo. Engenheiro de software experiente e aspirante a artista digital, Aaron costuma ser visto criando coisas com código ou com eletrônica; às vezes, os dois. Geralmente, dá para perceber quando ele está trabalhando em algo novo pelo cheiro de componentes queimando no ar.