Sh0
All Sh0 articles.
Domar Caddy como reverse proxy programatico
Como convertimos Caddy en un reverse proxy completamente programatico gestionado via su API Admin, con SSL automatico, sincronizacion de rutas y recuperacion ante caidas.
El bug de 16 KB: como un buffer de pipe congelo toda nuestra plataforma
Un buffer de pipe de 16 KB causaba que Caddy se congelara cada 5 minutos. La historia de depuracion de un clasico deadlock de pipe Unix que nos llevo de la confusion a un arreglo de 5 lineas.
SSL automatico: DNS, ACME y certificados personalizados
Como sh0 gestiona certificados SSL automaticamente via la integracion ACME de Caddy, soporta subidas de certificados personalizados con claves privadas cifradas con AES-256-GCM, y configura DNS para despliegues auto-hospedados.
Auth en Rust: Argon2id, JWT, TOTP y claves API
Construyendo un sistema de autenticacion completo en Rust: hashing de contrasenas Argon2id, tokens JWT HS256, 2FA TOTP con codigos de respaldo, generacion de claves API y cifrado AES-256-GCM.
Auditamos nuestra propia plataforma y encontramos 88 problemas de seguridad
Realizamos 4 auditorias de seguridad exhaustivas en nuestro propio PaaS y encontramos 88 problemas -- 9 criticos, 12 altos, 45 medios. Aqui esta cada hallazgo, cada correccion y lo que aprendimos.
Migracion de tokens en localStorage a cookies HTTP-Only
Como migramos la autenticacion de sh0 de tokens JWT en localStorage a cookies HTTP-only con proteccion CSRF de doble envio -- y por que toda herramienta auto-hospedada deberia hacer lo mismo.
Prevencion de inyeccion de comandos en un PaaS
Un PaaS ejecuta comandos proporcionados por el usuario por diseno. Asi es como construimos validate_command() para prevenir inyeccion shell en tareas cron, hooks de despliegue y Docker exec -- sin romper los casos de uso legitimos.
Construir un dashboard de produccion con Svelte 5 en 48 horas
Como construimos el dashboard de produccion de sh0 -- temas oscuro/claro, i18n en 5 idiomas, logs WebSocket en tiempo real y 7 paginas principales -- usando Svelte 5 runes y TailwindCSS 4 en 48 horas.
De listas planas a Stacks: redisenar toda nuestra UX
Tiramos nuestra interfaz de listas planas de apps/bases de datos y reconstruimos alrededor de stacks por proyecto con una doble sidebar, navegacion contextual y secciones estilo cPanel. Aqui esta el por que y el como.
El Deploy Hub: 183 opciones, una pagina
Como construimos un hub de despliegue estilo Softaculous con 183 opciones en 5 categorias, 7 componentes de formulario y una UX de panel dividido que hace que desplegar cualquier cosa se sienta como un clic.
Terminal web y explorador de archivos en un PaaS autoalojado
Cómo construimos un terminal basado en navegador (xterm.js + WebSocket + Docker exec) y un explorador de archivos estilo Docker Desktop con mkdir, edición y eliminación -- funciones que la mayoría de PaaS autoalojados no ofrecen.
Logs en tiempo real: streaming WebSocket desde contenedores Docker
Cómo construimos streaming de logs en tiempo real desde contenedores Docker al navegador usando WebSocket, con autenticación JWT, reconexión automática y un visor estilo terminal.