UStackUStack
zero icon

zero

Despliega cualquier imagen Docker en tu servidor con un solo comando: HTTPS automático, conmutación sin cortes por health check, previews y rollback.

zero

¿Qué es zero (ShipZero)?

zero es un motor de despliegue para un solo servidor que ejecuta imágenes Docker en tu propia infraestructura. Proporciona un flujo de trabajo en línea de comandos para desplegar una imagen, aprovisionar HTTPS automáticamente y enrutar el tráfico tras un health check.

El propósito principal es eliminar tareas comunes de configuración para pasar de una imagen de contenedor a un endpoint en vivo, sin necesidad de archivos de configuración, interfaz web ni YAML. También soporta despliegues de preview y rollback con el mismo enfoque basado en comandos.

Características clave

  • Despliegue con 1 comando desde una imagen de contenedor: Despliega cualquier imagen Docker desde un registro (p. ej., ghcr.io/...) con zero deploy y detecta automáticamente el puerto de la aplicación.
  • HTTPS automático con redirecciones HTTP: Aprovisiona HTTPS mediante Let’s Encrypt y activa redirecciones HTTP → HTTPS como parte del flujo de despliegue.
  • Conmutación de tráfico sin cortes vía health checks: Inicia un nuevo contenedor en un puerto efímero, ejecuta un health check TCP o HTTP y solo cambia el tráfico si pasa la verificación.
  • Entornos de preview: Usa --preview <name> (ejemplo: pr-21) para crear un despliegue temporal con su propio subdominio; los previews expiran automáticamente.
  • Rollback instantáneo: zero rollback <app> inicia la imagen anterior, la verifica con health check y revierte el tráfico; si falla, no aplica cambios.
  • Métricas y logs en terminal en vivo: Transmite estadísticas de CPU, memoria y red a la terminal, y logs del servidor con zero logs --server.
  • Auto-despliegue por webhook: Verifica solicitudes firmadas con HMAC-SHA256 y activa despliegues desde eventos de registro; tags no coincidentes crean previews.
  • Soporte para Docker Compose en apps multi-contenedor: Despliega un archivo Docker Compose especificando el servicio principal y nombre, manejando pull, inicio, health check y enrutamiento.

Cómo usar zero

  1. Configura un servidor: Necesitas un VPS Linux y un dominio.
  2. Instala zero:
    • En el VPS: curl -fsSL https://shipzero.sh/install.sh | sudo bash
    • En tu máquina (CLI): curl -fsSL https://shipzero.sh/cli/install.sh | bash
  3. Conéctate vía SSH: zero login <email-o-identificador> (como se muestra: zero login [email protected]).
  4. Despliega una imagen: zero deploy <referencia-imagen> (ejemplo: zero deploy ghcr.io/shipzero/demo:latest).
  5. Verifica la salida: Tras los health checks, zero muestra la URL en vivo (basada en el dominio y puerto detectado).

Para previews, despliega con --preview (ejemplo: zero deploy demo --preview pr-21). Para rollbacks, ejecuta zero rollback <app>.

Casos de uso

  • Desplegar una web app Dockerizada única: Construye una imagen, súbela a un registro y ejecuta zero deploy <image>:latest para obtener un endpoint HTTPS con conmutación de tráfico verificada.
  • Enlaces de preview para pull requests: Crea un despliegue de preview por PR pasando --preview <identificador> y comparte la URL del subdominio con revisores.
  • Rollback seguro en lanzamientos: Si un nuevo contenedor falla health checks o se comporta mal, ejecuta zero rollback <app> para revertir sin downtime (el cambio solo ocurre tras health checks).
  • Despliegue continuo desde registros: Configura una URL y secreto de webhook, y deja que un POST firmado active despliegues; los tags pueden mapear a despliegues normales o previews.
  • Desplegar servicios multi-contenedor: Cuando una app usa Docker Compose, ejecuta zero deploy --compose <file> --service <name> --name <stack> para desplegar todos los servicios y enrutar tráfico al servicio principal.

Preguntas frecuentes

  • ¿Qué significa “sin cortes” aquí?
    El flujo inicia un nuevo contenedor, ejecuta un health check TCP o HTTP y solo entonces cambia las rutas de forma atómica. Si falla, el tráfico permanece en la versión anterior.

  • ¿Requiere zero archivos de config o YAML?
    La página indica que no hay archivos de config ni interfaz web, y que el flujo típico evita YAML.

  • ¿Cómo habilita zero el HTTPS?
    Aprovisiona HTTPS automáticamente con Let’s Encrypt y realiza redirecciones HTTP.

  • ¿Puedo desplegar múltiples contenedores, no solo una imagen?
    Sí. La página describe soporte para Docker Compose, pasando el archivo, un servicio principal y un nombre de despliegue.

  • ¿Cómo se crean y gestionan los previews?
    Los despliegues de preview se crean pasando --preview <name>, generando una URL de subdominio en vivo. La página indica que expiran automáticamente.

Alternativas

  • PaaS tradicional (platform-as-a-service): Estos servicios gestionan HTTPS, previews y flujos de despliegue, pero suelen ejecutarse en una plataforma en lugar de tu propio servidor; puedes sacrificar flexibilidad y el control de “poseer el servidor”.
  • Proxy inverso autogestionado + orquestación manual de contenedores: Puedes lograr HTTPS y enrutamiento similar con tus propias herramientas, pero el flujo de trabajo es más manual (tendrías que manejar inicio/parada de servicios, health checks, cambios de enrutamiento y certificados tú mismo).
  • Herramientas genéricas de despliegue de contenedores (orquestadores basados en CLI): Las herramientas que despliegan contenedores en un solo host pueden cubrir pasos similares, pero pueden requerir más archivos de configuración, enrutamiento personalizado o lógica manual de health check y rollback.
  • Kubernetes para despliegues multi-nodo: Si necesitas orquestación multi-nodo, RBAC o un dashboard web, Kubernetes está orientado a un caso diferente que un motor de despliegue de un solo servidor como zero.
zero | UStack