Túnel reverso caseiro pra *.devi.tools. Compartilhar projetos locais em URL pública sem ngrok, sem SSH, sem cadastro.
- Documentação amigável: https://lab.devi.tools
- Download — Windows · macOS
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
Pra HTML estático ou build pronto.
- Abrir o lab, marcar "Uma pasta".
- Escolher a pasta com seu
index.html. - Clicar Compartilhar.
- 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.
Pra dev server ao vivo (Vite, Next, Java, PHP, etc).
- Subir o servidor local:
npm run dev,php -S, etc. - No lab marcar "Uma porta local".
- Digitar a porta (Vite 5173, Next 3000…).
- Clicar Compartilhar.
HMR funciona — o amigo vê suas mudanças ao vivo.
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.
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.
server/— serviço Go (lab) que roda na VPSdevi.tools. Aceita conexões WebSocket de clientes e roteia<slug>.devi.toolspro 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 viago:embedno build).
| 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) |