Soixante conteneurs sur un seul serveur
Une seule machine bare-metal fait tourner des dizaines à des centaines de conteneurs Hoody. La déduplication 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 passent par le pipe et atterrissent dans le stdin de votre script. vous avez écrit zéro ligne de code d'upload.
Déposez un fichier ou cliquez pour uploader
n'importe quelle taille · n'importe quel typepas de code d'upload, pas de bucket S3, pas d'URL pré-signées
hoody-pipe fait tourner une UI web à la racine du chemin et un fallback sans JavaScript sur /noscript. Les deux streament les octets multipart directement vers qui 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 /api/v1/pipe — formulaire d'upload servi automatiquementHoody sert le formulaire pour vous : zone de dépôt, parser multipart, nonce CSP, tout inclus. /noscript existe pour les navigateurs restreints.
PUT /api/v1/pipe/upload (multipart/form-data)La première part multipart est dépaquetée et streamée vers le receiver. Pas de staging côté serveur, pas de fichiers temporaires.
curl …/api/v1/pipe/upload | python process.pyReceiver et sender se connectent dans une fenêtre TTL de 5 minutes. Le script ne sait pas qu'il est derrière une page web — il lit juste les octets.
Le pipe est le serveur d'upload. votre script est le receiver. 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 est une journée normale de travail à coder pour un uploader ponctuel. Le pipe livre tout ça.
L'UI du pipe rend une zone glisser-déposer, un fallback clic-pour-choisir, et un retour de progression. /noscript sert un formulaire HTML pur pour les navigateurs sans JS — même chemin, pas de code en plus.
Quand le navigateur POST en multipart/form-data, le serveur extrait la première part et la stream. Pas de bufferisation du body, pas de nettoyage de fichiers temporaires, pas de bibliothèque multipart de dix lignes.
Le formulaire embarque un nonce CSP frais. Les types de contenu dangereux (text/html, image/svg+xml, application/javascript) sont réécrits en text/plain avant de vous arriver. OPTIONS gère le preflight cross-origin.
Lancez votre script avant que quiconque 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 receivers (n) est configurable jusqu'à 256.
Côte à côte : le pipeline d'upload que vous auriez codé, contre l'URL que vous pointez sur votre script.
vous avez livré le script. Hoody a livré le formulaire d'upload.
process.py — lit stdin, fait le boulot
while read chunk; do …la page, le formulaire, le parser, la sécurité
GET /api/v1/pipe — servi automatiquementLes patterns que les développeurs dégainent quand ils ont besoin d'un upload de fichier ponctuel. Chacun facture une taxe d'install — buckets à provisionner, middlewares à 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à actif sur cette URL.