Představujeme Portalite: ultralehký open-source klient a SDK pro přidání Portal Ingress do vaší aplikace
Při předchozím představování projektu Portal jsme hovořili o problémech moderního webu. S příchodem nástrojů pro AI kódování je sice tvorba webových stránek dostupná komukoliv, avšak jejich zveřejnění nadále zůstává v monopolní sféře velkých platforem a cloudu. Projekt Portal odděluje webový hosting od tvorby obsahu a prostřednictvím end-to-end šifrovaného relay propojuje osobní lokální služby s celým světem, čímž navrací právo na publikování zpět jednotlivcům.
Představujeme Portalite
Dnes oznamuji vydání projektu Portalite. Portalite představuje ultralehkého klienta Portal s minimálními závislostmi a zároveň Go SDK.
Zatímco Portal ztělesňuje filosofii „jak změnit web“, Portalite slouží jako nejtenčí pojivo pro aplikaci každého vývojáře. Vývojáři mohou importovat SDK a přidáním pouhých několika řádků kódu integrovat portálový ingress do vlastní aplikace bez nutnosti složitého cloudového nastavování či deployment pipelines. Jakmile je aplikace spuštěna, server, který doposud existoval pouze lokálně, se stává veřejnou službou přístupnou odkudkoliv z internetu.
1. Veřejný Ingress vyžadující pouhé dva řádky kódu
Portalite podporuje standardní Go rozhraní net.Listener. Výměnou listeneru v existujících webových frameworkech nebo serverovém kódu lze dosáhnout okamžité funkčnosti.
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í provedení (Zero-config): Nevyžaduje se žádné port forwarding, statická IP adresa ani konfigurace příchozích pravidel firewallu.
- Standardní kompatibilita: Stoprocentní kompatibilita se všemi Go knihovnami využívajícími standardní
net.Listener, jako jsouhttp.Server,grpc.Server, Gin, Echo nebo Chi.
2. Hlavní přednost: Souběžné vázání na více relay serverů (Multi-Relay Binding)
Vzhledem k tomu, že většina tunelovacích nástrojů závisí na jediném endpointu, výpadek relay serveru vede k přerušení služby. Portalite funguje tak, že je současně připojen k několika relay serverům.
- Izolace selhání bez výpadků (Failover): Pokud dojde k výpadku některých relay serverů nebo k síťové latenci, zbývající funkční relay servery nadále přivádějí provoz prostřednictvím téhož virtuálního listeneru.
- Eliminace jediného místa selhání (SPOF): Dokud nedojde k současnému přerušení všech relay sessions, smyčka
Accept()aplikace se nezastaví. - End-to-end šifrování (E2EE): Provoz je zprostředkováván v zašifrované podobě, takže relay server nemůže data číst ani pozměňovat.
- Automatické připojení a sebeuzdravení (Self-Healing): V případě dočasného přerušení sítě nebo restartu relay serveru dochází na pozadí k automatickému opětovnému vyjednání sessions a tokenů za účelem obnovení spojení.
3. Okamžité použití pomocí jediného příkazu CLI
Pokud nepoužíváte Go kód nebo potřebujete provést rychlý test, postačí zadat číslo portu prostřednictvím CLI.
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
Bezprostředně po spuštění příkazu jsou vygenerovány adresy URL pro vícenásobné relay servery a služba je okamžitě přístupná zvenčí.
4. Nízká hmotnost a vysoký výkon
- Minimální závislosti: Omezení závislostí třetích stran zajišťuje nízkou hmotnost binárního souboru a rychlé sestavení.
- Podpora TLS a UDP: Kromě TLS provozu, jako je HTTP či gRPC, lze prostřednictvím QUIC datagram backhaul snadno vystavit i UDP služby, například herní servery.
Začínáme
- Úložiště GitHub: https://github.com/gosuda/portalite
- Balíček Go:
go get gosuda.org/portalite