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

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
- Repozitár na GitHube: https://github.com/gosuda/portalite
- Balíček Go:
go get gosuda.org/portalite