GoSuda

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

By Lemon Mint views ...

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