---
id: 33b4cfbec34c4d839daf853bf4a39b3e
author: Lemon Mint
title: 'Portalite: Ein leichtgewichtiges Portal-Go-SDK mit Multi-Relay-Bindung und standardkonformem net.Listener'
description: Ein leichtgewichtiger Portal-Client und eine CLI, die das Go-Standardinterface net.Listener unterstützen sowie die gleichzeitige Bindung an mehrere Relais, Ende-zu-Ende-Verschlüsselung (E2EE) und die automatische Wiederherstellung von Sitzungen ermöglichen.
language: de
date: 2026-08-26T14:05:55.212694445Z
path: /portalite
go_package: gosuda.org/portalite
go_repourl: https://github.com/gosuda/portalite.git
category: network
---

Zuvor, als wir [Portal](https://github.com/gosuda/portal) vorstellten, sprachen wir über die Probleme des modernen Webs. Mit dem Aufkommen von KI-gestützten Programmierwerkzeugen kann zwar jeder eine Website erstellen, doch deren Veröffentlichung bleibt nach wie vor das exklusive Terrain großer Plattformen und Cloud-Anbieter. Portal trennt das Hosting des Webs von der Inhaltserstellung und verbindet lokale Dienste einzelner Personen über eine Ende-zu-Ende-verschlüsselte Relaisstruktur mit der ganzen Welt. Auf diese Weise wird das Recht zur Veröffentlichung wieder den Einzelnen übertragen.

## Wir stellen Portalite vor

Heute stelle ich [Portalite](https://github.com/gosuda/portalite) vor. Portalite ist ein **ultraleichter Portal-Client und Go-SDK, das mit minimalen Abhängigkeiten entwickelt wurde**.

Während Portal die Philosophie verkörpert, wie sich das Web verändern kann, ist Portalite der dünnste Klebstoff, der diese Philosophie in die Anwendungen von Entwicklern einbringt. Entwickler müssen weder komplexe Cloud-Konfigurationen noch Bereitstellungspipelines einrichten. Es genügt, das SDK zu importieren und wenige Zeilen Code hinzuzufügen, um ein Portal-Ingress in die eigene Anwendung zu integrieren. Sobald die Anwendung läuft, wird ein Server, der bisher nur lokal erreichbar war, zu einem öffentlichen Dienst, der aus dem gesamten Internet zugänglich ist.

## 1. Öffentlicher Ingress mit nur zwei Codezeilen

Portalite unterstützt die Go-Standardschnittstelle [`net.Listener`](https://pkg.go.dev/net#Listener). Es genügt, den Listener bestehender Web-Frameworks oder Servercode auszutauschen, und die Anwendung funktioniert sofort.

```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:** Portweiterleitung, feste IP-Adressen und eingehende Firewall-Regeln sind vollständig überflüssig.
- **Standardkompatibilität:** Vollständig kompatibel mit `http.Server`, `grpc.Server`, Gin, Echo, Chi und allen anderen Go-Bibliotheken, die den Standard-`net.Listener` verwenden.

## 2. Kernfunktion: Gleichzeitige Bindung an mehrere Relais (Multi-Relay Binding)

Die meisten Tunnelwerkzeuge sind auf einen einzigen Endpunkt angewiesen, sodass der Dienst mit dem Ausfall des Relaisservers ebenfalls unterbrochen wird. **Portalite arbeitet, indem es gleichzeitig mit mehreren Relais-Servern verbunden ist.**

- **Unterbrechungsfreie Fehlerisolierung (Failover):** Fallen einzelne Relais aus oder treten Netzwerkverzögerungen auf, nehmen die verbleibenden funktionsfähigen Relais den Datenverkehr weiterhin über denselben virtuellen Listener entgegen.
- **Beseitigung des Single Point of Failure (SPOF):** Solange nicht alle Relais-Sitzungen gleichzeitig abbrechen, wird die `Accept()`-Schleife der Anwendung nicht unterbrochen.
- **Ende-zu-Ende-Verschlüsselung (E2EE):** Der Datenverkehr wird verschlüsselt weitergeleitet, sodass Relais-Server die Daten weder einsehen noch manipulieren können.
- **Automatische Wiederverbindung und Selbstheilung (Self-Healing):** Auch bei vorübergehenden Netzwerkunterbrechungen oder einem Neustart des Relais werden Sitzungen und Token im Hintergrund automatisch neu ausgehandelt und die Verbindung wiederhergestellt.

## 3. Sofort einsatzbereit mit einer CLI-Zeile

Wenn kein Go-Code verwendet wird oder ein schneller Test benötigt wird, genügt es, der CLI lediglich die Portnummer zu übergeben.

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

```

Unmittelbar nach der Ausführung des Befehls werden URLs mehrerer Relais ausgegeben, und der Dienst ist sofort von außen erreichbar.

## 4. Leichtgewichtig und dennoch leistungsstark

- **Minimale Abhängigkeiten:** Durch den Verzicht auf Drittanbieter-Abhängigkeiten sind die Binärdateien schlank und der Build erfolgt schnell.
- **Unterstützung für TLS & UDP:** Neben TLS-Datenverkehr wie HTTP/gRPC lassen sich über QUIC-Datagramm-Backhaul auch UDP-Dienste wie Spielserver problemlos bereitstellen.

## Erste Schritte

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