# PageMotor on a VPS the easy way, with CloudPanel — LLM Prompt

> **How to use this file:** Paste the entire contents into Claude, ChatGPT, Gemini, or any LLM as your opening message. It gives the model the whole guide, so it can walk you through it, ask where you have got to, and help when something does not behave.
>
> *Source: [https://documentation.elmspark.com/guides/pagemotor-cloudpanel/](https://documentation.elmspark.com/guides/pagemotor-cloudpanel/)*

---

You are helping me with the following. Use this guide as your reference. Work through it with me, ask what I have already done, and help me troubleshoot. Where a step changes something on a live site, a domain, or a server, tell me what it will do and wait for me to confirm before we go on. If something here contradicts what I am actually seeing, say so rather than guessing.

**What this covers:** The no-terminal way to run PageMotor on a VPS with CloudPanel: install the free panel with one paste, then create the site, database and SSL from a GUI. PageMotor gets the writable filesystem it needs.

# PageMotor on a VPS the easy way, with CloudPanel

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.

1. **Pick CloudPanel inside the order wizard.** On the "Choose what to install" screen, open the **Control panel** tab and choose CloudPanel on Ubuntu 24.04, not a plain OS.
2. **No underscores in the database name or user.** CloudPanel rejects them ("this value is not valid"). Use hyphens, for example `pagemotor-db` and `pagemotor-user`.
3. **Choose PHP 8.3.** The new-site form may default to a newer version. PageMotor needs 8.2 or newer, and 8.3 is the safe choice.
4. **Uploading with File Manager? Extract makes a subfolder.** Let it extract into a folder such as `pagemotor`, then point the site at it: open the site, Settings, set Root Directory to `yourdomain.com/pagemotor`, Save.
5. **Fix the PHP timezone before creating any site.** CloudPanel images default `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](https://documentation.elmspark.com/guides/pagemotor-mcp-troubleshooting/#hosting)). 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.

**Read the narration instead**

**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.

## 1 A VPS with plain Ubuntu

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.

## 2 Install CloudPanel (one paste)

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.

## 3 Create the site

In CloudPanel go to **Sites → Add Site → Create a PHP Site**, and set:

- **Application:** Generic / PHP.
- **PHP version:** 8.3 (PageMotor needs 8.2 or newer; 8.4 is fine too).
- **Domain:** your site's domain.
- **Site user and password:** set them and write them down. This is the user that owns the files and that PHP runs as.

CloudPanel creates the Nginx vhost, the PHP-FPM pool, and the document root at `/home/<site-user>/htdocs/<domain>/`.

## 4 Create the database

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.

## 5 Upload PageMotor

- Put the PageMotor files into the site's document root (`/home/<site-user>/htdocs/<domain>/`) using CloudPanel's **File Manager**, or SFTP with the site-user login.
- Copy `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.

## 6 The one PageMotor tweak

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.

## 7 Turn on SSL

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.

## Why this fixes the “design won't save” problem

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](https://documentation.elmspark.com/guides/ep-suite-shared-hosting/)).

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.

## Connecting Claude from this host

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:

1. Go to **Customize → Connectors** (straight there: [claude.ai/customize/connectors](https://claude.ai/customize/connectors)).
2. Click **+**, then **Add custom connector**.
3. Give it any name you like. For the URL, use your site’s connector address: `https://your-site.com/mcp/`, all lower case, **trailing slash included**.
4. Click **Add**. Claude sends you to a sign-in page on your own site. Log in with your PageMotor **admin** account and approve it.
5. Start a new chat, click the **+** at the lower left of the message box, hover **Connectors**, and switch yours on.

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](https://documentation.elmspark.com/plugins/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](https://documentation.elmspark.com/guides/pagemotor-mcp-troubleshooting/) has the exact diagnostic and fix for every verified cause.

## Who looks after this server?

**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.

---

*Generated from the guide above. If something here looks wrong, the guide is the source of truth: https://documentation.elmspark.com/guides/pagemotor-cloudpanel/*
