---
id: 33b4cfbec34c4d839daf853bf4a39b3e
author: Lemon Mint
title: 'Portalite: lekki Portal Go SDK oparty na wielorelayowym wiązaniu i standardowym net.Listener'
description: Lekki klient Portal oraz interfejs CLI, który obsługuje zgodny ze standardowym interfejsem net.Listener w języku Go, jednoczesne wiązanie z wieloma przekaźnikami (relay), szyfrowanie端到端 (E2EE) oraz automatyczne odzyskiwanie sesji.
language: pl
date: 2026-08-26T14:05:55.212694445Z
path: /portalite
go_package: gosuda.org/portalite
go_repourl: https://github.com/gosuda/portalite.git
category: network
---

Wcześniej, przedstawiając [Portal](https://github.com/gosuda/portal), poruszyliśmy problem współczesnej sieci. Wraz z pojawieniem się narzędzi do kodowania wspomaganego AI każdy może stworzyć stronę internetową, lecz samo jej udostępnienie światu nadal pozostaje domeną wielkich platform i chmur. Portal oddziela hostowanie w sieci od tworzenia treści i łączy lokalne usługi jednostki z całym światem za pośrednictwem szyfrowanego end-to-end przekaźnika, zwracając jednostkom prawo do udostępniania ich z powrotem w ich własne ręce.

## Przedstawiamy Portalite

Dziś mam przyjemność zaprezentować [Portalite](https://github.com/gosuda/portalite). Portalite to **ultralekki klient Portal oraz SDK dla Go, zbudowany z minimalną liczbą zależności**.

Jeśli Portal jest filozofią tego, jak zmienić sieć, to Portalite jest najcieńszym spoiwem łączącym tę filozofię z aplikacjami deweloperów. Deweloper nie potrzebuje skomplikowanej konfiguracji chmury ani potoku wdrożeniowego: wystarczy zaimportować SDK i dodać kilka linijek kodu, aby umieścić portalowy ingress w swojej aplikacji. Gdy aplikacja zostaje uruchomiona, serwer, który dotąd żył wyłącznie lokalnie, staje się publicznie dostępną usługą, osiągalną z dowolnego miejsca w Internecie.

## 1. Publiczny Ingress gotowy w dwóch linijkach kodu

Portalite obsługuje [`net.Listener`](https://pkg.go.dev/net#Listener), standardowy interfejs Go. Wystarczy zastąpić listener w istniejącym frameworku webowym lub kodzie serwera, aby rozwiązanie zadziałało natychmiast.

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

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

http.Serve(listener, handler)
```

- **Zero-config:** nie są wymagane żadne przekierowania portów, stałe adresy IP ani reguły przychodzące zapory sieciowej.
- **Zgodność ze standardem:** w pełni kompatybilny z `http.Server`, `grpc.Server`, Gin, Echo, Chi oraz każdą biblioteką Go korzystającą ze standardowego `net.Listener`.

## 2. Kluczowa cecha: jednoczesne wiązanie z wieloma przekaźnikami (Multi-Relay Binding)

Większość narzędzi tunelujących opiera się na pojedynczym punkcie końcowym, dlatego awaria serwera przekaźnikowego powoduje również przerwanie usługi. **Portalite działa, łącząc się jednocześnie z wieloma serwerami przekaźnikowymi.**

- **Bezprzerwowa izolacja awarii (Failover):** jeśli część przekaźników przestanie działać lub wystąpią opóźnienia sieciowe, pozostałe aktywne przekaźniki nadal przesyłają ruch do tego samego wirtualnego listenera.
- **Eliminacja pojedynczego punktu awarii (SPOF):** dopóki wszystkie sesje przekaźników nie zostaną jednocześnie przerwane, pętla `Accept()` aplikacji nie zostaje zatrzymana.
- **Szyfrowanie end-to-end (E2EE):** ruch jest szyfrowany podczas przekazywania, więc serwery przekaźnikowe nie mogą odczytać ani zmodyfikować danych.
- **Automatyczne ponowne połączenie i samonaprawa (Self-Healing):** nawet w przypadku chwilowego zerwania sieci lub ponownego uruchomienia przekaźnika, sesje i tokeny są automatycznie renegocjowane w tle, co przywraca połączenie.

## 3. Natychmiastowe użycie jednym poleceniem CLI

Jeśli nie tworzysz kodu w Go lub potrzebujesz szybkiego testu, wystarczy przekazać numer portu do CLI.

```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

```

Natychmiast po uruchomieniu polecenia zostają wygenerowane adresy URL z wieloma przekaźnikami i usługa staje się dostępna z zewnątrz.

## 4. Lekkość i potężne funkcje

- **Minimalna liczba zależności:** dzięki ograniczeniu zewnętrznych zależności plik binarny jest lekki, a kompilacja szybka.
- **Obsługa TLS i UDP:** oprócz ruchu TLS, takiego jak HTTP/gRPC, można także łatwo udostępniać usługi UDP, na przykład serwery gier, za pośrednictwem tunelowania datagramów QUIC.

## Rozpoczęcie pracy

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