How to install a web hosting panel on a Hetzner VPS in 10 minutes
A step-by-step guide: spin up a Hetzner Cloud server, install ShadowPanel with one command, create your first site with automatic Let's Encrypt SSL, and point your domain.
You don't need managed hosting to run sites professionally. With a €4-ish Hetzner Cloud server and an open-source control panel, you get your own multi-site host — SSL, email, DNS and all — in about ten minutes. Here's the whole flow with ShadowPanel.
What you'll need
- A Hetzner Cloud account
- A domain name you can edit DNS for
- 10 minutes
Minimum server: Ubuntu 24.04 LTS, 1 GB RAM (2 GB recommended), 10 GB disk. A Hetzner CX22 is a comfortable starting point.
Step 1 — Create the server
In the Hetzner Cloud console, create a new server:
- Image: Ubuntu 24.04
- Type: CX22 (2 vCPU, 4 GB RAM) or larger
- SSH key: add yours so you can log in without a password
Note the server's public IPv4 address — you'll need it twice.
Step 2 — Install ShadowPanel (one command)
SSH in as root and run the installer:
ssh root@YOUR_SERVER_IP
curl -fsSL https://shadowpanel.de/install.sh | bash
The installer asks for two things — your panel domain (e.g. panel.example.com) and an admin email — then provisions the whole stack for you: Nginx, multi-version PHP-FPM, PostgreSQL, MariaDB, Redis, Certbot, BIND9, Postfix/Dovecot and the firewall. Every secret is generated automatically. When it finishes it prints your admin login.
Step 3 — Log in
Open the panel on port 2087:
https://YOUR_SERVER_IP:2087
Log in with the admin credentials printed by the installer. (Your browser will warn about the self-signed certificate on the raw IP — that's expected until you point the panel domain in Step 5.)
Step 4 — Create your first site
In the panel: Sites → New site, enter your domain (e.g. example.com), pick a PHP version, and create it. ShadowPanel sets up the Nginx vhost, an isolated Linux user and a PHP-FPM pool automatically.
Once your domain's DNS points at the server (next step), enable SSL on the site — ShadowPanel requests a free Let's Encrypt certificate and renews it automatically. No manual certbot, no cron to babysit.
Step 5 — Point your domain
At your DNS provider, add A records to your server's IP:
| Type | Name | Value |
|---|---|---|
| A | panel |
YOUR_SERVER_IP |
| A | @ |
YOUR_SERVER_IP |
| A | www |
YOUR_SERVER_IP |
DNS can take a few minutes to a few hours to propagate. Once panel.example.com resolves, reload the panel there and issue its SSL — now the panel itself is on a trusted certificate.
FAQ
Which ports need to be open? 22 (SSH), 80 and 443 (your sites + Let's Encrypt), and 2087 (the panel). The installer configures UFW; if you also enable the Hetzner Cloud Firewall, allow the same ports there.
How do I update later? One command:
sudo bash /opt/shadowpanel/deploy/update.sh
Hosted sites stay online during the update.
Is it free? Yes — the Free tier runs up to 3 sites with no credit card. Pro and Agency add Git deploy, Docker, staging, automated backups and white-label/reseller under a flat licence (no per-server fees).
That's it
A fresh Hetzner box becomes a real, SSL-secured multi-site host in about ten minutes. Get started free → and if you get stuck, email support@shadowpanel.de — we answer.