Proxmox vs. traditional VPS — what the difference means for your hosting
Most VPS hosts run OpenVZ or Xen. FXRM runs KVM on Proxmox. The difference is more than a product spec — it changes what isolation and resource guarantees actually mean.
Shared hosting has historically meant PHP. Enhance changes that with native Node.js app support. Here's what actually works, what has limits, and when Node workloads need a VPS.
For most of shared hosting's history, running Node.js on a shared host meant either hacking around SSH to run a persistent process (which the host would kill eventually) or paying for a VPS for even simple Node applications. The assumption was that shared hosting equals PHP, and everything else needs dedicated resources.
Enhance, the control panel we use for shared and reseller hosting, has changed this with native Node.js application support. Applications are served through Passenger, which manages the Node process lifecycle, automatic restart on crash, and integration with Nginx. It's not perfect for every use case, but for the right workloads it's genuinely useful.
This article explains what works on shared hosting with Enhance, what doesn't, and when the workload genuinely needs a VPS.
Static file serving with a Node backend. A Next.js application in static export mode, or any framework that builds to static HTML, works well. The Node process handles server-side rendering or API routes during the build, and the static output is served directly by Nginx. For applications that can be statically exported, shared hosting is often entirely adequate.
Low-traffic API applications. A small REST API, a webhook handler, a serverless-style function that receives occasional requests and returns fast responses — these work fine on shared hosting. Passenger starts the Node process on the first request, keeps it running while there's traffic, and restarts it if it crashes.
Build processes and tooling. Running npm run build for front-end assets, executing static site generators, running one-off scripts. Enhance's SSH access means you can run Node tooling without needing a dedicated server.
Express or Fastify applications with modest traffic. If your application handles a few dozen requests per minute with response times under a second, a shared hosting Node environment is sufficient. The per-account resource limits on Enhance control the CPU and memory ceiling, but for light-traffic applications you'll rarely approach them.
WebSocket servers. Passenger's integration with Nginx works by proxying to the Node process. Long-lived WebSocket connections work technically, but shared hosting's per-account connection limits and resource controls make high-concurrency WebSocket applications unreliable. An application with hundreds of simultaneous WebSocket connections needs dedicated resources and careful Nginx configuration.
High-memory processes. Node's garbage collector is lazy — it'll use memory up to a limit before collecting. Applications with large datasets in memory, or frameworks that have significant baseline memory usage (some full-stack frameworks start at 300–500MB), will hit shared hosting resource limits.
Long-running background jobs. Passenger expects to manage HTTP request handlers, not background workers. A process that spends most of its time doing background work rather than responding to HTTP requests isn't a good fit for the Passenger model. Background job processing belongs on a VPS where you can run the worker process separately from the HTTP server.
High CPU workloads. Image processing, PDF generation, data transformation at scale — Node is single-threaded for CPU-bound work (worker threads help but add complexity). If your application spends significant time on CPU-intensive tasks, shared hosting's resource limits will constrain throughput.
Applications that need PM2 or complex process management. PM2's clustering mode (which uses Node's cluster module to fork multiple processes across CPU cores) works differently from Passenger's process management. The two don't compose cleanly. If your application is tuned for PM2 clustering, it belongs on a VPS.
Setting up a Node application in Enhance requires:
npm install via SSH to install dependenciesEnhance supports multiple Node versions via NVM. You can specify which version your application requires. This is more flexible than many shared hosting environments, which lock you to a single Node version.
Environment variables are set in Enhance's control panel per application. They're passed to the Node process as standard environment variables.
A VPS is the right answer when:
The practical test is simpler: does your application work on shared hosting without hitting resource limits or needing process management features that Passenger doesn't provide? If yes, start there. If no, go VPS.
The economics usually make this straightforward. Shared hosting is appropriate for applications with modest and predictable resource requirements. VPS is appropriate when you need the resources and control that dedicated virtualisation provides.
FXRM offers both Enhance-based shared hosting with native Node.js support and KVM VPS hosting for when you need dedicated resources. See hosting plans → or VPS hosting →.
Founded by Jon Morby, whose team has been running UK servers since 1992. Hosting built by engineers who care about deliverability and uptime.
Get in touch →Most VPS hosts run OpenVZ or Xen. FXRM runs KVM on Proxmox. The difference is more than a product spec — it changes what isolation and resource guarantees actually mean.
A single SMTP server is a single point of failure. This is the actual HAProxy configuration we use for mail relay failover, including health checks, stick tables, and SMTP protocol handling.
DNS cache poisoning attacks are real and DNSSEC exists to stop them. Here's what DNSSEC actually does, how to verify it's working, and why your hosting provider's implementation matters.