GoSuda

Vă prezentăm Portalite: Un client open-source și SDK ultra-ușor pentru adăugarea de portal Ingress în aplicații

By Lemon Mint
views ...

Portal introducând anterior, am discutat despre problemele web-ului modern. Odată cu apariția instrumentelor de programare bazate pe AI, oricine poate crea un site web, dar actul de a-l face public rămâne apanajul exclusiv al marilor platforme și al cloud-ului. Portal este un proiect care separă găzduirea web de crearea de conținut și redă indivizilor dreptul de publicare, conectând serviciile locale ale acestora la nivel global prin intermediul unor relee criptate end-to-end.

Vă prezentăm Portalite

Astăzi anunț Portalite. Portalite este un client Portal ultra-ușor și un SDK Go, construite cu dependențe minime.

Dacă Portal reprezintă filosofia privind "modul în care va schimba web-ul", Portalite este cel mai subțire adeziv care atașează această filosofie la aplicația unui dezvoltator. Dezvoltatorii pot integra un portal ingress în propria aplicație importând SDK-ul și adăugând doar câteva rânduri de cod, fără a fi necesare setăricomplexe în cloud sau conducte de implementare (deployment pipelines). În momentul în care aplicația rulează, un server care exista doar la nivel local devine un serviciu public accesibil de oriunde de pe internet.

1. Ingress public realizat în două rânduri de cod

Portalite acceptă net.Listener, care este interfața standard din Go. Acesta funcționează imediat ce înlocuiți receptorul (listener) din cadrul codului serverului sau al framework-ului web existent.

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)
  • Fără configurare (Zero-config): Nu este necesară nicio redirecționare de port (port forwarding), IP static sau configurare de reguli de inbound pentru firewall.
  • Compatibilitate standard: 100% compatibil cu toate bibliotecile Go care utilizează un net.Listener standard, cum ar fi http.Server, grpc.Server, Gin, Echo, Chi etc.

2. Esența: Legarea simultană de relee multiple (Multi-Relay Binding)

Deoarece majoritatea instrumentelor de tunelare se bazează pe un singur punct final, dacă serverul de releu cedează, serviciul se întrerupe odată cu acesta. Portalite funcționează prin conectarea simultană la mai multe servere de releu.

  • Izolarea eșecurilor fără întreruperi (Failover): Chiar dacă unele dintre relee cad sau apar întârzieri de rețea, celelalte relee rămase active continue să preia traficul prin același ascultător virtual.
  • Eliminarea punctului unic de eșec (SPOF): Bucla Accept() a aplicației nu se va opri decât dacă toate sesiunile de releu sunt întrerupte simultan.
  • Criptare end-to-end (E2EE): Deoarece traficul este transmis criptat, serverul de releu nu poate vizualiza sau modifica datele.
  • Reconectare automată și auto-reparare (Self-Healing): Chiar și în cazul unor întreruperi temporare de rețea sau al repornirii releului, conexiunea este restabilită prin renegocierea automată a sesiunilor și a token-urilor în fundal.

3. Utilizare instantanee cu o singură comandă CLI

Dacă nu utilizați cod Go sau aveți nevoie de o testare rapidă, este suficient să transmiteți numărul portului prin intermediul 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

Imediat după executarea comenzii, sunt generate URL-uri pentru relee multiple, iar starea devine imediat accesibilă din exterior.

4. Funcționalități ușoare, dar puternice

  • Dependențe minime: Prin eliminarea dependențelor terțe, binarul este ușor, iar compilarea este rapidă.
  • Suport pentru TLS și UDP: Pe lângă traficul TLS precum HTTP/gRPC, puteți expune cu ușurință și servicii UDP, cum ar fi serverele de jocuri, prin intermediul backhaul-ului de datagrame QUIC.

Noțiuni de bază