A point-and-click way onto a proper VPS. CloudPanel gives you a clean web panel, and PageMotor gets the writable, correctly-owned filesystem it needs. One paste in the terminal to install the panel, then everything else is clicks.
pagemotor-db and pagemotor-user.pagemotor, then point the site at it: open the site, Settings, set Root Directory to yourdomain.com/pagemotor, Save.date.timezone to Europe/Berlin in every PHP version they ship, whatever region the box is in, and PageMotor 0.10's browser sign-in fails on any timezone ahead of UTC (cause 6b). Set date.timezone = UTC in /etc/php/8.3/fpm/php.ini and restart php8.3-fpm first, because CloudPanel bakes the value into each site at creation time. Forgot? It is editable per site under Settings → PHP Settings → Additional Configuration Directives.Spin up a VPS at any provider, Hetzner, DigitalOcean, Vultr or Hostinger, with at least 2 GB of RAM and a plain Ubuntu 22.04 or 24.04 image. CloudPanel wants a fresh box, so don't install anything else on it first.
On Hostinger you can skip the next step: at setup, choose the CloudPanel template instead of plain Ubuntu and the panel is installed for you. On any other host, do step 2.
SSH into the box as root and run these three lines. The install takes five to ten minutes, and it is the only time you touch the command line.
apt update && apt upgrade -y
curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh
sudo bash install.sh
When it finishes, open https://YOUR-SERVER-IP:8443 in your browser (expect a certificate warning the first time, that is normal on a raw IP) and create your admin account. From here on it is all panel.
In CloudPanel go to Sites → Add Site → Create a PHP Site, and set:
CloudPanel creates the Nginx vhost, the PHP-FPM pool, and the document root at /home/<site-user>/htdocs/<domain>/.
Go to Databases → Add Database. Give it a name, a database user and a password, and note all three, PageMotor needs them in a moment. CloudPanel runs MySQL / MariaDB, which PageMotor is happy with.
/home/<site-user>/htdocs/<domain>/) using CloudPanel's File Manager, or SFTP with the site-user login.config-sample.php to config.php and fill in the database name, user and password from step 4. (From PageMotor 0.11 you can skip this: browse to the site's /admin/ and the Install Wizard asks for the values and writes config.php itself.) Either way, make /admin/ the first page you open on a brand-new install.root:root with no group write, PHP cannot save a thing, and it looks exactly like a PageMotor fault. Run chown -R <site-user>:<site-user> . in the docroot after extracting and the problem never existed.PageMotor routes every request through index.php, so the vhost needs the standard front-controller rewrite. Current CloudPanel renders two server blocks per site: a front one on 80/443 that terminates TLS and proxies to a PHP backend on port 8080, and the backend itself. The rewrite already ships in the backend block on current builds, so open the site's Vhost tab and check the 8080 server block carries:
try_files $uri $uri/ /index.php?$args;
If it is there, leave it alone. On an older single-server vhost (one server block, with the location ~ \.php$ handler in it), make sure the main location block reads location / { try_files $uri $uri/ /index.php?$query_string; }. Either way, that line is the difference between clean PageMotor URLs and a wall of 404s.
Point your domain's DNS at the server's IP first (an A record) and wait for it to resolve. Then in the site go to SSL/TLS → Actions → New Let's Encrypt Certificate, add your domain, and Create and Install. CloudPanel issues and renews the certificate for you.
The most common PageMotor “bug” is a design that won't apply: you save it, nothing changes, no error. Nine times out of ten that is a host refusing to let PHP write the compiled stylesheet to disk (more on what hosts block in the shared-hosting guide).
On a CloudPanel VPS that is gone by construction. It is a real server with a normal, writable filesystem, the site files are owned by the user PHP runs as, and nothing firewalls PHP from doing its job. PageMotor compiles its CSS, writes it, and serves it, exactly as it is meant to.
PageMotor speaks MCP natively, so once your site is up you can connect Claude Code or Claude.ai to it and let Claude build pages, manage content and run plugins for you. The connection asks a little more of a host than serving pages does. Four things must be true: the Authorization header must reach PHP intact, PageMotor must be allowed to answer its dynamic /.well-known/ routes itself, PHP's clock must be on UTC, and nothing may redirect Claude's POST to /mcp (the trailing-slash trap).
You do not need to test any of that by hand. Install EP Host Check and read its MCP / Claude connection rows: since v1.2.0 its five checks cover all of this from your admin panel, no working Claude connection required, each with a plain fix. If a row fails, or the connection misbehaves anyway, the MCP troubleshooting guide has the exact diagnostic and fix for every verified cause.
/.well-known/ fall through to the filesystem for Let's Encrypt, which swallows the OAuth discovery routes Claude follows to sign in. And because that block sits in the front server, where there is no PHP at all, the fix on CloudPanel must proxy_pass the rest of /.well-known/ to the site's 8080 backend rather than try_files it. Section 6d of the troubleshooting guide has the exact blocks, verified on a clean box; apply them through the site's Vhost tab so renewal cannot revert them.fastcgi_param HTTPS "on", so PageMotor builds its URLs as https through the internal proxy hop with nothing to configure; if you later put Cloudflare in front, set its SSL/TLS mode to Full (strict), never Flexible, because the front server 301s every plain-HTTP fetch and Flexible loops on it. Varnish ships installed but is off per site by default; if you enable it for a PageMotor site, add explicit passes for /api/, /mcp/, /oauth/ and /.well-known/, because the stock VCL only bypasses /admin/. And CloudPanel stores vhost templates as rows in its own database, not as files, so a custom template is added in Admin Area → Vhost Templates, not by editing something in /etc.