Portalite: lehký Portal Go SDK s vícenásobnou relay vazbou a standardním net.Listener

Dříve jsme při představování Portalu hovořili o problémech moderního webu. S nástupem nástrojů pro AI kódování může dnes každý vytvořit webovou stránku, avšak její zveřejnění na internetu zůstává výsadou velkých platforem a cloudových služeb. Portal odděluje hostování webu od tvorby obsahu a prostřednictvím end-to-end šifrovaných relé propojuje lokální služby jednotlivců s celým světem, a tím vrací jednotlivcům právo služby zveřejňovat.
Představujeme Portalite
Dnes představuji Portalite. Portalite je ultralehký klient Portalu a zároveň Go SDK vytvořené s minimální mírou závislostí.
Pokud je Portal filozofií o tom, „jak změnit web“, pak Portalite je nejtenčím lepidlem, které tuto filozofii připojuje k aplikacím vývojářů. Vývojář nepotřebuje složitou konfiguraci cloudu ani deployment pipeline; stačí importovat SDK a přidat několik řádků kódu, a aplikace získá portal ingress. Ve chvíli, kdy aplikace spustí, se server, který dosud existoval pouze lokálně, stane veřejnou službou dostupnou odkudkoli na internetu.
1. Veřejný Ingress hotový v několika řádcích kódu
Portalite podporuje standardní rozhraní Go net.Listener. Stačí nahradit listener ve stávajícím webovém frameworku nebo serverovém kódu a funguje okamžitě.
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)
- Nulová konfigurace (Zero-config): Není nutné nastavovat přesměrování portů, pevnou IP adresu ani pravidla příchozího firewallu.
- Standardní kompatibilita: Plně kompatibilní se všemi knihovnami Go, které používají standardní
net.Listener, včetněhttp.Server,grpc.Server, Gin, Echo a Chi.
2. Jádro: souběžné vázání na více relé (Multi-Relay Binding)
Většina tunelovacích nástrojů závisí na jediném koncovém bodu, a proto při výpadku relé server přestane fungovat i služba. Portalite funguje tak, že je současně připojen k více relé serverům.
- Bezpřerušové oddělení chyb (Failover): Pokud některá z více relé selže nebo dojde ke zpoždění sítě, zbývající funkční relé nadále přijímají provoz přes stejný virtuální listener.
- Odstranění jediného bodu selhání (SPOF): Dokud nejsou všechny relační session přerušeny současně, smyčka
Accept()aplikace nepřestane fungovat. - End-to-end šifrování (E2EE): Provoz je přenášen šifrovaně, takže relé server nemůže data číst ani měnit.
- Automatické znovupřipojení a samoléčení (Self-Healing): I při dočasném přerušení sítě nebo restartu relé na pozadí automaticky znovu vyjednává session a tokeny a obnovuje spojení.
3. Okamžité použití jediným příkazem CLI
Pokud nepracujete s kódem v Go nebo potřebujete rychlý test, stačí předat CLI pouze číslo portu.
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
Ihned po spuštění příkazu jsou vygenerovány URL adresy pro více relé a služba je okamžitě dostupná zvenku.
4. Lehké, ale výkonné funkce
- Minimální závislosti: Díky odstranění závislostí třetích stran je binární soubor lehký a sestavení rychlé.
- Podpora TLS a UDP: Kromě TLS provozu jako HTTP/gRPC lze prostřednictvím QUIC datagramového backhaulu snadno zpřístupnit i UDP služby, například herní servery.
Začínáme
- Repozitář na GitHubu: https://github.com/gosuda/portalite
- Balíček Go:
go get gosuda.org/portalite