Portalite: SDK Go leve para Portal baseado em múltiplos vínculos de relé e net.Listener padrão

Anteriormente, ao apresentar o Portal, abordamos os problemas da web moderna. Com o surgimento das ferramentas de codificação com IA, qualquer pessoa passou a poder criar um site, mas a tarefa de publicá-lo no mundo continua reservada aos grandes plataformas e ao monopólio da nuvem. O Portal separa a hospedagem na web da produção de conteúdo e, ao conectar serviços locais de indivíduos ao mundo inteiro por meio de relés com criptografia ponta a ponta, devolve aos indivíduos o poder de publicar.
Apresentamos o Portalite
Hoje, tenho o prazer de apresentar o Portalite. O Portalite é um cliente Portal ultraleve e um Go SDK construído com dependências mínimas.
Se o Portal representa a filosofia de "como transformar a web", o Portalite é a cola mais fina que integra essa filosofia aos aplicativos dos desenvolvedores. Sem configurações complexas de nuvem ou pipelines de implantação, o desenvolvedor pode importar o SDK, adicionar algumas linhas de código e incorporar um ingress de portal ao seu aplicativo. No momento em que o aplicativo é executado, o servidor que existia apenas localmente torna-se um serviço público acessível de qualquer lugar da internet.
1. Ingress Público Concluído com Duas Linhas de Código
O Portalite oferece suporte à interface padrão do Go, net.Listener. Basta substituir o listener de um framework web ou código de servidor existente para que funcione imediatamente.
1identity, err := portalite.GenerateIdentity("my-service")
2
3listener, err := portalite.Expose(ctx, portalite.ExposeConfig{
4 Relays: portalite.DefaultRelays(),
5 Identity: identity,
6})
7
8http.Serve(listener, handler)
- Sem configuração (Zero-config): não são necessários encaminhamento de portas, IP fixo ou regras de entrada no firewall.
- Compatibilidade padrão: é 100% compatível com
http.Server,grpc.Server, Gin, Echo, Chi e todas as bibliotecas Go que utilizam onet.Listenerpadrão.
2. Essencial: Vinculação Simultânea a Múltiplos Relés (Multi-Relay Binding)
A maioria das ferramentas de túnel depende de um único endpoint; por isso, quando o servidor relé cai, o serviço também é interrompido. O Portalite opera conectado simultaneamente a vários servidores relé.
- Isolamento de falhas sem interrupção (Failover): mesmo que alguns relés fiquem indisponíveis ou apresentem latência de rede, os relés restantes continuam recebendo tráfego pelo mesmo listener virtual.
- Eliminação do ponto único de falha (SPOF): desde que não todas as sessões de relé sejam encerradas simultaneamente, o loop
Accept()da aplicação não é interrompido. - Criptografia ponta a ponta (E2EE): o tráfego é criptografado durante a transmissão, de modo que os servidores relé não podem visualizar nem adulterar os dados.
- Reconexão automática e autorrecuperação (Self-Healing): mesmo em caso de desconexões temporárias de rede ou reinicializações do relé, as sessões e os tokens são renegociados automaticamente em segundo plano, restabelecendo a conexão.
3. Uso Imediato com um Único Comando de CLI
Caso não utilize código Go ou precise de um teste rápido, basta informar o número da porta à CLI.
1$ go install gosuda.org/portalite/cmd/portalite@latest && portalite expose --name "my-service" 3000
2URL https://my-service.rly.best
3URL https://my-service.s-h.day
4
Logo após a execução do comando, são emitidas URLs de múltiplos relés, e o serviço fica imediatamente acessível externamente.
4. Leveza com Recursos Poderosos
- Dependências mínimas: ao eliminar dependências de terceiros, o binário fica mais leve e a compilação, mais rápida.
- Suporte a TLS e UDP: além do tráfego TLS, como HTTP/gRPC, é possível expor com facilidade serviços UDP, como servidores de jogos, por meio de backhaul de datagramas QUIC.
Como Começar
- Repositório no GitHub: https://github.com/gosuda/portalite
- Pacote Go:
go get gosuda.org/portalite