Présentation de Portalite : un client open-source ultra-léger et un SDK permettant d'ajouter des portails Ingress à votre application
En présentant préalablement Portal, nous avons abordé les problématiques du Web moderne. Avec l'émergence des outils de codage basés sur l'IA, n'importe qui peut créer un site Web, mais sa publication effective au monde entier demeure le domaine exclusif des grandes plateformes et du cloud. Portal est un projet qui dissocie l'hébergement Web de la création de contenu et restitue aux individus le droit de publication en connectant les services locaux personnels au monde entier par l'intermédiaire d'un relais chiffré de bout en bout.
Présentation de Portalite
Aujourd'hui, j'annonce la sortie de Portalite. Portalite est un client Portal ultra-léger doté de dépendances minimales ainsi qu'un SDK Go.
Si Portal représente la philosophie consistant à « transformer le Web », Portalite constitue l'adhésif le plus fin permettant d'appliquer cette philosophie aux applications des développeurs. Sans configuration complexe du cloud ni pipeline de déploiement, les développeurs peuvent importer le SDK et ajouter seulement quelques lignes de code pour intégrer un ingress Portal dans leur application. Dès l'exécution de l'application, le serveur qui résidait uniquement en local devient un service public accessible depuis n'importe quel endroit sur Internet.
1. Un Ingress public en deux lignes de code
Portalite prend en charge net.Listener, qui est l'interface standard de Go. Il suffit de remplacer le listener du code de serveur ou du framework Web existant pour qu'il fonctionne immédiatement.
1identity, err := portalite.GenerateIdentity("my-service")
2
3listener, err := portalite.Expose(ctx, portalite.ExposeConfig{
4 Relays: portalite.DefaultRelays(),
5 Identity: identity,
6})
7
8http.Serve(listener, handler)
- Sans configuration (Zero-config) : Aucune redirection de port, IP fixe ou configuration de règles de pare-feu entrantes n'est requise.
- Compatible avec les standards : Il est 100 % compatible avec toutes les bibliothèques Go utilisant un
net.Listenerstandard, telles quehttp.Server,grpc.Server, Gin, Echo et Chi.
2. Le cœur du système : Liaison multi-relais simultanée (Multi-Relay Binding)
Étant donné que la plupart des outils de tunneling dépendent d'un point de terminaison unique, l'interruption du serveur de relais entraîne également celle du service. Portalite fonctionne en se connectant simultanément à plusieurs serveurs de relais.
- Isolation des pannes sans interruption (Failover) : Si certains relais tombent en panne ou subissent une latence réseau, les autres relais actifs continuent d'acheminer le trafic via le même listener virtuel.
- Suppression du point de défaillance unique (SPOF) : À moins que toutes les sessions de relais ne soient interrompues simultanément, la boucle
Accept()de l'application ne s'arrête pas. - Chiffrement de bout en bout (E2EE) : Le trafic étant relayé de manière chiffrée, le serveur de relais ne peut ni consulter ni altérer les données.
- Reconnexion automatique et auto-rétablissement (Self-Healing) : En cas de coupure temporaire du réseau ou de redémarrage d'un relais, les sessions et les jetons sont automatiquement re-négociés en arrière-plan afin de rétablir la connexion.
3. Utilisation immédiate avec une seule commande CLI
S'il ne s'agit pas de code Go ou si un test rapide s'avère nécessaire, il suffit de transmettre le numéro de port via la CLI.
1$ go install gosuda.org/portalite/cmd/portalite@latest && portalite expose --name "my-service" 3000
2URL https://my-service.rly.best
3URL https://my-service.s-h.day
4
Dès l'exécution de la commande, des URL multi-relais sont émises et l'état devient immédiatement accessible de l'extérieur.
4. Fonctionnalités légères mais puissantes
- Dépendances minimales : L'élimination des dépendances tierces rend le binaire léger et la compilation rapide.
- Prise en charge de TLS et UDP : Outre le trafic TLS tel que HTTP/gRPC, les services UDP tels que les serveurs de jeux peuvent également être facilement exposés via le backhaul de datagrammes QUIC.
Pour commencer
- Répertoire GitHub : https://github.com/gosuda/portalite
- Paquet Go :
go get gosuda.org/portalite