Stop configuring. Start shipping.

Deploy any Docker image to your own server with a single command. Automatic HTTPS, zero-downtime, preview deployments. No config files. No platform fees.

$ zero deploy ghcr.io/shipzero/demo:latest

✓ Deploying ghcr.io/shipzero/demo:latest
✓ Pulling image done
✓ Detected port: 3000
✓ Starting container done
✓ Health check passed

🚀 Your app is live: https://demo.example.com

Write a Dockerfile. Configure nginx. Set up Certbot. Write deploy scripts. Debug firewall rules. Pray nothing breaks.

Or just type zero deploy.

Command to deploy 0 Config files 0 Downtime $0 Platform fees

Features

See it in action.

Every feature is a single command. No config files, no web UI, no YAML.

$ zero deploy ghcr.io/shipzero/demo:latest

✓ Deploying ghcr.io/shipzero/demo:latest
✓ Pulling image done
✓ Detected port: 3000
✓ Starting container done
✓ Health check passed

🚀 Your app is live: https://demo.example.com

$ zero deploy demo --preview pr-21

✓ Deploying ghcr.io/shipzero/demo:pr-21
✓ Pulling image done
✓ Starting container done
✓ Health check passed
✓ Preview is live: https://preview-pr-21.demo.example.com

$ zero rollback demo

✓ Deploying ghcr.io/shipzero/demo:v1.2.0
✓ Pulling image done
✓ Starting container done
✓ Health check passed

🚀 Your app is live: https://demo.example.com

$ zero metrics demo
demo

cpu     ██████░░░░░░░░░░░░░░  28.3%
  memory  ████████████░░░░░░░░  312 MB / 512 MB (60.9%)
  net ↓   1.2 MB/s
  net ↑   340 KB/s
$ zero webhook url demo

URL: https://example.com/webhooks/demo
Secret: a1b2c3d4e5f6...

Configure both in GitHub/Docker Hub.

Push an image → zero deploys it.

$ zero deploy \ 
  --compose docker-compose.yml \ 
  --service web --name mystack

✓ Deploying compose
✓ Pulling images done
✓ Starting services done
✓ Health check passed

🚀 Your app is live: https://mystack.example.com

Deploy anything

Give it a Docker image. zero detects the port, assigns a domain, provisions HTTPS, and routes traffic. One command, nothing to configure.

Automatic HTTPS via Let's Encrypt. HTTP redirects. Zero-downtime — health-checked before traffic switches.

Preview environments

Add --preview pr-21 and get a temporary deployment with its own subdomain. Share the link, review, merge. Previews expire automatically.

Every PR gets a live URL. No infrastructure changes needed.

Instant rollback

Something wrong? One command. The previous image is started, health-checked, and traffic is swapped. If the health check fails, nothing changes.

No downtime. No manual intervention. No second-guessing.

Live metrics

CPU, memory, and network stats streamed to your terminal in real time. No Grafana dashboard to set up. No Datadog bill to worry about.

Works for apps and previews. Stream server logs with zero logs --server.

Webhook auto-deploy

Push to your container registry and zero deploys it automatically. HMAC-SHA256 verified. Non-matching tags create preview deployments.

A single signed POST triggers a deploy. Works with GitHub Actions, Docker Hub, or any CI system.

Docker Compose

Multi-container apps with one command. Upload your Compose file, specify the entry service, and zero handles the rest — pulling, starting, health-checking, routing.

How it works

Every deploy. Same four steps.

Predictable, atomic, safe. If anything fails, traffic stays on the previous version.

01

Pull

Image pulled from the registry with stored credentials

02

Start

New container on an ephemeral port. Old one keeps serving.

03

Health check

TCP or HTTP check. Fails? New container is discarded.

04

Swap

Route updated atomically. Old container removed. Done.

Quickstart

Five minutes. Not five hours.

A Linux VPS and a domain. That's the entire requirements list.

01
Set up the server

On your VPS

$ curl -fsSL https://shipzero.sh/install.sh \| sudo bash

02
Install the CLI

On your machine

$ curl -fsSL https://shipzero.sh/cli/install.sh \| bash

03
Connect via SSH

On your machine

$ zero login root@example.com

04
Deploy

On your machine

$ zero deploy ghcr.io/shipzero/demo:latest

✓ Your app is live: https://demo.example.com

Why zero

Platform DX. Self-hosting price.

You own the server. zero handles everything else.

The old way PaaS
Setup Minutes
HTTPS Automatic
Previews Yes
Lock-in Yes
Any image Limited
Config Required
Cost $$$
The hard way DIY
Setup Hours
HTTPS Manual
Previews Build it
Lock-in No
Any image Yes
Config Lots
Cost $
The right way zero
Setup Minutes
HTTPS Automatic
Previews One flag
Lock-in None
Any image Yes
Config None
Cost Free + your VPS

zero is a single-server deployment engine.
One server, any number of apps. If you need multi-node orchestration, team RBAC, or a web dashboard — zero is not the right tool. And that's by design.

Your server. Your rules.

Install zero and ship your first app in minutes. Open source and MIT licensed.

$ curl -fsSL https://shipzero.sh/install.sh \| sudo bash