All Plans

Deploy Docker Compose files instantly

Paste or upload your docker-compose.yml. sh0 parses services, resolves dependencies, provisions volumes, and deploys everything as a stack -- in seconds.

Full Compose support

Every feature of docker-compose.yml parsed, validated, and deployed -- no compromises.

Full YAML parsing
Supports docker-compose.yml and compose.yml with v2/v3 syntax
Dependency resolution
Topological sort with circular dependency detection
Port parsing
Handles 8080:3000, protocol suffixes, host bindings
Environment normalization
Map and list formats, .env file references
Memory limits
Converts 512m, 1g, 2048m to container constraints
Volume auto-provisioning
Named and anonymous volumes created automatically

How it works

01

Paste your compose file

Paste your docker-compose.yml directly into the dashboard editor, or upload a YAML file from your machine.

02

Validate

sh0 checks syntax, resolves service dependencies, detects port conflicts, and flags circular references -- before anything runs.

03

Deploy

Services are created in topological order. Volumes are provisioned. Environment variables are injected. Everything starts in the right sequence.

04

Route

Caddy auto-configures domains and provisions SSL certificates for every exposed service. Live URLs in seconds.

The deploy pipeline

Parse YAML
Validate & Resolve
Provision Volumes
Create Containers
Start in Order
Configure Routes

From YAML to live URLs -- fully automated, no shell access needed

Everything you need

Validate before deploy

Dry-run API checks your compose file for syntax errors, missing images, port conflicts, and circular dependencies -- without starting anything.

Variable overrides

Override any environment variable at deploy time from the dashboard. No need to edit the YAML or manage .env files on the server.

Topological startup order

Services start in dependency order. If A depends on B and B depends on C, sh0 starts C, then B, then A. Every time.

Automatic volume management

Named volumes are created automatically. Bind mounts are mapped. No manual docker volume create needed.

Encrypted secrets

Sensitive environment variables are stored encrypted with AES-256-GCM. Never exposed in logs or the dashboard.

170 ready-made templates

WordPress, PostgreSQL, Redis, Plausible, Gitea, and 163 more. One-click deploy from the template gallery.

The old way

  • x SSH into server, install Docker Compose plugin
  • x Create and manage .env files manually
  • x Run docker compose up -d and hope for the best
  • x Manually configure nginx reverse proxy
  • x Set up certbot for SSL certificates
  • x Debug port conflicts and startup order issues

The sh0 way

  • Paste YAML in dashboard, click Deploy
  • Override variables in the UI, no .env files
  • Validation catches errors before deploy
  • Caddy auto-configures reverse proxy
  • SSL certificates provisioned automatically
  • Dependency-ordered startup, every time

Questions & answers

Which Compose versions are supported? +
sh0 supports both v2 and v3 syntax, including the modern compose.yml format without a version key. If Docker Compose can parse it, sh0 can too.
How does depends_on work? +
sh0 performs a topological sort on the dependency graph and starts services in the correct order. If a circular dependency is detected, the deploy is rejected with a clear error message showing the cycle.
Can I use .env files? +
Yes. You can reference env_file entries in your compose file, or override any variable directly in the dashboard at deploy time. sh0 merges both sources with dashboard overrides taking precedence.
What happens if a circular dependency is detected? +
The deploy is blocked before any container starts. sh0 returns the exact cycle (e.g., A -> B -> C -> A) so you can fix the dependency chain in your compose file.

From compose file to production in seconds

Paste your YAML, validate, deploy. Live URLs with SSL, zero configuration. Start with 170 ready-made templates.