Predstavujeme Portalite: ultraľahký open-source klient a SDK na pridávanie portálov Ingress do vašich aplikácií
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
- Úložisko GitHub: https://github.com/gosuda/portalite
- Balík Go:
go get gosuda.org/portalite