
Soixante conteneurs sur un seul serveur
Une machine bare-metal exécute des dizaines à des centaines de conteneurs Hoody. La dédupplication KSM et BTRFS rend le coût marginal quasi nul.
hoody-pipe sert déjà un formulaire d'upload web sur chaque chemin qu'il possède. Glissez un fichier sur la page, les octets traversent le pipe et arrivent dans le stdin de votre script. Vous n'avez écrit aucune ligne de code d'upload.
Déposez un fichier ou cliquez pour uploader
toute taille · tout typepas de code d'upload, pas de bucket S3, pas d'URL pré-signée
hoody-pipe exécute une UI web à la racine du chemin et un fallback sans JavaScript sur /noscript. Tous les deux diffusent les octets multipart directement vers quiconque lit le même chemin. Votre script lit le pipe — c'est tout le câblage qu'il y a.
https://pipe.hoody.com/uploadTout chemin que vous n'avez pas réservé devient un pipe. L'URL est la page d'upload.
GET /upload — formulaire d'upload servi automatiquementHoody sert le formulaire pour vous : zone de dépôt, parser multipart, nonce CSP, tout est inclus. /noscript existe pour les navigateurs restreints.
PUT /api/v1/pipe/upload (multipart/form-data)La première partie multipart est extraite et diffusée vers le destinataire. Pas de staging côté serveur, pas de fichiers temporaires.
curl …/api/v1/pipe/upload | python process.pyDestinataire et expéditeur se connectent dans un TTL de 5 minutes. Le script ne sait pas qu'il est derrière une page web — il lit simplement les octets.
Le pipe est le serveur d'upload. Votre script est le destinataire. Il n'y a pas de troisième processus — pas de Lambda, pas d'API gateway, pas de fonction de glue — entre la zone de dépôt et votre stdin.
Chaque élément ci-dessous représente une journée normale de travail pour construire un uploader ponctuel. Le pipe livre tout cela.
L'UI du pipe affiche une zone de glisser-déposer, un fallback de sélection au clic et un retour de progression. /noscript sert un formulaire HTML pur pour les navigateurs sans JS — même chemin, pas de code supplémentaire.
Quand le navigateur envoie en POST multipart/form-data, le serveur extrait la première partie et la diffuse. Pas de bufferisation du body, pas de nettoyage de fichiers temporaires, pas de bibliothèque multipart de dix lignes.
Le formulaire est livré avec un nouveau nonce CSP. Les types de contenu dangereux (text/html, image/svg+xml, application/javascript) sont réécrits en text/plain avant de vous parvenir. OPTIONS gère le preflight cross-origin.
Lancez votre script avant qu'on n'uploade, ou après — le pipe maintient la connexion jusqu'à un TTL de 5 minutes jusqu'à ce que les deux extrémités soient présentes. Le nombre de destinataires (n) est configurable jusqu'à 256.
Côte à côte : le pipeline d'upload que vous auriez construit, comparé à l'URL que vous pointez vers votre script.
Vous avez écrit le script. Hoody a écrit le formulaire d'upload.
process.py — lire stdin, faire le travail
while read chunk; do …la page, le formulaire, le parser, la sécurité
GET /upload — servi automatiquementLes patterns vers lesquels les développeurs se tournent quand ils ont besoin d'un upload de fichier ponctuel. Chacun impose une taxe de mise en place — buckets à provisionner, middleware à installer, clés de signature à faire tourner. Le pipe est une URL.
Choisissez un chemin. Lisez le pipe. Le formulaire d'upload est déjà en ligne à cette URL.