Websites and PHP
In preview
nginx sites with a PHP-FPM pool per account and PHP version. Every configuration change is validated, swapped in atomically, health-checked and rolled back if anything fails.
Built and lab-tested
- Static, PHP and reverse-proxy sites, with addon domains, subdomains, aliases and parked domains. International names are stored as punycode and shown as written.
- One PHP-FPM master per account and PHP version, running as the account's own Linux user inside its own systemd slice. PHP comes from the distribution or the Ondřej Surý repository (pinned key).
- Layered configuration: global, server, plan, reseller, account, site. A layer can lock a setting so lower layers cannot change it, and the panel shows which layer set every value.
- Custom nginx snippets are read by a real tokenizer and checked against an allow-list, with the line number of anything refused.
include, load_module, Lua andfastcgi_passare never accepted from customers. - Each change renders a new configuration generation, runs
nginx -tandphp-fpm -ton the exact files, swaps a symlink, health-checks every changed site and flips back on failure. The last 30 generations stay available for one-click rollback. - Create, update, delete and rollback can run as a dry run that returns the per-file diff.
- Isolation:
open_basedirto the home, per-account PHP sockets,disable_symlinks if_not_owneron every server block, root-owned logs, and proxy sites refused for private addresses unless the admin allows it.
Coming soon
- Node.js, Python, Ruby, Go, Java, .NET, Deno, Bun, Elixir and Rust apps through mise, with framework presets.
- Git deploys with atomic releases, cron jobs and queue workers.
- WordPress toolkit: staging, cloning, updates and hardening.
- More web servers as drivers: Angie, OpenLiteSpeed, Apache and Caddy.
- A web application firewall per site (Coraza with the OWASP Core Rule Set).
Dedicated screens for this area are being built on the RespireCloud design system. Today every action has a generated form in the panel, is one keystroke away in the command palette (Ctrl K), and is callable through the API.