UStackUStack
zero icon

zero

Déployez n’importe quelle image Docker sur votre serveur en une commande : HTTPS automatique, bascule sans coupure avec health-check, preview & rollback.

zero

Qu'est-ce que zero (ShipZero) ?

zero est un moteur de déploiement mono-serveur pour exécuter des images Docker sur votre propre infrastructure. Il fournit un workflow en ligne de commande pour déployer une image, provisionner automatiquement HTTPS et router le trafic après un health check.

L'objectif principal est d'éliminer les tâches de configuration courantes entre une image conteneur et un endpoint live — sans fichiers de config, interface web ou YAML. Il supporte aussi les déploiements preview et les rollbacks via la même approche en commande.

Fonctionnalités clés

  • Déploiement en 1 commande depuis une image conteneur : Déploie n’importe quelle image Docker depuis un registre (ex. ghcr.io/...) avec zero deploy et gère la détection du port d’application.
  • HTTPS automatique avec redirects HTTP : Provisionne HTTPS via Let’s Encrypt et active les redirections HTTP → HTTPS dans le flux de déploiement.
  • Bascule de trafic sans coupure via health checks : Lance un nouveau conteneur sur un port éphémère, exécute un health check TCP ou HTTP, et ne bascule le trafic qu’en cas de succès.
  • Environnements preview : Utilisez --preview <name> (ex. pr-21) pour créer un déploiement temporaire avec son propre sous-domaine ; les previews expirent automatiquement.
  • Rollback instantané : zero rollback <app> relance l’image précédente, la health-check et bascule le trafic ; en cas d’échec, les changements ne sont pas appliqués.
  • Métriques et logs en terminal live : Diffuse CPU, mémoire et stats réseau en terminal, et peut diffuser les logs serveur avec zero logs --server.
  • Auto-déploiement via webhook : Vérifie les requêtes webhook signées avec HMAC-SHA256 et déclenche des déploiements depuis les événements de registre ; les tags non-matching créent des previews.
  • Support Docker Compose pour apps multi-conteneurs : Déploie un fichier Docker Compose en spécifiant le service d’entrée et le nom, tout en gérant pull, démarrage, health-check et routage.

Comment utiliser zero

  1. Préparez un serveur : Vous avez besoin d’un VPS Linux et d’un domaine.
  2. Installez zero :
    • Sur le VPS : curl -fsSL https://shipzero.sh/install.sh | sudo bash
    • Sur votre machine (CLI) : curl -fsSL https://shipzero.sh/cli/install.sh | bash
  3. Connectez-vous via SSH : zero login <email-ou-identifiant> (ex. : zero login [email protected]).
  4. Déployez une image : zero deploy <référence-image> (ex. : zero deploy ghcr.io/shipzero/demo:latest).
  5. Vérifiez la sortie : Après les health checks, zero affiche l’URL live (basée sur le domaine et le port d’app détecté).

Pour les previews, déployez avec --preview (ex. : zero deploy demo --preview pr-21). Pour les rollbacks, exécutez zero rollback <app>.

Cas d'usage

  • Déployer une web app Dockerisée unique : Construisez une image, pushez-la vers un registre, puis exécutez zero deploy <image>:latest pour obtenir un endpoint HTTPS avec bascule de trafic health-checkée.
  • Liens preview pour pull-requests : Créez un déploiement preview par PR avec --preview <identifiant> et partagez l’URL du sous-domaine avec les relecteurs.
  • Rollback sûr lors des releases : Si un nouveau conteneur échoue au health check ou se comporte mal, exécutez zero rollback <app> pour revenir en arrière sans downtime (bascule uniquement après health checks).
  • Déploiement continu depuis les registres : Configurez une URL et un secret webhook, puis laissez un POST signé déclencher les déploiements ; les tags peuvent mapper vers des déploiements normaux ou previews.
  • Déployer des services multi-conteneurs : Quand une app est décrite par Docker Compose, utilisez zero deploy --compose <fichier> --service <nom> --name <stack> pour déployer tous les services du fichier compose et router le trafic pour le service d’entrée.

FAQ

  • Que signifie « sans coupure » ici ?
    Le flux décrit lance un nouveau conteneur, exécute un health check TCP ou HTTP, puis bascule les routes de manière atomique. En cas d’échec, le trafic reste sur la version précédente.

  • zero nécessite-t-il des fichiers de config ou YAML ?
    La page indique aucun fichier de config, aucune interface web et qu’il évite le YAML dans le workflow typique.

  • Comment zero active HTTPS ?
    Il provisionne HTTPS automatiquement via Let’s Encrypt, et effectue aussi les redirections HTTP.

  • Puis-je déployer plusieurs conteneurs, pas juste une image unique ?
    Oui. La page décrit le support Docker Compose, où vous passez le fichier compose, un service d’entrée et un nom de déploiement.

  • Comment créer et gérer les previews ?
    Les déploiements preview sont créés avec --preview <name>, aboutissant à une URL de sous-domaine live. La page note que les previews expirent automatiquement.

Alternatives

  • PaaS traditionnel (platform-as-a-service) : Ces services gèrent HTTPS, previews et flux de déploiement, mais tournent généralement sur une plateforme plutôt que sur votre propre serveur ; vous sacrifiez souvent flexibilité et contrôle « propriétaire du serveur ».
  • Reverse proxy auto-géré + orchestration manuelle de conteneurs : Vous pouvez obtenir un HTTPS et un routage similaires avec vos propres outils, mais le workflow est plus manuel (vous gérez démarrage/arrêt des services, health checks, swaps de routage et certificats vous-même).
  • Outils génériques de déploiement de conteneurs (orchestrateurs basés CLI) : Les outils qui déploient des conteneurs sur un hôte unique couvrent des étapes similaires, mais nécessitent souvent plus de fichiers de configuration, routage personnalisé ou logique manuelle de health check et rollback.
  • Kubernetes pour déploiements multi-nœuds : Si vous avez besoin d’orchestration multi-nœuds, RBAC ou tableau de bord web, Kubernetes est une alternative distincte d’un moteur de déploiement mono-serveur comme zero.
zero | UStack