Hosting
that’s measured.
One command installs the panel on your server. Every site starts with its own cache, its own PHP, its own certificate, and backups that are test-restored after every copy.
Free · Source available · On your serversSimulation · a WordPress site under traffic
Cache: on- Cache
- HIT
- Site PHP
- idle
- Database
- idle
An illustration, not a measurement. The real numbers are in section 03.
- nginx
- PHP 8.5
- MariaDB
- APCu
- restic
- Let’s Encrypt
- WooCommerce
- WordPress
- Laravel
- systemd
The control a tutorial won’t give you.
Eight things you usually set up by hand, one evening at a time. Here they are on from the first site.
- Speed01
A page cache that aims
nginx serves pages without touching PHP. When you change a post or a price, only the pages that show it are purged.
- Isolation02
One PHP per site
Separate system user, PHP and database. A compromised site cannot see the others.
- Backups03
Restores already tested
Every copy goes, encrypted, where you choose, and is test-restored right after.
- Staging04
Try first, then measure
A password-protected copy. A release slower than production is stopped.
- HTTPS05
Certificates that renew
Let’s Encrypt, wildcards included, or your own certificates.
- File06
A real editor in the browser
It knows the language, uploads by dragging, and lets you download binaries.
- Database07
The database, inside the panel
Tables, data and SQL with the site’s own permissions only, no outside tools.
- Access08
Roles and two factors
Administrators, operators on their own sites, read-only. 2FA required if you want.
Stop renting your own server.
- A
Source available
Read every line that runs as root on your server. Change it if you need to.
- B
Yours to keep
No licence to renew, no fee per server. If the project stopped, the panel would keep working.
- C
No middleman
No account with us, no service in between. Backups go where you choose.
Measured, not promised.
Release v0.1.0 on a small VPS, under wrk: three runs per scenario, the mean shown here. The method and every single run are public.
| Scenario | Requests / s | Errors |
|---|---|---|
| Cached page 500 connections | 9,710 | 0 |
| Cached page 1 connection | 6,347 | 0 |
| Static file 1 KB, 200 connections | 15,478 | 0 |
| Browser-like traffic mixed headers and links, 200 connections | 9,641 | 0 |
| Without cache PHP + database, 10 connections | 6.8 | 0 |
- Server: 2 vCPU VPS · Ubuntu 26.04
- Site: WooCommerce, the shop page
- Load: wrk on the same server
- Measured: 11 October 2026
- The data ↗
- The method ↗
One command. Really.
- A freshly created Ubuntu 24.04 or 26.04 server, with root access.
- The command alongside. It checks the server before it touches anything.
- Open the one-time link, create the administrator, create the first site.
curl -fsSL https://get.cloudground.it | sudo bash
[ok] server checked: Ubuntu, memory, disk, ports
[ok] release signature verified
[ok] nginx · PHP-FPM · MariaDB · restic installed
[ok] panel running on https://<ip>:8443
→ create the administrator: https://<ip>:8443/setup/…
Output shortened. The full log stays in /var/log/cloudground-install.log.