Docs / Getting Started / Introduction

Introduction

sh0 is a self-hosted deployment platform that packages everything you need into a single binary. No YAML manifests, no container orchestration complexity -- just push your code and it runs.

What is sh0?

sh0 is a deployment platform you install on your own server. It handles the entire lifecycle of your applications -- from building source code into containers, to configuring reverse proxies with automatic SSL, to monitoring uptime and managing backups.

Unlike traditional PaaS solutions that require cloud accounts and monthly subscriptions, sh0 runs entirely on infrastructure you control. A single $5/month VPS is enough to get started, and the platform scales with you as your needs grow.

Who is sh0 for?
Developers, agencies, and teams who want the convenience of a managed platform without giving up control over their infrastructure. If you've ever deployed a Docker container manually and wished for a dashboard, sh0 is for you.

Single Binary Architecture

The entire sh0 platform ships as a single compiled Rust binary. There are no runtime dependencies beyond Docker -- no Node.js, no Python, no Java, no external databases to provision. The dashboard, API server, reverse proxy manager, build system, and monitoring engine are all compiled into one executable.

Architecture diagram showing the sh0 binary containing the API server, Svelte dashboard, Caddy proxy manager, Docker orchestrator, and SQLite database

This architecture means installation takes seconds, updates are a single file swap, and there are very few moving parts that can break in production.

Core Components

ComponentTechnologyRole
Core EngineRust + AxumAPI server, build orchestration, deployment logic
Reverse ProxyCaddyHTTPS termination, automatic Let's Encrypt, routing
Container RuntimeDocker EngineBuilding images, running containers, networking
DatabaseSQLiteConfiguration, deployment history, metrics storage
DashboardSvelte 5 + SvelteKitWeb UI embedded in the binary, served on port 9000

What It Replaces

sh0 is designed to eliminate the need for cobbling together multiple tools to deploy applications on your own server. Here is what a typical self-hosted setup looks like before and after sh0:

Without sh0

  • -- Manual Docker commands per app
  • -- Nginx/Traefik config files to maintain
  • -- Certbot cron jobs for SSL renewal
  • -- Custom CI/CD pipelines for each project
  • -- Separate monitoring and alerting tools
  • -- Manual backup scripts

With sh0

  • + One binary, one command to install
  • + Automatic reverse proxy configuration
  • + Automatic SSL via Let's Encrypt
  • + Git push to deploy, built in
  • + Monitoring, metrics, and alerts included
  • + Scheduled backups to S3/R2

How It Works

When you run sh0 serve, the binary starts several subsystems:

  1. API Server -- An Axum HTTP server listens on port 9000, serving both the dashboard and the REST API.
  2. Caddy Manager -- sh0 launches and manages a Caddy instance as a child process, dynamically updating its configuration as you add domains.
  3. Docker Client -- Communicates with the Docker Engine via the Unix socket to build images, create containers, and manage networks.
  4. Background Workers -- Handles scheduled tasks like backup execution, health checks, SSL certificate renewal, and metric collection.
Diagram showing the request flow: user browser connects to Caddy on port 80/443, which routes to Docker containers, while the dashboard on port 9000 communicates with the sh0 API

Key Features

Git Push to Deploy

Connect a Git repository and deploy on every push. Supports GitHub, GitLab, Bitbucket, and any Git URL.

170+ Templates

One-click deployment for popular stacks -- WordPress, PostgreSQL, Redis, Ghost, Plausible, and more.

Automatic SSL

Every domain gets a free Let's Encrypt certificate, automatically provisioned and renewed by Caddy.

Blue-Green Deploys

Zero-downtime deployments with instant rollback. The old version stays running until the new one is healthy.

Database Management

Provision PostgreSQL, MySQL, MariaDB, MongoDB, or Redis with automated backups and connection string injection.

Multi-Server

Scale beyond a single server by adding remote nodes. sh0 deploys containers across your fleet via SSH tunnels.

Deployment Flow

Here is what happens when you deploy an application with sh0:

Deployment Pipeline
1. Source Code     -- Git clone or image pull
2. Stack Detection -- Auto-detect language and framework
3. Build           -- Generate Dockerfile, build container image
4. Health Check    -- Verify the new container starts and responds
5. Route           -- Update Caddy reverse proxy configuration
6. Live            -- Traffic flows to the new container
7. Cleanup         -- Remove old container (kept for rollback)
Note
sh0 automatically detects your project's stack (Node.js, Python, Go, Rust, PHP, Ruby, static sites, and more) and generates an optimized Dockerfile. You can also provide your own Dockerfile or Docker Compose file.

Next Steps

Ready to get started? Follow the installation guide to get sh0 running on your server in under a minute.