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
