Server Setup
Before starting sh0, you only need to do two things: set your server's hostname and point your DNS to it. sh0 handles everything else.
Start with a Clean Server
sh0 is designed to be installed on a fresh server. It manages Docker, Caddy, and all networking automatically. Using a clean server avoids conflicts with existing services on ports 80 and 443.
sh0 serve as root, it detects missing dependencies and installs them for you.Set the Hostname
Set your server's hostname to match the domain you will use for the sh0 dashboard. This ensures SSL certificates and reverse proxy routing work correctly.
# Set the hostname (replace with your actual domain)
sudo hostnamectl set-hostname panel.example.comThen update /etc/hosts so the server can resolve its own hostname:
# Add this line (use your server's public IP)
203.0.113.10 panel.example.comVerify the hostname is set:
hostname -f
# Should output: panel.example.comConfigure DNS
In your DNS provider (Cloudflare, Namecheap, Route 53, etc.), create two A records pointing to your server's IP address:
| Type | Name | Value | Purpose |
|---|---|---|---|
| A | panel.example.com | Your server IP | sh0 dashboard |
| A (wildcard) | *.example.com | Your server IP | Deployed apps get automatic subdomains |
*.example.com) lets sh0 automatically assign subdomains like myapp.example.com to each deployed app. Without it, you will need to create individual DNS records for each app.Start sh0
Once your hostname and DNS are configured, start sh0 with your domain:
sh0 serve --panel-domain panel.example.com --base-domain example.comOn first run, sh0 will:
- Detect and install Docker Engine if missing
- Detect and install Caddy (reverse proxy) if missing
- Initialize the database and generate encryption keys
- Start the dashboard on port 9000
- Provision SSL certificates via Let's Encrypt
What sh0 Installs Automatically
When running as root on Linux, sh0 serve automatically provisions these dependencies if they are not already present:
| Dependency | Install Method | Purpose |
|---|---|---|
| Docker Engine | get.docker.com | Container runtime for deployed apps |
| Caddy | Official APT repo or binary download | Reverse proxy with automatic SSL |
You can also run the provisioning checks without starting the server:
sh0 setup