Criei um serviço de túnel SSH que adiciona uma URL HTTPS permanente ao seu servidor local sem configurar o roteador
(natnest.site)Link do serviço: https://natnest.site
Código-fonte do cliente: https://github.com/litdemon/natnest-client
Olá. Criei o NatNest, um serviço que expõe um servidor local para fora com base em túnel reverso SSH.
run local server 8080
natnest 8080 → https://yourname.natnest.site
O que me levou a criar isso
Tenho um Mac mini em casa e rodo o Ollama nele.
Queria usar também fora de casa, mas configurar port forwarding toda vez era um obstáculo.
Eu entrava na página de administração do roteador, abria a porta e usava assim.
Depois, ao usar o Dialogflow do Google, surgiu a necessidade de registrar um Webhook(fullfilment).
Ele exigia HTTPS, então precisei preparar domínio e certificado, subir o Nginx e ainda criar um reverse proxy para conectar tudo.
Outros desenvolvedores também precisavam fazer exatamente o mesmo trabalho na mesma situação. Eu precisava explicar como fazer, e então
"Por que não criar isso eu mesmo?" Foi assim que o NatNest começou.
Não foi só o cliente que eu criei. O NatNest é um conjunto que inclui Nginx + Lua, Redis, DB, api server, Tunnel-server (ssh server) e vários outros servidores.
Enquanto desenvolvia, descobri que já existiam serviços iguais com ngrok e Cloudflare Tunnel T_T.
Como funciona
Quando o cliente (CLI) conecta um túnel reverso SSH ao servidor, o servidor registra no Redis o mapeamento subdomínio → porta interna. Depois, quando uma requisição chega de fora em https://yourname.natnest.site, o OpenResty(Nginx + Lua) consulta o Redis e faz proxy para a porta daquele túnel SSH.
Requisição externa → [Nginx + Lua] → consulta ao Redis → porta do túnel SSH → servidor local
O cliente mantém a conexão SSH com um processo watchdog em segundo plano, então mesmo se você fechar o terminal ou a rede cair por um instante, ele se reconecta automaticamente em até 5 segundos.
O que muda em relação ao ngrok / Cloudflare Tunnel
NatNest : URL permanente, self-hosting, visualizador de logs de webhook
Ngrok Free : URL permanente(❌), sem self-hosting, visualizador de logs de webhook (Pro ou superior)
Cloudflare Tunnel : URL permanente(❌), Pro ou superior, inexistente(❌)
É uma proposta ideal para quem, como eu, quer "URL permanente de graça, com os dados rodando no meu próprio servidor".
A maior vantagem é
ter uma solução capaz de fazer um serviço como o ngrok
e a agilidade de poder aplicar imediatamente boas ideias vindas dos comentários aqui.
Este é realmente o primeiro passo para incorporar funcionalidades que os desenvolvedores de fato querem.
Estado atual e limitações honestas
Na versão v0.5.1, os recursos abaixo funcionam:
- Vinculação com conta Google (OAuth Device Flow) + geração automática de chave SSH
- Subdomínio permanente + renovação automática de HTTPS wildcard do Let's Encrypt
- Dashboard web (lista de túneis ativos, logs de webhook em tempo real)
- Binários de cliente para Linux(amd64·arm64), macOS e Windows
Ainda há pontos que faltam:
- A automação de CI/CD do build para Windows ainda não está concluída (build manual no momento)
- O servidor é único e roda em casa, então há latência
- Como opero o serviço sozinho, ainda é difícil garantir estabilidade em nível de serviço (SLA)
Se quiser instalar e testar
Linux / macOS
curl -fsSL https://natnest.site/install.sh | bash
natnest setup # Vincular conta Google
natnest 8080 # Expor a porta local 8080 para o exterior
Como é a primeira vez que estou abrindo isso ao público, se tiver feedback sobre a experiência de uso ou ideias do tipo "seria legal ter este recurso", eu ficaria realmente muito grato se deixasse um comentário.
4 comentários
O comando de instalação e o link do GitHub no topo da página inicial estão dando erro 404.
Obrigado pelo comentário. Já apliquei a correção.
O problema maior parece ser a mudança no design, que claramente dá a impressão de ter sido feita por IA.
https://github.com/anderspitman/awesome-tunneling
Awesome Tunneling - coleção de alternativas ao ngrok
Como esse tipo de tunnel tem muita demanda, existem muitos serviços desse tipo. Talvez também valha a pena consultar outros serviços como referência.
Parece interessante. Escapando do inferno das configurações