Vi presenterar Portalite: En ultralätt öppen källkods-klient och SDK för att integrera Portal Ingress i applikationer
När vi tidigare presenterade Portal diskuterade vi den moderna webbens problem. I och med framväxten av AI-kodningsverktyg kan vem som helst skapa en webbplats, men själva publiceringen förblir ett monopol för stora plattformar och molntjänster. Portal är ett projekt som skiljer webbhotell (hosting) och innehållsskapande åt, och som återlämnar rätten att publicera till individen genom att ansluta privata lokala tjänster till hela världen via end-to-end-krypterade reläer.
Vi presenterar Portalite
I dag presenterar jag Portalite. Portalite är en ultralätt Portal-klient och Go-SDK som byggts med minimala beroenden.
Om Portal representerar filosofin om "hur webben kommer att förändras", utgör Portalite det tunnaste bindemedlet för att applicera den filosofin på en utvecklares applikation. Utan komplexa molnkonfigurationer eller distributionspipelines kan utvecklare importera SDK:n och lägga till ett fåtal rader kod för att integrera en portal-ingress i sin applikation. I samma ögonblick som applikationen startar förvandlas den server som tidigare endast existerade lokalt till en publik tjänst som är tillgänglig var som helst på internet.
1. Publik ingress på två rader kod
Portalite stöder Go:s standardgränssnitt net.Listener. Genom att enbart byta ut lyssnaren i existerande webbramverk eller serverkod fungerar det omedelbart.
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)
- Ingen konfiguration (Zero-config): Portvidarekoppling, fasta IP-adresser eller konfiguration av brandväggens inkommande regler behövs överhuvudtaget inte.
- Standardkompatibilitet: 100 % kompatibelt med alla Go-bibliotek som använder standardiserade
net.Listener, såsomhttp.Server,grpc.Server, Gin, Echo och Chi.
2. Kärnan: Samtidig bindning till flera reläer (Multi-Relay Binding)
Eftersom de flesta tusingverktyg (tunneling tools) förlitar sig på en enda slutpunkt bryts tjänsten om reläservern kraschar. Portalite ansluter och fungerar på flera reläservrar samtidigt.
- Avbrottsfri feletisolering (Failover): Även om vissa reläer ligger nere eller drabbas av nätverksfördröjning, fortsätter de återstående aktiva reläerna att leda in trafik via samma virtuella lyssnare.
- Eliminering av enskilda felpunkter (SPOF): Såvida inte samtliga reläsessioner bryts samtidigt avbryts inte applikationens
Accept()-slinga. - End-to-end-kryptering (E2EE): Eftersom trafiken reläas i krypterad form kan reläservern varken inspektera eller manipulera data.
- Automatisk återanslutning och självläkning (Self-Healing): Vid tillfälliga nätverksavbrott eller omstart av reläer återställs anslutningen genom att sessioner och token förhandlas om automatiskt i bakgrunden.
3. Omedelbar användning med ett enda CLI-kommando
Om du inte använder Go eller behöver utföra ett snabbt test räcker det att skicka med portnumret 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
URL:er för multipla reläer utfärdas omedelbart vid kommandoexekvering och tjänsten blir omedelbart tillgänglig utifrån.
4. Lättviktig men kraftfull funktionalitet
- Minimala beroenden: Genom att utesluta tredjepartsberoenden blir binärfilen lätt och bygget går snabbt.
- Stöd för TLS och UDP: Förutom TLS-trafik som HTTP/gRPC kan även UDP-tjänster som spelservrar enkelt exponeras via QUIC datagram backhaul.
Komma igång
- GitHub-lagringsplats: https://github.com/gosuda/portalite
- Go-paket:
go get gosuda.org/portalite