Sh0
All Sh0 articles.
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.
Docker Compose en un PaaS: parsing, validación y despliegue
Cómo añadimos soporte para Docker Compose a sh0 -- parseando YAML de Compose v3, validando dependencias, detectando referencias circulares y desplegando stacks multi-servicio.
Motor de respaldos: AES-256-GCM, 13 proveedores de almacenamiento y pesadillas FTP
Construyendo un motor de respaldos con almacenamiento conectable, cifrado AES-256-GCM, 13 proveedores de almacenamiento vía OpenDAL -- y el bug de FTP IPv6 que nos obligó a escribir nuestro propio cliente.
Autoescalado en Rust: umbrales de CPU, enfriamientos y balanceo de carga
Cómo construimos escalado horizontal con balanceo de carga Caddy, gestión de contenedores réplica y un autoescalador que evalúa umbrales de CPU/memoria con enfriamientos configurables.
Cron Jobs y entornos de vista previa: dos funcionalidades, cero tiempo de inactividad
Cómo construimos la programación de cron jobs con imposición de timeout y entornos de vista previa con integración de webhooks de PR -- desarrollados en paralelo usando aislamiento con git worktree.