Maak kennis met Portalite: een vederlichte open-source Client en SDK om Portal Ingress aan uw applicatie toe te voegen
Bij de introductie van Portal bespraken wij de problematiek van het moderne web. Hoewel de opkomst van AI-programmeertools het eenieder mogelijk maakt om websites te creëren, blijft het publiceren daarvan in de praktijk het exclusieve terrein van grote platforms en clouds. Portal is een project dat het hosten van het web en het creëren van content van elkaar scheidt, en daarmee het recht op publicatie teruggeeft aan het individuele individu door middel van het verbinden van lokale diensten aan de gehele wereld via end-to-end versleutelde relays.
Wij kondigen Portalite aan
Vandaag kondig ik Portalite aan. Portalite is een ultralichte Portal-client en Go-SDK, gebouwd met minimale dependencies.
Waar Portal fungeert als een filosofie aangaande de transformatie van het web, vormt Portalite de meest subtiele verbinding om die filosofie te integreren in de applicatie van een ontwikkelaar. Zonder complexe cloudconfiguratie of deployment-pipelines kan een ontwikkelaar de SDK importeren en met slechts enkele regels code een portal-ingress toevoegen aan de eigen applicatie. Vanaf het moment dat de applicatie wordt uitgevoerd, transformeert de server die aanvankelijk uitsluitend lokaal functioneerde in een publieke dienst die vanaf elke willekeurige locatie op het internet toegankelijk is.
1. Publieke Ingress gerealiseerd in twee regels code
Portalite ondersteunt Go's standaardinterface genaamd net.Listener. Door uitsluitend de listener van een bestaand webframework of servercode te vervangen, treedt de functionaliteit direct in werking.
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)
- Zonder configuratie (Zero-config): Er is volstrekt geen noodzaak voor port forwarding, statische IP-adressen of het instellen van firewall-inboundregels.
- Standaardcompatibiliteit: Volledig 100% compatibel met alle Go-bibliotheken die gebruikmaken van de standaard
net.Listener, zoalshttp.Server,grpc.Server, Gin, Echo en Chi.
2. Kernfunctionaliteit: Gelijktijdige binding van meerdere relays (Multi-Relay Binding)
Het merendeel van de tunnelingtools is afhankelijk van een enkel endpoint, waardoor het uitvallen van de relay-server automatisch resulteert in het onderbreken van de dienstverlening. Portalite is gelijktijdig verbonden met meerdere relay-servers en functioneert dienovereenkomstig.
- Failover zonder onderbreking: Zodra bepaalde relays offline gaan of er netwerkvertraging optreedt, blijven de overige actieve relays het verkeer binnenhalen via dezelfde virtuele listener.
- Eliminatie van Single Points of Failure (SPOF): Zolang niet alle relay-sessies tegelijkertijd worden verbroken, blijft de
Accept()-lus van de applicatie operationeel. - End-to-end encryptie (E2EE): Het verkeer wordt versleuteld doorgegeven, hetgeen verhindert dat relay-servers de data kunnen inzien of manipuleren.
- Automatische herverbinding en zelfherstel (Self-Healing): Zelfs tijdens tijdelijke netwerkonderbrekingen of het opnieuw opstarten van een relay, worden sessies en tokens in de achtergrond automatisch opnieuw onderhandeld teneinde de verbinding te herstellen.
3. Direct toepasbaar middels één enkel CLI-commando
Indien er geen sprake is van Go-code of wanneer een snelle test vereist is, volstaat het om uitsluitend het poortnummer door te geven via de 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
Onmiddellijk na het uitvoeren van het commando worden URLs voor meerdere relays verstrekt, waarmee de dienst direct extern toegankelijk is.
4. Lichtgewicht doch krachtige functionaliteit
- Minimale dependencies: Door het terugbrengen van third-party dependencies is het binair bestand licht van gewicht en verloopt de build-fase aanzienlijk sneller.
- TLS- en UDP-ondersteuning: Naast TLS-verkeer zoals HTTP en gRPC, kunnen eveneens UDP-diensten zoals gameservers eenvoudig worden blootgesteld via QUIC datagram backhauls.
Aan de slag
- GitHub-repository: https://github.com/gosuda/portalite
- Go-pakket:
go get gosuda.org/portalite