Vi introduserer Portalite: En ultralett, åpen kildekode-klient og SDK for å legge til portal-Inهای (Ingress) i applikasjoner
Da vi tidligere introduserte Portal, diskuterte vi problemene ved det moderne nettet. Med fremveksten av AI-kodingsverktøy har hvem som helst blitt istand til å skape nettsteder, men selve publiseringen av dem til verden forblir fremdeles en eksklusiv domene for store plattformer og skyer. Portal er et prosjekt som skiller web-hosting fra innholdsproduksjon, og som gir enkeltpersoner tilbake retten til publisering ved å koble personlige lokale tjenester til hele verden gjennom ende-til-ende-krypterte reléer.
Vi introduserer Portalite
I dag kunngjør jeg Portalite. Portalite er en ultralett Portal-klient og Go-SDK bygget med minimal avhengighet.
Hvis Portal representerer filosofien om "hvordan nettet vil bli transformert", er Portalite det tynneste limet som fester denne filosofien til en utviklers applikasjon. Uten kompleks skykonfigurasjon eller distribusjonspipeline kan utviklere importere SDK-en og legge til bare noen få linjer med kode for å inkludere portal-ingress i sin egen applikasjon. I det øyeblikket applikasjonen kjører, forvandles serveren som tidligere kun levde lokalt, til en offentlig tjeneste som er tilgjengelig fra hvor som helst på internett.
1. Offentlig Ingress med kun to linjer kode
Portalite støtter Gos standardgrensesnitt net.Listener. Det fungerer umiddelbart ved ganske enkelt å bytte ut lytteren i eksisterende webrammeverk eller serverkode.
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)
- Nullkonfigurasjon (Zero-config): Det kreves overhodet ingen portviderekobling, faste IP-adresser eller konfigurering av innkommende brannmurregler.
- Standardkompatibilitet: 100 % kompatibel med alle Go-biblioteker som bruker standard
net.Listener, slik somhttp.Server,grpc.Server, Gin, Echo og Chi.
2. Kjernen: Samtidigbinding for multi-relé (Multi-Relay Binding)
Ettersom de fleste tunneleringstjenester er avhengige av et enkelt endepunkt, vil tjenesten brytes sammen dersom reléserveren går ned. Portalite fungerer ved å være tilkoblet flere reléservere samtidig.
- Uavbrutt feilisolores (Failover): Selv om noen av reléene skulle gå ned eller det oppstår nettverkslatens, vil de gjenværende aktive reléene fortsette å rute inn trafikk gjennom den samme virtuelle lytteren.
- Eliminering av enkeltstående feilpunkter (SPOF): Med mindre alle reléøkter brytes samtidig, vil applikasjonens
Accept()-løkke ikke bli avbrutt. - Ende-til-ende-kryptering (E2EE): Ettersom all trafikk videresendes i kryptert form, har reléserverne ingen mulighet til å inspisere eller manipulere dataene.
- Automatisk tilkobling og selvhelbredelse (Self-Healing): Selv ved midlertidige nettverksbrudd eller omstart av reléer, gjenopprettes tilkoblingen automatisk i bakgrunnen ved at økter og tokenforhandlinger utføres på nytt.
3. Umiddelbar bruk med en enkelt CLI-kommando
Dersom du ikke bruker Go-kode eller har behov for rask testing, er det tilstrekkelig å overføre portnummeret via 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
Umiddelbart etter at kommandoen er utført, utstedes flerreleers URL-er, og tjenesten er umiddelbart tilgjengelig fra utsiden.
4. Lettere, men kraftfulle funksjoner
- Minimal avhengighet: Ved å redusere tredjepartsavhengigheter holdes binærfilen lett og byggetiden rask.
- TLS- og UDP-støtte: I tillegg til TLS-trafikk som HTTP og gRPC, kan UDP-tjenester som spillservere enkelt eksponeres ved hjelp av QUIC datagram-backhaul.
Kom i gang
- GitHub-repositorium: https://github.com/gosuda/portalite
- Go-pakke:
go get gosuda.org/portalite