VPS or shared hosting for a client site: a decision grid

Comparison9 min read11 steps

Every new client site forces the agency to choose: shared hosting or a VPS. A VPS promises power and root access, but it also makes the agency the client's system administrator: kernel, PHP, firewall, backups, on-call duty. The 2026 vulnerabilities make the point, from PHP2Shell on 21 October 2026 to Fragnesia in May 2026. This guide compares both models criterion by criterion, puts a number on maintenance in hours per month under an explicit assumption, offers a five-question decision grid and lists the signals that justify migrating, in either direction.

Contents· The real criterion: who applies the patches1/13
  1. 01The real criterion: who applies the patches
  2. 02Shared hosting and VPS, criterion by criterion
  3. 03PHP2Shell: the PHP patch, on shared hosting and on a VPS
  4. 04Fragnesia: when the kernel is the agency's
  5. 05Isolation and backups: what protects a client from the others
  6. 06How many maintenance hours per month and per site
  7. 07The article's assumption: maintenance hours per month
  8. 08Decision grid: five yes or no questions
  9. 09The signals that justify changing model
  10. 10Seven migration signals
  11. 11Migrating with minimal downtime: six steps
  12. 12A tie-break rule for a portfolio
  13. 13The official documentation

The real criterion: who applies the patches

The question "which one is more powerful?" almost always leads to the VPS. The useful question for an agency is a different one: when a critical flaw is disclosed on a Tuesday evening, who patches this client's server? On cPanel shared hosting, the host does. The kernel, the PHP interpreter, the server firewall and the monitoring of the machine are not your job, and you keep the relationship with the client. On a VPS, all of that becomes your scope from the first minute, weekends included. That is not a defect of the VPS: it is the price of the freedom it offers, with root, persistent services and a custom stack. The table below sets each criterion against the person who handles it, because that line, far more than the RAM figures, changes your workload. Here we reason in responsibilities, not raw performance.

Shared hosting and VPS, criterion by criterion

Scroll the table

CriterionShared hosting (who handles it)VPS (who handles it)
Root accessNo, bounded cPanel accounts: the hostYes, full: the agency
Isolation between sitescPanel accounts isolated from each other: the hostOne VPS per client, or a shared blast radius if several sites live together: the agency
Kernel updatesApplied on the shared machine: the hostPlanned update then reboot: the agency
PHP updatesPatches pushed to the server: the hostPackages to update and test: the agency
FirewallServer firewall: the hostTo configure and keep current: the agency
BackupsDepends on the plan, weekly on entry plans and daily on Pro and Agency: the hostStrategy to define and test: the agency
MonitoringMachine monitored by the host, site watched by you: sharedAvailability, disk, certificates, services: the agency
ScalingPer-account limits, then a higher plan or a VPS: the host and the agencyResources adjusted on demand, architecture in your hands: the agency

PHP2Shell: the PHP patch, on shared hosting and on a VPS

On 21 October 2026, the PHP project published the advisory for CVE-2026-109619, nicknamed PHP2Shell, a remote code execution rated critical and fixed in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. On shared hosting, the host applies the patch; on a VPS, you must update PHP on each machine, then reload PHP-FPM. The dedicated PHP2Shell article details the inventory and the mitigations.

Fragnesia: when the kernel is the agency's

Fragnesia (CVE-2026-46300) is a Linux kernel flaw allowing local privilege escalation to root. On shared hosting, the host schedules the kernel update; on a VPS, the kernel is the agency's, so its maintenance window and its reboot, since a VPS that is never rebooted keeps the old kernel in memory. Check the running kernel with uname -r. The dedicated Fragnesia article details the flaw and the mitigations.

Isolation and backups: what protects a client from the others

On shared hosting, each site lives in an isolated cPanel account: a compromised site does not, in principle, give access to the neighbour's files. On a VPS, isolation depends on how you split things. One VPS per client draws a clear boundary, but multiplies the machines to keep current. Several sites mixed on one VPS lower the bill, but share a common blast radius: a vulnerable plugin on one site exposes all the others, and stolen root access takes them all. For backups, do not generalise. On shared hosting, the frequency depends on the plan: weekly on entry plans, daily on the Pro and Agency plans. Check the plan sheet before promising a restore frequency to a client. On a VPS, nothing is decided for you: the backup strategy, its off-machine destination and above all the restore test are for the agency to define and verify. A backup that has never been restored is still a hypothesis.

How many maintenance hours per month and per site

The figures in the table below are not a benchmark: they are this article's assumptions, to be replaced by your own measurements. They assume one standard Linux VPS per client, run by a competent person, against a site on a shared account whose host runs the machine. The total gives the order of magnitude: about 0.75 h per month and per site on shared hosting, against about 4.5 h per month and per VPS. For twelve clients, that is 9 h against 54 h per month. Compare with your internal hourly rate: if the hours gap, valued at that rate, exceeds the monthly price gap, for the same billing period, between 799 DH/year and 99 DH/month, the VPS costs more than its listed price. Grouping several sites on one VPS divides the hours per site, but enlarges the blast radius. The VPS administration option can move part of these hours to ServOrbit; check its scope on the VPS page. The blog guides are provided, without support coverage.

The article's assumption: maintenance hours per month

Scroll the table

TaskShared (per site)VPS (per server)
Kernel and reboots0 h0.5 h
PHP and system packages0 h1 h
Firewall and hardening0 h0.5 h
Backups and restore test0.25 h1 h
Monitoring and alerts0.25 h0.75 h
Incidents and on-call0.25 h0.75 h
Total0.75 h4.5 h

Decision grid: five yes or no questions

  1. Does traffic durably exceed the plan's limits?

    No: shared hosting is enough. Yes, sustained and not a one-off spike: go to question 2. A one-off spike is handled first with caching and a higher plan.

  2. Does the client have several sites or heavy services?

    No: stay on shared hosting as long as the process limits hold. Yes: a VPS becomes credible, go to question 3.

  3. Do you need root or persistent services?

    No: shared hosting remains the default choice. Yes, for a daemon, a job queue, a specific database engine or a non-standard stack: the VPS is justified, go to question 4.

  4. Must this client be isolated from the others?

    Yes, for sensitive data or a contractual requirement: plan a VPS dedicated to this client. No: the per-account cPanel isolation of shared hosting is already enough.

  5. Do you have the administration skills and the on-call cover?

    No: do not open a VPS without planned administration, stay on shared hosting or look at the VPS administration option. Yes: the VPS is validated, and you budget the hours from the previous table.

The signals that justify changing model

A hosting model is not chosen once and for all. Two families of signals trigger a migration, in either direction. Towards the VPS, they are technical constraints that keep recurring: the same ceiling hit every month, a service that shared hosting does not allow. Towards shared hosting, it is the opposite: the machine costs more time than it earns. Note the date and cause of every incident tied to limits or administration. A practical rule of this article: a single incident is an accident, three in a quarter are a signal.

Seven migration signals

  • Towards the VPS: limited processes or memory — limit errors keep returning despite optimising the site, the plan's ceiling is reached.
  • Towards the VPS: root or persistent services — the project requires a daemon, a worker, a search engine or a system version that shared hosting does not offer.
  • Towards the VPS: sustained load — the load stays high for several weeks, not only during a one-off campaign.
  • Towards the VPS: specific firewall or stack — a network rule, a reverse proxy or a precise runtime becomes a client requirement.
  • Towards shared hosting: low traffic — the site fits comfortably in a shared plan and the VPS sits idle most of the time.
  • Towards shared hosting: no admin skills available — nobody on the team can apply a kernel or PHP patch within the day.
  • Towards shared hosting: on-call load above the value — the maintenance hours exceed what the client pays for the site.

Migrating with minimal downtime: six steps

  1. Back up the source

    Take a full backup of the files and the database, then check that it restores on a test machine before touching anything.

  2. Lower the DNS TTL

    At least 24 to 48 hours before the switch, bring the record TTL down to 300 seconds, then check with dig +short your-domain.com.

  3. Build the target

    Install the stack on the VPS, or create the cPanel account, copy the files and the database, then reproduce the PHP configuration and scheduled tasks.

  4. Test before the switch

    Test the target without touching DNS using curl -I --resolve your-domain.com:443:IP_CIBLE https://your-domain.com/, then walk through forms, payment and mail sending.

  5. Switch over

    Freeze writes on the source if the site receives any, make a final copy of the database, then change the A record. Keep the TTL short during the switch.

  6. Monitor and close out

    Watch the logs for 48 hours, keep the source untouched for a few days, then raise the TTL again and remove the old environment.

A tie-break rule for a portfolio

Start from shared hosting for every new client site, and move to a VPS only on a written signal: a limit reached, a need for root, an isolation requirement. Keep a table per client with the model, the date of the last kernel and PHP update, and the last tested restore. A VPS whose row is out of date is a debt you carry in the client's place.

The official documentation

PHP2Shell security advisory (GitHub, PHP project) : https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

Debian entry for Fragnesia : https://security-tracker.debian.org/tracker/CVE-2026-46300

Security Affairs coverage of Fragnesia : https://securityaffairs.com/192145/security/linux-kernel-bug-fragnesia-allows-local-root-access-attacks.html

Supported PHP versions : https://www.php.net/supported-versions.php

Leave the infrastructure to ServOrbit for sites without root

For client sites that do not need root, cPanel web hosting leaves the infrastructure and its patches to ServOrbit: you keep the client relationship. Plans start at 199 DH/year.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab