Sh0

All Sh0 articles.

Thales & Claude sh0

Construire un tableau de bord de production avec Svelte 5 en 48 heures

Comment nous avons construit le tableau de bord de production de sh0 -- thèmes sombre/clair, i18n en 5 langues, logs WebSocket en temps réel, et 7 pages principales -- avec Svelte 5 runes et TailwindCSS 4 en 48 heures.

4 min Mar 26, 2026
sveltesvelte-5dashboardtailwindcss +3
Thales & Claude sh0

Prévention de l'injection de commandes dans un PaaS

Un PaaS exécute des commandes fournies par l'utilisateur par conception. Voici comment nous avons construit validate_command() pour empêcher l'injection shell dans les tâches cron, les hooks de déploiement et Docker exec.

4 min Mar 26, 2026
securitycommand-injectionrustpaas +2
Thales & Claude sh0

Migration des jetons localStorage vers les cookies HTTP-Only

Comment nous avons migré l'authentification de sh0 des jetons JWT en localStorage vers des cookies HTTP-only avec protection CSRF en double soumission.

4 min Mar 26, 2026
securitycookiescsrfauthentication +3
Thales & Claude sh0

Nous avons audité notre propre plateforme et trouvé 88 problèmes de sécurité

Nous avons mené 4 audits de sécurité complets sur notre propre PaaS et trouvé 88 problèmes -- 9 critiques, 12 élevés, 45 moyens. Voici chaque découverte, chaque correctif, et ce que nous avons appris.

5 min Mar 26, 2026
securityauditrustvulnerability +3
Thales & Claude sh0

Auth en Rust : Argon2id, JWT, TOTP et clés API

Construire un système d'authentification complet en Rust : hachage de mots de passe Argon2id, jetons JWT HS256, 2FA TOTP avec codes de secours, génération de clés API et chiffrement AES-256-GCM.

6 min Mar 26, 2026
authrustargon2idjwt +4
Thales & Claude sh0

SSL automatique : DNS, ACME et certificats personnalisés

Comment sh0 gère les certificats SSL automatiquement via l'intégration ACME de Caddy, supporte les uploads de certificats personnalisés avec chiffrement AES-256-GCM des clés privées, et configure le DNS pour les déploiements auto-hébergés.

8 min Mar 26, 2026
sslacmednscaddy +3
Thales & Claude sh0

Moteur de sauvegarde : AES-256-GCM, 13 fournisseurs de stockage, et cauchemars FTP

Construction d'un moteur de sauvegarde avec stockage pluggable, chiffrement AES-256-GCM, 13 fournisseurs de stockage via OpenDAL -- et le bug FTP IPv6 qui nous a forcés à écrire notre propre client.

2 min Mar 26, 2026
backupencryptionstorageopendal +4
Thales & Claude sh0

Monitoring et alertes : Email, Slack, Discord, Telegram, Webhooks

Construction d'un système de monitoring avec collecte périodique de statistiques Docker, évaluation d'alertes basée sur des seuils, et dispatch multi-canal.

1 min Mar 26, 2026
monitoringalertsmetricsslack +4
Thales & Claude sh0

OpenAPI comme source unique de vérité : docs, outils MCP et playground

Comment nous avons utilisé utoipa pour auto-générer une spécification OpenAPI 3.1 depuis les annotations de handlers Rust, puis utilisé cette spécification pour la documentation API, un playground interactif et les définitions d'outils MCP.

1 min Mar 26, 2026
openapiutoiparustdocumentation +3
Thales & Claude sh0

Le bug de 16 Ko : comment un buffer de pipe a figé toute notre plateforme

Un buffer de pipe de 16 Ko causait le gel de Caddy toutes les 5 minutes. L'histoire du débogage d'un deadlock classique de pipe Unix qui nous a menés de la confusion à un correctif de 5 lignes.

10 min Mar 26, 2026
debuggingcaddyunixpipe-buffer +3
Thales & Claude sh0

Déploiements bleu-vert : construire un pipeline zéro-downtime en Rust

Le pipeline de déploiement en 8 étapes qui propulse sh0 : clone, analyse, build, déploiement, health check, routage, swap et nettoyage -- avec des swaps de conteneurs bleu-vert et une gestion automatique du disque.

13 min Mar 26, 2026
deploymentblue-greenrustdocker +3
Thales & Claude sh0

Dompter Caddy comme reverse proxy programmatique

Comment nous avons transformé Caddy en reverse proxy entièrement programmatique piloté via son API Admin, avec SSL automatique, synchronisation des routes et récupération après crash.

11 min Mar 26, 2026
caddyreverse-proxysslrust +2