Aller au contenu
accueil / plateforme / proxy
Hoody Platform

Chaque service est une URL. Le proxy, c'est comment.

Un conteneur expose chaque service Hoody Kit à sa propre URL HTTPS, plus un slug http-PORT pour tout ce que vous liez vous-même. Les ports, l'auth, TLS et les vraies IP client se résolvent au niveau URL.

Le proxy s'exécute sur votre bare metal. Hoody voit les appels à l'API de gestion — le trafic des conteneurs ne quitte jamais votre serveur.

Espace de clés 2^192surcharge inférieure à 1 msIP réelle au socket
https://PROJECT_ID-CONTAINER_ID-service-N.SERVER.containers.hoody.com
projectId
Identifiant de projet 24 hex
containerId
Identifiant de conteneur 24 hex
service
Slug de service Kit (terminal, display, files…)
instance
1, 2, 3… pour les services qui en supportent plusieurs
serverName
Votre serveur bare metal

*.containers.hoody.com — wildcard TLS · no Certificate Transparency log exposure

accueil / plateforme / proxy / grammar
Grammaire URL

Une grammaire, de nombreux motifs

Chaque service Kit se résout via le même proxy, mais le slug URL révèle ce qu'il est. Même grammaire, forme différente par service.

Motif
https://PROJECT_ID-CONTAINER_ID-slug.SERVER.containers.hoody.com
ServiceSlug URLNotes
Workspacesworkspace-NCouche de composition au-dessus d'autres URLs de service
Terminalterminal-NShell par instance ; correspond à display-N
Displaydisplay-NBureau GUI / X11 par instance
Browserbrowser-NInstance Chrome distante
Codecode-NInstance VS Code par index
FilesfilesSingleton — pas d'index d'instance
SQLitesqlite-NUn slug par service de base de données
Execexec-NScripts en tant qu'APIs
Agentagent-NInstance LLM par agent
cURLcurl-NProxy HTTP sortant
Daemonhoody-daemon-NGestionnaire de processus
Cron— (via cURL aujourd'hui)Service placeholder ; la planification vit dans cURL
Notificationsn-N · notification-server-NPont navigateur + API
Pipe— (via d'autres services)Service placeholder ; streaming distribué entre Files/Terminal/Exec

Projet 24 hex × conteneur 24 hex = 2^192 combinaisons de paires. Impossible à forcer par brute-force.

accueil / plateforme / proxy / ports
Ports → URLs

Lancez un serveur sur n'importe quel port. Il obtient une URL.

Les préfixes http-PORT routent le proxy vers le port interne de votre conteneur. Pas de bloc serveur nginx. Pas de YAML d'ingress.

À l'intérieur du conteneur

# listening sockets

$ ss -ltnp

 

LISTEN0.0.0.0:4000node server.js(react-dev)
LISTEN0.0.0.0:5173vite(admin-ui)
LISTEN0.0.0.0:7070python api.py(payments)
URL publique

https://PROJECT_ID-CONTAINER_ID-http-4000.SERVER.containers.hoody.com

https://PROJECT_ID-CONTAINER_ID-http-5173.SERVER.containers.hoody.com

https://PROJECT_ID-CONTAINER_ID-http-7070.SERVER.containers.hoody.com

Les ports Hoody-kit sont réservés pour les propres services de la plateforme ; tout le reste est le vôtre. Du côté app, liez sur n'importe quel port et exposez-le via http-PORT.

Les apps doivent se lier à 0.0.0.0, pas à localhost — le socket doit être accessible depuis le conteneur proxy.

Proxifie HTTP/1.1, HTTP/2, HTTP/3 et WebSocket de bout en bout. L'UDP utilisateur arbitraire n'est pas routé — utilisez une IPv4 dédiée si vous avez besoin d'UDP brut.

accueil / plateforme / proxy / auth
Auth à la porte

L'auth est une politique JSON, pas un middleware d'application.

Le proxy valide les claims JWT, les hachages de mots de passe, les plages IP CIDR et les bearer tokens avant qu'une requête atteigne votre conteneur. Votre app reste vanilla.

PATCH /api/v1/containers/ID/proxy-permissions
{
  "enable_proxy": true,
  "default": "deny",
  "groups": {
    "dashboard": {
      "type": "jwt",
      "algorithm": "HS256",
      "source": "header",
      "key": "Authorization",
      "secret": "<hmac-secret>",
      "claims": { "role": ["admin", "viewer"] }
    },
    "office-only": {
      "type": "ip",
      "cidrs": ["203.0.113.0/24"]
    }
  },
  "permissions": {
    "dashboard": { "http": [4000, 5173] },
    "office-only": { "ssh": true, "terminal": true }
  }
}
clientproxy (vérification de politique)conteneur (HTTP vanilla)

JWT

HS256 · RS256 · ES256 · header / cookie / query · validation des claims

Mot de passe

HTTP Basic · SHA-256 + sel · intégrable dans l'URL

IP

Correspondance IPv4 CIDR · IP client réelle au niveau socket

Bearer Token

Plusieurs tokens par groupe · compatible API

Les permissions au niveau conteneur remplacent les permissions au niveau projet — elles ne fusionnent pas. Définissez explicitement les deux portées si vous comptez sur l'héritage.

accueil / plateforme / proxy / aliases
Alias & domaines

URLs mémorables au-dessus des URLs cryptographiques

Un appel API transforme l'URL crypto en api.macompagnie.com. Let's Encrypt provisionne en 30 à 60 secondes ; renouvelle tous les 90 jours.

Généré à la création du conteneur

https://67e89abc…-890abcdef…-http-4000.node-us.containers.hoody.com

POST /api/v1/proxy-aliases
CNAME vers votre serveur · Let's Encrypt auto

https://api.mycompany.com

Routage de chemin
target_path + allow_path_override
expires_at
Accès à durée limitée
Alias multi-service
Un alias → plusieurs programmes
Domaine personnalisé
CNAME · Let's Encrypt auto

Nommage des alias : 3 à 61 caractères, alphanumériques minuscules plus tirets, doit commencer et finir par une lettre ou un chiffre. Les alias auto-générés sont en hex 48 caractères.

accueil / plateforme / proxy / vs
Hébergé soi-même vs Hoody Proxy

Ce que vous auriez sinon à assembler

Le proxy remplace une pile que la plupart des équipes assemblent from scratch : reverse proxy + gestionnaire de certificats + VPN ou tunnel + auth par app + journal d'audit. Les axiomes que la colonne auto-hébergée échoue à respecter — URL-comme-route, URL-comme-portée-d'auth, URL-comme-intégrable — sont ce que le proxy fournit nativement.

ProblématiqueHoody ProxyÉquivalent auto-hébergé
HTTPS wildcardsupporté nativementNatifcertbot + cron de renouvellement + rotation de cert
Routage vers port internesupporté nativementNatifBloc serveur nginx par service
IP client réellesupporté nativementNatifParser X-Forwarded-For par app
Auth JWT · Basic · IP · Tokensupporté nativementNatifMiddleware par app + libs de session
Domaine personnalisé + TLSsupporté nativementNatifCloudflare / DNS-01 / rechargement nginx
Audit centralisé des requêtessupporté nativementNatifLogs nginx + expéditeur de logs + index
URLs intégrables en iframesupporté nativementNatifCORS / CSP / TLS manuel par app
S'exécute sur votre hardwaresupporté nativementNatifVous le gérez vous-même de toute façon

Si vous êtes déjà sur Kubernetes avec un contrôleur d'ingress, Cloudflare Tunnels pour le SSO vers Okta, ou Tailscale pour l'accès privé L3, ces outils restent meilleurs pour leurs niches spécifiques. Le proxy trouve sa place quand vous voulez des services de conteneurs adressables par URL comme abstraction principale.

accueil / plateforme / proxy / build
Ce que cela débloque

Six workflows que le modèle URL-first rend triviaux

Tirés des patterns que les équipes déploient réellement avec Hoody Proxy.

Déployer une API sans reverse proxy

Liez à 0.0.0.0:4000. Obtenez http-4000.SERVER.containers.hoody.com. Évitez l'orchestration nginx, cert et DNS.

Domaine personnalisé avec TLS auto

POST /api/v1/proxy-aliases, définissez un CNAME, et la première requête provisionne Let's Encrypt en 30 à 60 secondes.

Blue/green via swap d'alias

Pointez api.company.com vers le conteneur B, testez, remettez l'alias. Pas de rechargement de config, pas d'interruption.

Donner à un agent IA un conteneur à piloter

L'agent obtient un JWT, le proxy valide par requête, l'agent écrit des fichiers, exécute des commandes, interroge sqlite via HTTPS.

Sous-domaines SaaS multi-tenant

Un conteneur par tenant ; alias TENANT.votrapp.com. L'isolation des tenants appliquée au niveau URL.

Révocation instantanée

Un appel DELETE au Control Plane et l'URL est morte en une seconde. Pas d'empoisonnement de cache.

accueil / plateforme / proxy / start
Démarrer

Votre première URL est à un appel API.

Créez un projet, créez un conteneur, et chaque service est déjà en ligne. Pas d'infrastructure à monter au préalable.

Guide proxy

Voir aussi — /platform/control-plane pour les APIs d'alias proxy, de permissions et de logs.