---
id: 33b4cfbec34c4d839daf853bf4a39b3e
author: Lemon Mint
title: 'Portalite: lehký Portal Go SDK s vícenásobnou relay vazbou a standardním net.Listener'
description: Lehký klient Portal a CLI, který podporuje standardní rozhraní net.Listener jazyka Go, současné vázání na více relé, end-to-end šifrování (E2EE) a automatické obnovení relace.
language: cs
date: 2026-08-26T14:05:55.212694445Z
path: /portalite
go_package: gosuda.org/portalite
go_repourl: https://github.com/gosuda/portalite.git
category: network
---

Dříve jsme při představování [Portalu](https://github.com/gosuda/portal) hovořili o problémech moderního webu. S nástupem nástrojů pro AI kódování může dnes každý vytvořit webovou stránku, avšak její zveřejnění na internetu zůstává výsadou velkých platforem a cloudových služeb. Portal odděluje hostování webu od tvorby obsahu a prostřednictvím end-to-end šifrovaných relé propojuje lokální služby jednotlivců s celým světem, a tím vrací jednotlivcům právo služby zveřejňovat.

## Představujeme Portalite

Dnes představuji [Portalite](https://github.com/gosuda/portalite). Portalite je **ultralehký klient Portalu a zároveň Go SDK vytvořené s minimální mírou závislostí**.

Pokud je Portal filozofií o tom, „jak změnit web“, pak Portalite je nejtenčím lepidlem, které tuto filozofii připojuje k aplikacím vývojářů. Vývojář nepotřebuje složitou konfiguraci cloudu ani deployment pipeline; stačí importovat SDK a přidat několik řádků kódu, a aplikace získá portal ingress. Ve chvíli, kdy aplikace spustí, se server, který dosud existoval pouze lokálně, stane veřejnou službou dostupnou odkudkoli na internetu.

## 1. Veřejný Ingress hotový v několika řádcích kódu

Portalite podporuje standardní rozhraní Go [`net.Listener`](https://pkg.go.dev/net#Listener). Stačí nahradit listener ve stávajícím webovém frameworku nebo serverovém kódu a funguje okamžitě.

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

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

http.Serve(listener, handler)
```

- **Nulová konfigurace (Zero-config):** Není nutné nastavovat přesměrování portů, pevnou IP adresu ani pravidla příchozího firewallu.
- **Standardní kompatibilita:** Plně kompatibilní se všemi knihovnami Go, které používají standardní `net.Listener`, včetně `http.Server`, `grpc.Server`, Gin, Echo a Chi.

## 2. Jádro: souběžné vázání na více relé (Multi-Relay Binding)

Většina tunelovacích nástrojů závisí na jediném koncovém bodu, a proto při výpadku relé server přestane fungovat i služba. **Portalite funguje tak, že je současně připojen k více relé serverům.**

- **Bezpřerušové oddělení chyb (Failover):** Pokud některá z více relé selže nebo dojde ke zpoždění sítě, zbývající funkční relé nadále přijímají provoz přes stejný virtuální listener.
- **Odstranění jediného bodu selhání (SPOF):** Dokud nejsou všechny relační session přerušeny současně, smyčka `Accept()` aplikace nepřestane fungovat.
- **End-to-end šifrování (E2EE):** Provoz je přenášen šifrovaně, takže relé server nemůže data číst ani měnit.
- **Automatické znovupřipojení a samoléčení (Self-Healing):** I při dočasném přerušení sítě nebo restartu relé na pozadí automaticky znovu vyjednává session a tokeny a obnovuje spojení.

## 3. Okamžité použití jediným příkazem CLI

Pokud nepracujete s kódem v Go nebo potřebujete rychlý test, stačí předat CLI pouze číslo portu.

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

```

Ihned po spuštění příkazu jsou vygenerovány URL adresy pro více relé a služba je okamžitě dostupná zvenku.

## 4. Lehké, ale výkonné funkce

- **Minimální závislosti:** Díky odstranění závislostí třetích stran je binární soubor lehký a sestavení rychlé.
- **Podpora TLS a UDP:** Kromě TLS provozu jako HTTP/gRPC lze prostřednictvím QUIC datagramového backhaulu snadno zpřístupnit i UDP služby, například herní servery.

## Začínáme

- Repozitář na GitHubu: [https://github.com/gosuda/portalite](https://github.com/gosuda/portalite)
- Balíček Go: `go get gosuda.org/portalite`
