Deploy across multiple servers
Register remote nodes via SSH. Build once, deploy anywhere. sh0 handles image transfer, routing, and health monitoring across your entire fleet.
Everything you need for multi-server
Register nodes, transfer images, route traffic, and monitor health -- all from one dashboard.
How it works
Register a node
Enter the SSH credentials for your remote server -- hostname, port, user, and private key or password. sh0 tests the connection immediately.
Build your app
The Docker build happens on your main sh0 server, exactly like a single-server deployment. No tooling needed on the remote node.
Transfer the image
sh0 exports the image as a tar archive and streams it to the remote node over SSH. The remote Docker daemon loads it automatically.
Route traffic
Caddy is auto-configured to proxy incoming requests to the remote container. HTTPS certificates are provisioned on the main server as usual.
The multi-server architecture
Build centrally, deploy to any node, route automatically -- no orchestration framework required
Built for production fleets
Fleet-wide dashboard
See all your nodes and their containers in one place. Filter by status, sort by resource usage, drill into individual nodes.
Health monitoring
Heartbeat every 30 seconds. If a node goes offline, sh0 marks it immediately. Re-deploy to a healthy node in one click.
Secure by default
SSH keys are encrypted at rest. Connections use standard SSH protocol. No agents or daemons to install on remote servers.
Node draining
Set a node to "draining" to stop new deployments while existing containers finish gracefully. Then decommission safely.
Any Linux server
Works with any server running Docker and SSH. Ubuntu, Debian, CentOS, Fedora, Alpine -- any provider, any datacenter.
Resource-aware placement
View CPU, memory, and disk stats per node before deploying. Place workloads where capacity is available.
The old way
- x Write Ansible playbooks for each server
- x Install Docker manually on every node
- x Push images to a private registry
- x Configure load balancer per service
- x Set up monitoring on each node separately
- x SSH into servers to debug issues
The sh0 way
- Register node with SSH credentials
- Docker is the only prerequisite
- Direct image transfer, no registry
- Caddy routes traffic automatically
- Heartbeat + stats for all nodes
- Manage everything from one dashboard
Questions & answers
What operating systems are supported on remote nodes? +
What SSH key formats are supported? +
Is there a maximum number of nodes? +
What happens if a remote node goes offline? +
Scale beyond a single server.
Register your servers, deploy from one interface, and let sh0 handle routing and monitoring across your fleet.