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.▶ The whole route in 4 minutes 46 seconds, narrated, with captions — including the timezone you must fix before any site exists, and why the /.well-known/ fix on CloudPanel is different from every other host.
The shape of it. One paste in the terminal to install the panel, and after that everything is clicks. About twenty minutes, and the panel is free.
Why bother. The most common PageMotor bug is a design that will not apply: you save it, nothing changes, no error at all. Nine times out of ten that is a host refusing to let PHP write the compiled stylesheet to disk. On a CloudPanel VPS the problem is gone by construction: a real server, a writable filesystem, and site files owned by the same user PHP runs as.
Two traps before you have even ordered. If your provider offers CloudPanel as a template, pick it inside the order wizard, under the Control panel tab, rather than a plain operating system. And when you create the site, choose PHP 8.3. The form may offer you something newer; 8.3 is the safe choice.
Before any site exists. CloudPanel images set the PHP timezone to Europe/Berlin in every PHP version they ship, whatever region the box is in, and PageMotor's browser sign-in fails on any timezone ahead of UTC. Set date.timezone to UTC in the PHP 8.3 FPM ini file and restart the pool first, because CloudPanel bakes the value into each site at the moment it is created. Forgot? It is editable per site, under Settings › PHP Settings.
Installing the panel is three lines over SSH, and it is the only time you touch the command line. Five to ten minutes later, open your server's IP on port 8443, expect a certificate warning on a raw IP, and create your admin account.
The site and the database, both in the panel. Sites, Add Site, Create a PHP Site: generic PHP, version 8.3, your domain, and a site user whose password you write down. That site user is the user PHP runs as, which matters in a moment. Then Databases, Add Database. One rule: no underscores in the name or the user. CloudPanel simply rejects them. Use hyphens.
Upload as the site user. File Manager, or SFTP with the site-user login, and copy config-sample.php to config.php with your three database values. On current releases you can skip that and let the install wizard write the file. Either way, make /admin/ the first page you open. And the trap: extract the zip over SSH as root instead, and everything lands owned by root, PHP cannot save a thing, and it looks exactly like a PageMotor fault.
The one tweak. PageMotor routes every request through index.php, so the vhost needs the front-controller rewrite. Current CloudPanel renders two server blocks per site: a front one on 80 and 443 that terminates TLS and proxies to a PHP backend on port 8080. The rewrite already ships in that backend block, so open the site's Vhost tab and check it is there. That one line is the difference between clean URLs and a wall of 404s.
Connecting Claude. CloudPanel's stock vhost lets /.well-known/ fall through to the filesystem for Let's Encrypt, which swallows the sign-in routes Claude follows. And because that block sits in the front server, where there is no PHP at all, the fix here is different from every other host: you must proxy_pass the rest of /.well-known/ to the site's 8080 backend, rather than try_files it. Apply it through the site's Vhost tab, so certificate renewal cannot revert it.
Who looks after it. Every mainstream VPS is sold self-managed, so from Ubuntu upwards it is yours: security patches, the panel, PHP, the database, the certificate. Budget about fifteen minutes a month.
Use this guide with any AI assistant
Download it as a prompt file, paste it into Claude, ChatGPT, Gemini or any LLM, and it will walk you through every step interactively.
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).
In practice, connecting takes about a minute. In a browser at claude.ai:
https://your-site.com/mcp/, all lower case, trailing slash included.Then simply talk to it: “what pages do I have”, or “create a contact page”. A free Claude account is enough and allows one custom connector; Pro, Max, Team and Enterprise allow more.
You do not need to test any of those requirements 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.You do. Every mainstream VPS is sold self-managed. Hostinger word it most plainly, and it holds across the board: “As our VPS solutions are self-managed, you will get full freedom to configure and manage the virtual server.”
Your provider looks after the hardware, the network, DDoS filtering at the edge, and whatever backups your plan includes. Everything from Ubuntu upwards is yours: security patches, your control panel, PHP, the database, your TLS certificate, and PageMotor itself.
That is not a catch. It is the same freedom that makes a VPS fix the problems shared hosting gives PageMotor. But nobody emails you when a patch is published, and a server left alone for a year is running a year of known, catalogued, publicly indexed vulnerabilities. Budget about fifteen minutes a month.