Eu Construí Minha Própria Plataforma de Tunelamento

Passei três dias refinando um web app no meu laptop. Parecia perfeito. Então tentei testá-lo no meu celular. Tudo quebrou.

O desenvolvimento local fica bagunçado quando você precisa de um segundo dispositivo. Compartilhar um IP local falha devido a firewalls e problemas de certificados HTTPS.

Eu tentei o Ngrok. Funciona, mas o plano gratuito derruba conexões. As URLs também são horríveis. Strings aleatórias como a1b2-34-56.ngrok-free.app são ruins para compartilhar com clientes ou equipes.

Eu queria um túnel com URLs limpas e legíveis. Então, construí o meu próprio.

Combinei um túnel personalizado com um encurtador de URLs. Adicionei IA para criar slugs inteligentes e integrei proteções de segurança.

A stack tecnológica: • Tunnel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Database: PostgreSQL (Neon) • Auth: JWT, bcrypt • AI: Google Gemini • Security: MaxMind GeoLite2, Google Safe Browsing API

Como funciona:

  • Tunelamento WebSocket bidirecional. Um agente CLI local se conecta a um servidor Django para encaminhar requisições HTTP.
  • Proteção contra race conditions. Uso expressões F() do Django para atualizações atômicas para manter as métricas precisas.
  • Telemetria não bloqueante. Consultas de localização e SO rodam em threads de segundo plano para manter a latência baixa.
  • Slugs com IA. O Gemini lê a URL de destino para criar um slug significativo em vez de um texto aleatório.
  • Segurança proativa. Bloqueio intervalos de IPs privados e executo verificações do Google Safe Browsing antes de salvar qualquer link.

O backend e a lógica de tunelamento estão estáveis. O frontend ainda está em desenvolvimento.

Atualmente, estou estudando para exames no IITM. Estou pausando novos recursos para focar nos meus estudos. Em vez de deixar o código parado, estou abrindo-o para revisão.

Preciso do seu feedback sobre alguns pontos:

  • Latência: Como posso manter os redirecionamentos abaixo de 10ms em alta escala?
  • Segurança: Qual é a melhor maneira de reforçar a mitigação de SSRF?
  • Escalabilidade: Devo usar WebSockets ou TCP para túneis de longa duração?
  • Observabilidade: Quais métricas devo acompanhar para a saúde do túnel?

Se você tem experiência com proxy workers ou design de sistemas, por favor, compartilhe sua opinião.

Detalhamento completo do design do sistema: [Link] Codebase: [Link]

Como você lida com o teste de permissões móveis durante o desenvolvimento local? Você usa túneis de terceiros ou ferramentas personalizadas?

Fonte: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d