---
id: 33b4cfbec34c4d839daf853bf4a39b3e
author: Lemon Mint
title: 'Portalite: Лек Go SDK за Portal с мултирелейно свързване и съвместимост със стандартния net.Listener'
description: Лек клиент и CLI за Portal, който поддържа стандартния интерфейс net.Listener на Go, едновременно свързване към множество релета, криптиране от край до край (E2EE) и автоматично възстановяване на сесии.
language: bg
date: 2026-08-26T14:05:55.212694445Z
path: /portalite
go_package: gosuda.org/portalite
go_repourl: https://github.com/gosuda/portalite.git
category: network
---

Преди това, представяйки [Portal](https://github.com/gosuda/portal), поставихме проблемите на съвременната мрежа. С появата на инструментите за програмиране с изкуствен интелект всеки може да създаде уебсайт, но публикуването му в света все още остава в изключителната област на големите платформи и облачните услуги. Portal отделя хостинга на мрежата от създаването на съдържание и чрез криптиран от край до край релей свързва локалните услуги на отделните хора със света, като по този начин връща правото на публикуване обратно на индивида.

## Представяме Portalite

Днес представям [Portalite](https://github.com/gosuda/portalite). Portalite е **ултралеков клиент за Portal и Go SDK, създаден с минимални зависимости**.

Ако Portal е философията за това как да се промени мрежата, то Portalite е най-тънкото свързващо звено, което прилага тази философия към приложението на разработчика. Разработчикът не се нуждае от сложна облачна конфигурация или конвейер за внедряване. Достатъчно е да импортира SDK и да добави няколко реда код, за да включи портален ingress в своето приложение. В мига, в който приложението стартира, сървърът, който е съществувал само локално, става публична услуга, достъпна от всяка точка на интернет.

## 1. Публичен Ingress с два реда код

Portalite поддържа [`net.Listener`](https://pkg.go.dev/net#Listener), стандартния интерфейс на Go. Достатъчно е да се замени слушателят в съществуващата уеб рамка или сървърен код, и той започва да работи незабавно.

```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):** Не са необходими пренасочване на портове, фиксиран IP адрес или правила за входящ трафик в защитната стена.
- **Стандартна съвместимост:** Напълно съвместим с `http.Server`, `grpc.Server`, Gin, Echo, Chi и всяка друга Go библиотека, която използва стандартния `net.Listener`.

## 2. Основното: едновременно свързване към множество релета (Multi-Relay Binding)

Повечето инструменти за тунелиране разчитат на една крайна точка, така че когато релейният сървър спре, услугата прекъсва заедно с него. **Portalite работи, като едновременно поддържа връзка с множество релейни сървъри.**

- **Непрекъсната изолация на отказите (Failover):** Ако някои от релетата спрат да работят или възникне мрежово забавяне, останалите активни релета продължават да приемат трафик през същия виртуален слушател.
- **Премахване на единична точка на отказ (SPOF):** Докато всички релейни сесии не прекъснат едновременно, цикълът `Accept()` на приложението не се прекъсва.
- **Криптиране от край до край (E2EE):** Трафикът се предава криптиран, поради което релейните сървъри не могат нито да разгледат, нито да променят данните.
- **Автоматично повторно свързване и самовъзстановяване (Self-Healing):** При временни мрежови прекъсвания или рестартиране на релета сесиите и токените се договарят автоматично отново във фонов режим, за да се възстанови връзката.

## 3. Незабавна употреба с една команда в CLI

Ако не работите с Go код или се нуждаете от бърз тест, достатъчно е да подадете номера на порта в 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

```

Веднага след изпълнението на командата се издават URL адреси за множество релета и услугата става достъпна отвън.

## 4. Лек, но мощен

- **Минимални зависимости:** Премахването на външни зависимости прави двоичния файл лек и изгражда бързо.
- **Поддръжка на TLS и UDP:** Освен TLS трафик като HTTP/gRPC, чрез QUIC датаграмен бекхаул можете лесно да публикувате и UDP услуги, например игрови сървъри.

## Начало

- GitHub хранилище: [https://github.com/gosuda/portalite](https://github.com/gosuda/portalite)
- Go пакет: `go get gosuda.org/portalite`
