GoSuda

Predstavujeme Portalite: ultraľahký open-source klient a SDK na pridávanie portálov Ingress do vašich aplikácií

By Lemon Mint
views ...

Keď sme predtým predstavovali projekt Portal, diskutovali sme o problémoch súčasného webu. S príchodom nástrojov pre AI kódovanie môže webovú stránku vytvoriť ktokoľvek, avšak jej zverejnenie svetu zostáva výhradnou doménou veľkých platforiem a cloudu. Portal je projekt, ktorý oddeľuje webový hosting od tvorby obsahu a prostredníctvom end-to-end šifrovaného prenosu prepája lokálne služby jednotlivcov s celým svetom, čím vracia právo na zverejňovanie späť do rúk jednotlivcov.

Predstavujeme Portalite

Dnes oznamujem vydanie projektu Portalite. Portalite je ultralahký Portal klient vytvorený s minimálnymi závislosťami a zároveň Go SDK.

Ak je Portal filozofiou o tom, „ako zmeniť web“, potom je Portalite tou najtenšou vrstvou lepidla, ktorá túto filozofiu integruje do aplikácií vývojárov. Bez potreby zložitej cloudovej konfigurácie alebo deploy pipelines môžu vývojári importovať SDK a pridať niekoľko riadkov kódu na začlenenie portálového ingressu do vlastnej aplikácie. V okamihu spustenia aplikácie sa server, ktorý dovtedy existoval iba lokálne, stáva verejnou službou prístupnou odkiaľkoľvek z internetu.

1. Verejný Ingress ukončený dvoma riadkami kódu

Portalite podporuje štandardné Go rozhranie net.Listener. Funguje okamžite po výmene listeneru v existujúcom webovom frameworku alebo kóde servera.

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)
  • Bezkonfiguračné (Zero-config): Nie je potrebné žiadne presmerovanie portov (port forwarding), statická IP adresa ani konfigurácia inbound pravidiel firewallu.
  • Štandardná kompatibilita: 100% kompatibilita so všetkými Go knižnicami využívajúcimi štandardný net.Listener, ako sú http.Server, grpc.Server, Gin, Echo či Chi.

2. Jadro: Súčasné viazanie na viacerých relé serveroch (Multi-Relay Binding)

Väčšina nástrojov na vytváranie tunelov závisí od jediného koncového bodu, takže ak relé server zlyhá, služba sa taktiež preruší. Portalite funguje tak, že je súčasne pripojený k viacerým relé serverom.

  • Bezvýpadková izolácia zlyhaní (Failover): Aj keď niektoré relé servery zlyhajú alebo dôjde k sieťovej latencii, zostávajúce aktívne relé servery naďalej privádzajú prevádzku cez rovnaký virtuálny listener.
  • Eliminácia jediného bodu zlyhania (SPOF): Kým nie sú všetky reléové sedenia prerušené naraz, slučka Accept() aplikácie sa nezastaví.
  • End-to-end šifrovanie (E2EE): Prevádzka sa prenáša v šifrovanej podobe, takže relé server nemá prístup k obsahu údajov ani ich nemôže pozmeniť.
  • Automatické opätovné pripojenie a samoliečba (Self-Healing): V prípade dočasného prerušenia siete alebo reštartu relé servera dochádza na pozadí k automatickému opätovnému vyjednaniu sedení a tokenov s cieľom obnoviť pripojenie.

3. Okamžité použitie pomocou jediného príkazu CLI

Pokiaľ nepoužívate Go kód alebo potrebujete rýchly test, stačí prostredníctvom CLI zadať čí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 sú vygenerované URL adresy pre viacnásobné relé a služba je pripravená na externý prístup.

4. Ľahké, avšak výkonné funkcie

  • Minimálne závislosti: Obmedzenie závislostí tretích strán zabezpečuje nízku hmotnosť binárneho súboru a rýchle zostavenie (build).
  • Podpora TLS & UDP: Okrem TLS prevádzky ako HTTP/gRPC je možné jednoducho sprístupniť aj UDP služby, napríklad herné servery, prostredníctvom QUIC datagram backhaul.

Začíname