---
id: 33b4cfbec34c4d839daf853bf4a39b3e
author: Lemon Mint
title: 'Portalite: En lettvekts Portal Go SDK med multirelébinding og standard net.Listener-grensesnitt'
description: En lettvekts Portal-klient og CLI som støtter Gos standard net.Listener-grensesnitt, samtidig binding til flere reléer, ende-til-ende-kryptering (E2EE) og automatisk gjenoppretting av økter.
language: "no"
date: 2026-08-26T14:05:55.212694445Z
path: /portalite
go_package: gosuda.org/portalite
go_repourl: https://github.com/gosuda/portalite.git
category: network
---

Tidligere, da vi introduserte [Portal](https://github.com/gosuda/portal), tok vi opp problemene med dagens nett. Fremveksten av AI-baserte kodeverktøy har gjort det mulig for hvem som helst å lage et nettsted, men selve det å gjøre det offentlig tilgjengelig forblir fortsatt et enerett for store plattformer og skytjenester. Portal skiller vertstjenester fra innholdsproduksjon og kobler lokale tjenester fra enkeltpersoner til hele verden via en ende-til-ende-kryptert relé, og gir dermed tilbake retten til å gjøre noe offentlig til den enkelte.

## Vi presenterer Portalite

I dag presenterer jeg [Portalite](https://github.com/gosuda/portalite). Portalite er **en ultralett Portal-klient og Go SDK bygget med minimale avhengigheter**.

Dersom Portal representerer filosofien om "hvordan nettet bør endres", er Portalite det tynneste limet som fester denne filosofien til utviklerens applikasjon. Utviklere trenger ingen komplekse skyoppsett eller distribusjonsrørledninger; de importerer SDK-en, legger til noen få linjer med kode, og har dermed en portal-ingress i sin applikasjon. I det øyeblikket applikasjonen kjører, blir en server som tidligere bare fantes lokalt, en offentlig tjeneste som kan nås fra hvor som helst på internett.

## 1. Offentlig ingress som avsluttes med to linjer kode

Portalite støtter [`net.Listener`](https://pkg.go.dev/net#Listener), Gos standardgrensesnitt. Det fungerer umiddelbart ved at man bytter ut lytteren i en eksisterende webrammeverks- eller serverkode.

```go
identity, err := portalite.GenerateIdentity("my-service")

listener, err := portalite.Expose(ctx, portalite.ExposeConfig{
    Relays:   portalite.DefaultRelays(),
    Identity: identity,
})

http.Serve(listener, handler)
```

- **Null konfigurasjon (Zero-config):** Ingen portvideresending, faste IP-adresser eller innadgående regler i brannmuren er nødvendig.
- **Standardkompatibilitet:** Fullt kompatibel med `http.Server`, `grpc.Server`, Gin, Echo, Chi og alle andre Go-biblioteker som bruker standard `net.Listener`.

## 2. Kjerneegenskap: Samtidig binding til flere reléer (Multi-Relay Binding)

De fleste tunnelverktøy er avhengige av ett enkelt endepunkt, slik at tjenesten også faller bort når relé-serveren stopper. **Portalite opererer ved å være samtidig tilkoblet flere relé-servere.**

- **Driftsavbruddsfri feilisolering (Failover):** Selv om noen av flere reléer går ned eller opplever nettverksforsinkelse, fortsetter de gjenværende aktive reléene å lede trafikk inn gjennom samme virtuelle lytter.
- **Eliminering av enkeltpunkt for feil (SPOF):** Så lenge ikke alle reléøkter brytes samtidig, avbrytes ikke applikasjonens `Accept()`-løkke.
- **Ende-til-ende-kryptering (E2EE):** Trafikken krypteres under videresending, slik at relé-serveren verken kan se inn i eller endre dataene.
- **Automatisk gjenoppkobling og selvhelbredning (Self-Healing):** Også ved midlertidige nettverksbrudd eller omstart av et relé gjenforhandles økter og tokener automatisk i bakgrunnen, og forbindelsen gjenopprettes.

## 3. Umiddelbar bruk med én CLI-kommando

Dersom du ikke arbeider med Go-kode, eller trenger en rask test, sender du bare portnummeret til CLI-et.

```sh
$ go install gosuda.org/portalite/cmd/portalite@latest && portalite expose --name "my-service" 3000
URL https://my-service.rly.best
URL https://my-service.s-h.day

```

Umiddelbart etter at kommandoen kjøres, utstedes URL-er for flere reléer, og tjenesten er straks tilgjengelig eksternt.

## 4. Lett, men kraftfull funksjonalitet

- **Minimale avhengigheter:** Ved å fjerne tredjepartsavhengigheter er binæren lett og byggingen rask.
- **Støtte for TLS og UDP:** Ikke bare TLS-trafikk som HTTP/gRPC, men også UDP-tjenester som spillservere kan enkelt eksponeres via QUIC-datagram-backhaul.

## Komme i gang

- GitHub-repositorium: [https://github.com/gosuda/portalite](https://github.com/gosuda/portalite)
- Go-pakke: `go get gosuda.org/portalite`
