Sh0
All Sh0 articles.
La CLI de sh0: 10 comandos que replican el panel
Como construimos la CLI de sh0 con 10 comandos que replican cada accion del panel -- desplegar, logs, variables de entorno, verificaciones de salud y SSH a contenedores -- usando clap, reqwest y tokio-tungstenite.
Aplicacion de licencias: Free, Pro, Business -- Restringiendo funcionalidades en Rust
Como implementamos un sistema de licencias de 3 niveles en un PaaS auto-alojado -- nivel gratuito generoso, restriccion de funcionalidades en Rust, indicaciones de actualizacion en el panel, y las decisiones de precios detras de todo.
14 dias, 105 sesiones, 1 CTO de IA: La historia completa de la construccion de sh0.dev
La historia completa de la construccion de sh0.dev -- un PaaS de nivel produccion con 488 tests, 119 plantillas, 25 herramientas MCP y un asistente de IA -- en 14 dias desde Abidjan con cero ingenieros humanos.
119 plantillas de un clic: de WordPress a Ollama
Cómo construimos un sistema de plantillas basado en YAML con sustitución de variables, ordenamiento de dependencias y 119 plantillas listas para producción que cubren bases de datos, CMS, IA/ML y más.
Multi-servidor BYOS: túneles SSH, transferencia de imágenes y Trust On First Use
Cómo construimos el soporte multi-servidor para sh0: túneles SSH a sockets Docker remotos vía russh, transferencia de imágenes basada en disco, verificación de clave de host Trust On First Use y despliegue consciente de nodos.
Despliegues bleu-vert: construir un pipeline de cero downtime en Rust
El pipeline de despliegue en 8 pasos que impulsa sh0: clonar, analizar, construir, desplegar, health check, enrutar, intercambiar y limpiar -- con intercambios de contenedores bleu-vert y gestion automatica de disco.
Los bugs que casi nos destruyen
Fallos en git pull, CSRF bloqueando subidas, procesos obsoletos de Caddy, incompatibilidades FTP con IPv6 y alias de red Docker -- los bugs que casi descarrilaron sh0 y como los solucionamos.
Escribir un cliente Docker Engine desde cero en Rust
Por que escribimos un cliente personalizado de la API Docker Engine usando hyper y sockets Unix en lugar de invocar el CLI de Docker, y el parseo de flujos multiplexados que lo hizo funcionar.
34 reglas para detectar errores de despliegue antes de que ocurran
Construimos un motor de analisis estatico en Rust puro con 34 reglas en 8 categorias para detectar problemas de seguridad, errores de configuracion y errores de despliegue antes de que lleguen a produccion.
Dia Cero: 10 crates Rust en 24 horas
Como montamos una plataforma PaaS completa -- 10 crates Rust, 24 tablas de base de datos, cliente Docker Engine, servidor API, motor de build y health checks -- en un solo dia.
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.
i18n desde el día uno: 5 idiomas en 105 sesiones
Por qué construimos sh0 con soporte para 5 idiomas desde la primera sesión del panel, y cómo mantuvimos la ortografía correcta en inglés, francés, español, portugués y suajili a lo largo de 105 sesiones de desarrollo.