Aller au contenu
URLs des services Kit + http-PORT pour tout ce que vous bindez
HTTP/1.1 · HTTP/2 · HTTP/3 · WebSocket
TLS wildcard sur *.containers.hoody.com
Vraie IP client au niveau socket
Le proxy tourne sur votre bare-metal
Auth JWT · Basic · IP · Bearer
URLs des services Kit + http-PORT pour tout ce que vous bindez
HTTP/1.1 · HTTP/2 · HTTP/3 · WebSocket
TLS wildcard sur *.containers.hoody.com
Vraie IP client au niveau socket
Le proxy tourne sur votre bare-metal
Auth JWT · Basic · IP · Bearer
URLs des services Kit + http-PORT pour tout ce que vous bindez
HTTP/1.1 · HTTP/2 · HTTP/3 · WebSocket
TLS wildcard sur *.containers.hoody.com
Vraie IP client au niveau socket
Le proxy tourne sur votre bare-metal
Auth JWT · Basic · IP · Bearer
URLs des services Kit + http-PORT pour tout ce que vous bindez
HTTP/1.1 · HTTP/2 · HTTP/3 · WebSocket
TLS wildcard sur *.containers.hoody.com
Vraie IP client au niveau socket
Le proxy tourne sur votre bare-metal
Auth JWT · Basic · IP · Bearer
Hoody Platform

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

Un conteneur expose chaque service Hoody Kit sur sa propre URL HTTPS, plus un slug http-PORT pour tout ce que vous bindez vous-même. Ports, auth, TLS et vraies IPs client se résolvent tous à la couche URL.

Le proxy tourne sur votre bare-metal. Hoody voit les appels à l'API de management — le trafic des conteneurs ne quitte jamais votre serveur.

Keyspace 2^192Overhead sub-1msVraie IP au socket
https://PROJECT_ID-CONTAINER_ID-service-N.SERVER.containers.hoody.com
projectId
Identifiant projet 24-hex
containerId
identifiant de conteneur 24 hex
service
Slug du 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

Grammaire d'URL

Une grammaire, plusieurs patterns

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

Modèle
https://PROJECT_ID-CONTAINER_ID-slug.SERVER.containers.hoody.com
ServiceSlug d'URLNotes
Terminalterminal-NShell par instance ; mappe sur 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
Execexec-NScripts en APIs
Espaces de travailagent-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 ; le streaming est distribué dans Files/Terminal/Exec

Projet 24-hex × conteneur 24-hex = 2^192 combinaisons de paires. Infaisable en brute force.

Ports → URLs

Lancez un serveur sur n'importe quel port. Il reçoit une URL.

Les préfixes http-PORT routent le proxy vers le port interne de votre container. Aucun server block nginx. Aucun 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.containers.hoody.com

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

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

Les ports Hoody-kit sont réservés aux services propres de la plateforme ; tout le reste est à vous. Côté app, bind sur n'importe quel port et expose-le via http-PORT.

Les apps doivent bind sur 0.0.0.0, pas localhost — le socket doit être joignable depuis le conteneur du proxy.

Proxie 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.

Auth à la porte

L'auth est une policy JSON, pas du middleware applicatif.

Le proxy valide les claims JWT, les hashes de mots de passe, les ranges IP CIDR et les bearer tokens avant qu'une requête n'atteigne votre container. votre app reste vanilla.

PATCH /api/v1/containers/ID/proxy-permissions
{
  "project": "abc123",
  "container": "def456",
  "enable_proxy": true,
  "default": "deny",
  "groups": {
    "dashboard": {
      "type": "jwt",
      "algorithm": "HS256",
      "sources": ["header:Authorization"],
      "secret": "<hmac-secret>",
      "claims": { "role": ["admin", "viewer"] }
    },
    "office-only": {
      "type": "ip",
      "range": "203.0.113.0/24"
    }
  },
  "permissions": {
    "dashboard": { "ui": true, "terminal": [1, 2] },
    "office-only": { "ssh": true, "terminal": true }
  }
}
clientproxy (vérification policy)conteneur (HTTP standard)

JWT

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

Mot de passe

HTTP Basic · SHA-256 + salt · embeddable dans une URL

IP

Match IPv4 CIDR · vraie IP client au niveau socket

Bearer Token

Plusieurs tokens par groupe · API-friendly

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

Alias & domaines

Des URLs mémorisables au-dessus d'URLs cryptographiques

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

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

https://abc123-def456-http-4000.node-us-1.containers.hoody.com

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

https://myapp.node-us-1.containers.hoody.com

Routing par path
target_path + allow_path_override
expires_at
Accès limité dans le temps
Alias multi-service
Un alias → plusieurs programmes
Domaine custom
CNAME · Levous s Encrypt auto

Nommage d'alias : 3 à 61 caractères, alphanumérique minuscule 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.

Auto-hébergé vs Hoody Proxy

Ce que vous assembleriez sinon à la main

Le proxy remplace une stack que la plupart des équipes assemblent depuis zéro : reverse proxy + cert manager + VPN ou tunnel + auth par app + audit log. Les axiomes que la colonne self-hosted rate — URL-as-route, URL-as-auth-scope, URL-as-embeddable — sont ce que le proxy fournit nativement.

SujetHoody ProxyÉquivalent self-hosted
HTTPS wildcardsupporté nativementNatifcertbot + cron de renouvellement + rotation des certs
Routing vers port internesupporté nativementNatifserver block nginx par service
Vraie IP clientsupporté nativementNatifParser X-Forwarded-For dans chaque app
Auth JWT · Basic · IP · Tokensupporté nativementNatifMiddleware par app + libs de session
Domaine custom + TLSsupporté nativementNatifCloudflare / DNS-01 / reload nginx
Audit centralisé des requêtessupporté nativementNatifLogs nginx + log shipper + index
URLs embeddables en iframesupporté nativementNatifCORS / CSP / TLS manuels par app
Tourne sur votre matérielsupporté nativementNatifvous le faites tourner vous-même de toute façon

Si vous êtes déjà sur Kubernetes avec un ingress controller, sur Cloudflare Tunnels pour le SSO vers Okta, ou sur Tailscale pour l'accès privé L3, ces outils restent meilleurs pour leurs niches. Le proxy prend tout son sens quand vous voulez des services conteneur adressables par URL comme abstraction principale.

Ce que ça débloque

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

Tirés des patterns que les équipes livrent vraiment avec Hoody Proxy.

Livrer une API sans reverse proxy

Faites un bind sur 0.0.0.0:4000. Obtenez abc123-def456-http-4000.node-us-1.containers.hoody.com. Oubliez tout le cirque nginx, certificat et DNS.

Domaine custom avec TLS auto

POST /api/v1/proxy-aliases, mets un CNAME, et la première requête provisionne Levous s Encrypt en 30 à 60 secondes.

Blue/green via swap d'alias

Pointez api.company.com sur le conteneur B, testez, swap l'alias en arrière. Aucun reload de config, aucun downtime.

Donnez à un agent IA un conteneur à piloter

L'agent reçoit un JWT, le proxy valide à chaque requête, l'agent écrit des fichiers, lance des commandes, requête sqlite en HTTPS.

Sous-domaines SaaS multi-tenant

Un conteneur par tenant ; alias TENANT.yourapp.com. Isolation des tenants imposée à la couche URL.

Révocation instantanée

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

Démarrer

votre première URL est à un appel API près.

Créez un projet, créez un conteneur, et chaque service est déjà en ligne. Aucune infra à monter avant.

Guide Proxy

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