Skip to content

Latest commit

Β 

History

History
104 lines (79 loc) Β· 5.06 KB

File metadata and controls

104 lines (79 loc) Β· 5.06 KB

lab

TΓΊnel reverso caseiro pra *.devi.tools. Compartilhar projetos locais em URL pΓΊblica sem ngrok, sem SSH, sem cadastro.

Como funciona

A ideia Γ© deixar fΓ‘cil pegar um projeto que tΓ‘ rodando sΓ³ no seu PC e gerar uma URL pΓΊblica que qualquer um pode abrir no navegador.

VocΓͺ abre o lab.exe (ou lab.app) e escolhe entre dois modos:

       MEU COMPUTADOR                              SERVIDOR (devi.tools)
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚               β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
  β”‚    β”‚      lab      β”‚    β”‚               β”‚     β”‚       lab        β”‚   β”‚
  β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚               β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
  β”‚            β”‚            β”‚               β”‚               β–Ό            β”‚
  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚               β”‚         *.devi.tools       β”‚
  β”‚   β–Ό                 β–Ό   β”‚               β”‚       (URL pΓΊblica,        β”‚
  β”‚ [Pasta]       [Porta]   β”‚               β”‚        HTTPS automΓ‘tico)   β”‚
  β”‚   β”‚                 β”‚   β”‚               β”‚               β”‚            β”‚
  β”‚   β–Ό                 β–Ό   β”‚               β”‚               β”‚            β”‚
  β”‚ disco         localhost β”‚               β”‚               β”‚            β”‚
  β”‚ local           :5173   β”‚               β”‚               β”‚            β”‚
  β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚                                              β”‚
             β”‚              tΓΊnel WebSocket persistente     β”‚
             β””β”€β”€β”€β”€β”€β”€β–Ίβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       (enquanto o lab              o amigo abre
                        estiver aberto)              <slug>.devi.tools
                                                                β–Ό
                                                          chrome do amigo

Modo "Compartilhar pasta"

Pra HTML estΓ‘tico ou build pronto.

  1. Abrir o lab, marcar "Uma pasta".
  2. Escolher a pasta com seu index.html.
  3. Clicar Compartilhar.
  4. Copiar a URL e mandar pro amigo.

O lab serve os arquivos direto do disco via WebSocket. Editou, salvou, prΓ³xima request lΓͺ a versΓ£o nova. Sem dev server externo, sem WebStorm, sem Allowed Hosts.

Modo "Compartilhar porta"

Pra dev server ao vivo (Vite, Next, Java, PHP, etc).

  1. Subir o servidor local: npm run dev, php -S, etc.
  2. No lab marcar "Uma porta local".
  3. Digitar a porta (Vite 5173, Next 3000…).
  4. Clicar Compartilhar.

HMR funciona β€” o amigo vΓͺ suas mudanΓ§as ao vivo.

Vida ΓΊtil

Em ambos os modos, a URL fica de pΓ© enquanto o lab tiver aberto. Fecha = cai. Nada fica armazenado no servidor. Pra entregar trabalho que precisa sobreviver com o PC desligado, use GitHub Pages, Netlify ou Vercel.

Pegadinha do modo porta: dev server precisa aceitar Host externo

O Vite (e quase todo dev server) rejeita conexΓ΅es com Host diferente de localhost por padrΓ£o. Se ao abrir a URL aparecer "Blocked request", ajustar o vite.config.js:

export default {
  server: {
    host: true,
    allowedHosts: ['.devi.tools'],
  },
}

Outros: ver client/README.md.


Componentes

  • server/ β€” serviΓ§o Go (lab) que roda na VPS devi.tools. Aceita conexΓ΅es WebSocket de clientes e roteia <slug>.devi.tools pro tΓΊnel certo.
  • client/ β€” app desktop (Python + Tkinter empacotado em .exe / .app) que abre o tΓΊnel e serve a pasta ou proxya a porta local.
  • docs/ β€” landing pΓΊblica em https://lab.devi.tools (embutida no binΓ‘rio do server via go:embed no build).

DecisΓ΅es de arquitetura

SubdomΓ­nio raiz *.devi.tools (regex VIRTUAL_HOST, match exato vence pra subdomΓ­nios jΓ‘ cadastrados)
Cert Wildcard *.devi.tools via certbot DNS-01 (DO API), renova semanal via cron
Auth Slug aleatΓ³rio <friendly>-<rand6> ~30 bits (sem token)
Protocolo Envelope JSON sobre WebSocket: req/resp com base64 body
Estado no servidor SΓ³ o map slug β†’ conn WS na memΓ³ria. Nada em disco, nada persiste
Admin endpoint lab.devi.tools (/tunnel, /health)