GoSuda

Portalite: Ľahký Portal Go SDK so viacerými reléovými väzbami a štandardným net.Listener

By Lemon Mint views ...

Predtým, keď sme predstavovali Portal, sme hovorili o problémoch moderného webu. Vďaka nástrojom na kódovanie s umelou inteligenciou môže dnes vytvoriť webovú stránku každý, no samotné zverejnenie tejto stránky zostáva výsadou veľkých platforiem a cloudu. Portal oddeľuje hosťovanie webu od tvorby obsahu a prostredníctvom end-to-end šifrovaného relé pripája lokálne služby jednotlivca k celému svetu, čím jednotlivcovi vracia právo na zverejnenie.

Predstavujeme Portalite

Dnes predstavujem Portalite. Portalite je ultraľahký klient Portal a Go SDK vytvorený s minimálnymi závislosťami.

Ak je Portal filozofiou o tom, „ako zmeniť web", potom je Portalite najtenším lepidlom, ktorým túto filozofiu pripájame k aplikáciám vývojárov. Vývojár nepotrebuje zložitú cloudovú konfiguráciu ani deployment pipeline. Stačí importovať SDK a pridať niekoľko riadkov kódu, aby do svojej aplikácie zahrnul portal ingress. Okamihom spustenia aplikácie sa server, ktorý dovtedy existoval len lokálne, stane verejnou službou dostupnou odkiaľkoľvek z internetu.

1. Verejný Ingress s kódom dlhým len dva riadky

Portalite podporuje net.Listener, štandardné rozhranie jazyka Go. Stačí nahradiť listener v existujúcom webovom frameworku alebo serverovom kóde a okamžite funguje.

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)
  • Bez konfigurácie (Zero-config): Nie je potrebné nastavovať presmerovanie portov, pevnú IP adresu ani pravidlá príchodzej komunikácie vo firewalle.
  • Štandardná kompatibilita: Je plne kompatibilný s http.Server, grpc.Server, Gin, Echo, Chi a so všetkými knižnicami jazyka Go, ktoré používajú štandardný net.Listener.

2. Hlavná vlastnosť: súčasné viacrelé väzby (Multi-Relay Binding)

Väčšina tunelovacích nástrojov závisí od jedného koncového bodu, preto sa služba preruší spolu s relé serverom, keď tento prestane fungovať. Portalite funguje súčasným pripojením k viacerým relé serverom.

  • Bezpečné prepnutie pri výpadku (Failover): Ak niektoré z relé vypadnú alebo nastane sieťové oneskorenie, zvyšné funkčné relé naďalej prijímajú prevádzku cez rovnaký virtuálny listener.
  • Odstránenie jedného bodu zlyhania (SPOF): Pokiaľ sa všetky relé relácie nepreruší súčasne, slučka Accept() aplikácie sa neprpreruší.
  • End-to-end šifrovanie (E2EE): Prevádzka sa prenáša zašifrovaná, takže relé server nemôže nahliadnuť do údajov ani ich zmeniť.
  • Automatické znovupripojenie a samoliečenie (Self-Healing): Pri dočasnom výpadku siete alebo reštarte relé sa relácie a tokeny na pozadí automaticky znovu dohodnú a spojenie sa obnoví.

3. Okamžité použitie jedným príkazom v CLI

Ak nepíšete kód v jazyku Go alebo potrebujete rýchly test, stačí cez CLI zadať iba čí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

Ihneď po spustení príkazu sa vydajú URL adresy viacerých relé a služba je okamžite dostupná zvonku.

4. Ľahké, ale výkonné funkcie

  • Minimálne závislosti: Odstránením závislostí tretích strán je binárny súbor ľahký a zostavenie prebehne rýchlo.
  • Podpora TLS a UDP: Okrem TLS prevádzky, ako sú HTTP/gRPC, umožňuje QUIC datagramový backhaul jednoducho sprístupniť aj UDP služby, napríklad herné servery.

Začíname