>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
CSS

Como expor uma porta local para a internet sem complicação

Uma situação familiar: você sobe um backend na sua máquina local, configura integração com um serviço externo como Stripe ou Telegram, e então precisa testar um webhook. Não há acesso externo ao seu localhost:8000, encomendar um IP estático parece esforço demais, e fazer deploy de um ambiente de staging só para algumas requisições demora demais.

Normalmente nesses momentos, sua mão instintivamente alcança o ngrok ou serviços similares. Mas alternativas comerciais sempre vêm com limitações irritantes: caps de tráfego, URLs que mudam a cada reinício, ou assinaturas pagas para funcionalidades básicas. Recentemente descobri o tunnelto — um utilitário Rust open-source que faz exatamente o que promete, sem a complicação extra.

O que é essa ferramenta

O projeto tunnelto permite expor um servidor web local para a internet pública através de um túnel. Você executa um único comando no terminal, obtém uma URL pública válida, e a passa para serviços externos ou clientes para fins de demonstração.

O destaque principal é que tanto o cliente quanto o servidor são escritos em Rust usando o motor async tokio. Isso resulta em uso modesto de memória e tratamento rápido de conexões recebidas. Sem runtimes pesados ou processos em segundo plano consumindo gigabytes de RAM.

O repositório do projeto está disponível em https://github.com/tunneltodev/tunnelto.

Como funciona na prática

A instalação leva alguns minutos. Se você está no macOS, o utilitário é instalado via Homebrew:

brew install agrinman/tap/tunnelto

Se você já tem uma toolchain Rust configurada, pode compilar o pacote via Cargo:

cargo install tunnelto

Para outros sistemas, o autor preparou binários compilados na seção Releases no GitHub.

Início rápido

Digamos que você tenha uma aplicação web rodando localmente na porta 8000. Você pode expô-la para o mundo externo com este comando:

tunnelto --port 8000

Após a execução, o utilitário abre um túnel e imediatamente fornece um endereço funcional. Qualquer requisição que chegar a esse endereço da internet é instantaneamente redirecionada para sua porta local.

Parâmetros úteis

No trabalho diário, você frequentemente precisa de configuração adicional. Aqui estão as flags que economizam tempo:

  • --subdomain define um subdomínio fixo para você não precisar mudar a URL nas configurações do webhook após cada reinício
  • --scheme alterna o protocolo entre http e https se o seu serviço local requer uma conexão segura
  • --dashboard-address sobe uma interface local para inspecionar e visualizar requisições recebidas
  • --key aceita uma chave de API para autorização do túnel

Exemplo de comando com especificação explícita de subdomínio:

tunnelto --port 3000 --subdomain my-test-app

Para que isso é útil

No desenvolvimento, existem vários cenários onde tunelamento economiza horas de trabalho:

  1. Depurando webhooks recebidos de sistemas de pagamento, mensageiros ou provedores OAuth diretamente no seu depurador local com breakpoints.
  2. Testando uma aplicação móvel em um smartphone real conectado à rede móvel, sem configurar roteador Wi-Fi.
  3. Mostrando rapidamente layouts ou protótipos para colegas enquanto o código ainda não foi pushado para o repositório ou deployado em um servidor de teste.
  4. Verificando certificados HTTPS e headers de segurança antes do release.

Impressões pessoais

O README menciona a capacidade de fazer self-host do componente servidor, embora a documentação careça de instruções detalhadas. Se privacidade total do tráfego é importante para você, você precisará explorar o código-fonte e fazer deploy de um relay no seu próprio VPS.

O projeto não tem muitas estrelas (cerca de 400), e commits não vêm todos os dias, mas para tarefas básicas o utilitário funciona de forma confiável. Inicia rapidamente, não requer registro para tunelamento básico, e faz exatamente uma coisa clara. Se você está procurando uma alternativa open-source simples para o ngrok, vale a pena verificar o repositório e testá-lo.

Projetos relacionados