Esittelyssä Portalite: erittäin kevyt avoimen lähdekoodin client ja SDK, joka lisää Portal Ingressin sovelluksiisi
Esitellessämme Portal -järjestelmän aiemmin, käsittelimme nykyverkon ongelmia. AI-koodaustyökalujen myötä kuka tahansa voi luoda verkkosivustoja, mutta niiden julkaiseminen maailmalle on edelleen suurten alustojen ja pilvipalveluiden yksinomaisella hallinta-alueella. Portal on projekti, joka erottaa verkon isännöinnin ja sisällöntuotannon toisistaan ja palauttaa julkaisuoikeuden takaisin yksityishenkilöille yhdistämällä paikalliset palvelut maailmanlaajuisesti päästäpäähän salattujen (end-to-end encrypted) releiden kautta.
Portalite julkistetaan
Tänään julkistan Portalite -ohjelmiston. Portalite on erittäin kevyt Portal-asiakasohjelma ja Go SDK, joka on rakennettu minimaalisilla riippuvuuksilla.
Jos Portal edustaa filosofiaa siitä, "miten verkko tullaan muuttamaan", Portalite on ohuin mahdollinen liima, joka kiinnittää kyseisen filosofian kehittäjän sovellukseen. Ilman monimutkaisia pilviasetuksia tai jakeluputkia kehittäjä voi tuoda SDK:n ja lisätä vain muutaman rivin koodia sisällyttääkseen portaalin ingressin omaan sovellukseensa. Heti kun sovellus käynnistetään, aiemmin vain paikallisesti toiminut palvelin muuttuu julkiseksi palveluksi, johon päästään käsiksi mistä tahansa internetistä.
1. Julkinen Ingress kahdella koodirivillä
Portalite tukee Go-kielen standardirajapintaa nimeltä net.Listener. Se toimii välittömästi, kun olemassa olevan verkkokehyksen tai palvelinkoodin kuuntelija (listener) vaihdetaan.
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)
- Ei vaadi asetuksia (Zero-config): Porttiohjausta, staattisia IP-osoitteita tai palomuurin saapuvan liikenteen (inbound) sääntöjen määritystä ei tarvita lainkaan.
- Standardiyhteensopiva: Yhteensopiva 100-prosenttisesti kaikkien Go-kirjastojen kanssa, jotka käyttävät standardia
net.Listener-rajapintaa, kutenhttp.Server,grpc.Server, Gin, Echo ja Chi.
2. Ydin: Monireleen samanaikainen sidonta (Multi-Relay Binding)
Koska useimmat tunnelointityökalut ovat riippuvaisia yhdestä päätepisteestä, palvelu katkeaa relepalvelimen kaatuessa. Portalite toimii muodostamalla yhteyden samanaikaisesti useaan relepalvelimeen.
- Katkokseton vikasietoisuus (Failover): Vaikka osa releistä lakkaisi toimimasta tai verkkoon tulisi viivettä, jäljellä olevat toimivat releet jatkavat liikenteen ohjaamista sisään saman virtuaalisen kuuntelijan kautta.
- Yhden vikaantumispisteen (SPOF) poistaminen: Sovelluksen
Accept()-silmukka ei keskeydy, elleivät kaikki relesessiot katkea samanaikaisesti. - Päästäpäähän-salaus (E2EE): Koska liikenne välitetään salattuna, relepalvelimet eivät voi tarkastella tai muuttaa dataa.
- Automaattinen uudelleenyhdistttäminen ja itsekorjautuvuus (Self-Healing): Tilapäisen verkkokatkoksen tai releen uudelleenkäynnistyksen sattuessa yhteydet palautetaan neuvottelemalla sessiot ja tunnukset uudelleen taustalla.
3. Välitön käyttö yhdellä CLI-komennolla
Jos kyseessä ei ole Go-koodi tai jos tarvitaan nopea testaus, riittää että porttinumero välitetään komentorivityökalun (CLI) kautta.
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
Useamman releen URL-osoitteet myönnetään heti komennon suorittamisen jälkeen, ja palvelu on välittömästi ulkopuolelta saavutettavassa tilassa.
4. Kevyt mutta tehokas toiminnallisuus
- Minimaaliset riippuvuudet: Kolmannen osapuolen riippuvuuksien vähentämisen ansiosta binaaritiedosto on kevyt ja käännös (build) nopea.
- TLS- ja UDP-tuki: HTTP:n ja gRPC:n kaltaisen TLS-liikenteen lisäksi myös UDP-palvelut, kuten pelipalvelimet, voidaan tuoda helposti julki QUIC datagram -taustakanavan (backhaul) kautta.
Aloittaminen
- GitHub-tietovarasto: https://github.com/gosuda/portalite
- Go-paketti:
go get gosuda.org/portalite