SPARKZ Network

Node.js & Git

node.js on shared
hosting. actually.

Multiple Node versions, Phusion Passenger, npm and environment variables from the panel — and Git deployment that pulls when you push. Deploy Next.js, an API, or a site an AI built you. No VPS required.

two kinds of people land on this page.

Both want the same thing — a Node app, live on the internet, without renting and babysitting a whole server. Where you started just changes which words on this page are unfamiliar.

you write the code

the developer

You already know what Node, npm and a build step are. What wears thin is being told a rendered site or a small API needs a whole VPS — an operating system to patch, a firewall to configure, a box to keep alive at 3am. You want Node and Git without inheriting a server to run.

you described it to an ai

the builder

You asked Claude, Cursor, v0 or Lovable for a website and it wrote you a real one — a proper Next.js or Astro project, sitting in a folder you are not quite sure what to do with. It runs on your laptop. Now it needs to run somewhere the rest of the world can reach. That somewhere is here.

From here the path is identical. The code lives in a Git repository, you point the panel at it once, and every push after that goes live on its own. The rest of this page explains that in plain terms — and stays honest about the handful of things that genuinely want a server of their own.

plans that run node

Node.js hosting on our Plesk platform — Phusion Passenger, your choice of Node version, npm and environment variables from the panel, and Git deployment that pulls on push. Everything a Node app needs, managed for you rather than assembled on a VPS.

Showing monthly pricing.

Node.js Starter

£9.99/mo

  • Daily Backups
  • UK Data Centre
  • 512MB RAM Allocation
  • 25% CPU Allocation
  • DDoS Protection
  • Friendly UK Support

Perfect For

Express.js Applications · Fastify APIs · Discord Bots · Personal Projects · Small Next.js Applications · REST APIs

Need more performance? Upgrade at any time as your application grows with no downtime.

Choose Node.js Starter
Most popular plan in this range

Node.js Business

£19.99/mo

  • Daily Backups
  • UK Data Centre
  • 1GB RAM Allocation
  • 50% CPU Allocation
  • DDoS Protection
  • Friendly UK Support

Perfect For

Business Websites · Express.js Applications · NestJS Applications · Production APIs · Customer Portals · Growing Projects

Scale your application effortlessly by upgrading your hosting plan whenever you need additional resources.

Choose Node.js Business

Node.js Professional

£39.99/mo

  • Daily Backups
  • Priority Support
  • UK Data Centre
  • 2GB RAM Allocation
  • 100% CPU Allocation
  • DDoS Protection

Perfect For

SaaS Platforms · Next.js Applications · Nuxt.js Applications · NestJS APIs · GraphQL Services · High-Traffic Websites

Designed for developers who need reliable performance and the flexibility to scale production applications.

Choose Node.js Professional

Node.js Enterprise

£79.99/mo

  • UK Data Centre
  • 4GB RAM Allocation
  • 200% CPU Allocation
  • DDoS Protection

Perfect For

Digital Agencies · Enterprise Applications · Multiple Node.js Projects · High-Traffic APIs · Large SaaS Platforms · Mission-Critical Workloads · Unlimited bandwidth is subject to our Fair Usage Policy.

When reliability and performance matter most, Enterprise provides the resources and support to keep your applications running at their best.

Choose Node.js Enterprise

The new workflow

let an ai build it. let git deploy it.

AI tools now produce a complete, working Next.js or Astro project in an afternoon. The part nobody solves for you is where it lives afterwards — and push-to-Git turns out to be the whole answer.

  1. Describe what you want built

    Claude Code, Cursor, v0 or Lovable will generate a working Next.js or Astro project — pages, styling, components, the lot. What used to be a week of scaffolding is now an afternoon of iterating.

  2. Push it to GitHub

    The AI writes to a repository like any developer would. That repository becomes the single source of truth, with a full history of every change and a way back from any of them.

  3. Point Plesk at the repo

    Add the remote, pick the branch, choose automatic deployment. Plesk pulls the code down whenever you push.

  4. Install, build, enable — once

    Set the Node version and startup file, install dependencies, run the build, start the application. This is the only part done by hand, and only the first time.

  5. Iterate by pushing

    Ask for a change, review the diff, push. The site updates. Re-run install and build when dependencies or built output change; otherwise pushing is the whole deploy.

Why this suits shared hosting

  • An AI-built site is a normal Node application. It needs a process and a domain, not a platform-specific runtime.
  • No cold starts. The process stays warm, so the first visitor after a quiet hour gets the same speed as the last.
  • Predictable cost — a fixed monthly price rather than per-invocation billing that spikes with a traffic surge.
  • It sits alongside your WordPress site, mail and domains on one account and one invoice.

This site is built and deployed exactly this way — Next.js, written with AI assistance, pushed to GitHub, pulled by Plesk.

what actually happens when you push.

“Push to Git and it is live” reads like a slogan. It is really just four steps, and only the first one is yours to do.

  1. git push

    you push a change

    You, or the AI you are working with, save a change to the Git repository. In an editor that is one button; on the command line it is one command.

  2. plesk pulls

    the panel pulls it

    Plesk is watching the branch you told it to track. It sees the new commit and pulls the code straight onto your hosting — no FTP client, no dragging a build folder across.

  3. passenger restarts

    your app restarts

    Passenger brings up the new version of your app and takes the old one down. For a typical site that is a second or two, and visitors keep being served while it happens.

  4. live

    it is on the internet

    The change is public. The part of shipping that used to mean a held breath and a checklist becomes the part you stop thinking about.

Two steps sit outside this loop: installing dependencies and running the build. You repeat those only when your dependencies change or your framework needs recompiling — the rest of the time, pushing is the entire deploy.

most shared hosting is php and nothing else.

Which is why the standard advice for anything JavaScript is “get a VPS”. That advice is right when you need root or background workers — and unnecessary for a rendered site or an API, where it just hands you an operating system to maintain.

Multiple Node versions

Pick the Node version per application and change it later. A legacy app on an older runtime and a current one can sit on the same account without arguing.

Phusion Passenger

Passenger runs your app as a long-lived process behind nginx and restarts it on demand — so you get a real Node server rather than a CGI-style shim.

npm install from the panel

Install dependencies and run package scripts from the control panel. No SSH required, though SSH is there when you would rather use it.

Environment variables

Set secrets and configuration in the panel rather than committing a .env file — which is how API keys end up in a public repository.

Git deployment

Connect a GitHub, GitLab or Bitbucket repository and Plesk pulls on push. No FTP, no dragging a build folder around.

Restart on demand

Restart the application from the panel after a deploy or a config change, without touching the rest of the account.

why node behaves differently.

Not faster by decree — structurally different. PHP rebuilds the world on every request; Node builds it once and keeps it.

PHP, per request

Every request starts the application from nothing: boot the interpreter, load the framework, read config, open a database connection, render, then throw all of it away. That work repeats on the next request, and on every request after it.

Node, persistent

The process starts once and stays running. The framework is already loaded, database connections are already open, and anything cached in memory is still there. A request arrives and the app is ready for it.

No per-request bootstrap

Startup cost is paid once at boot rather than on every hit. What that is worth depends entirely on how heavy your application is to start, which is why a number quoted without your code attached is meaningless.

In-memory caching actually works

A value cached in a variable survives between requests, so you can hold a parsed config, a compiled template or an API response without reaching for Redis. In PHP that memory disappears when the request ends.

Long-lived connections

Database pools and open sockets persist instead of being re-established constantly. WebSockets are possible at all, which they are not under a per-request model.

The trade: state persists too

A memory leak accumulates rather than being cleared by the request ending, and a crash takes out every in-flight request rather than one. Persistent processes reward care and punish sloppiness — PHP is more forgiving precisely because it forgets everything.

On benchmarks: we have not published any, because a hosting benchmark without your application attached tells you very little. The gap between a well-built site and a badly-built one dwarfs the gap between stacks. If you want numbers for your specific app, run them on a plan and we will help you read the results honestly — including when they say you do not need us.

the words that trip people up, in plain english.

None of this is as opaque as it first sounds. Five terms cover almost everything you meet setting up a Node app — here they are with the jargon taken out.

Phusion Passenger
The thing that keeps your app switched on. On ordinary hosting a web server hands each request to PHP, which runs and then vanishes. Passenger instead starts your Node app once and keeps it alive as a real, long-running process, feeding it requests as they arrive. You never configure it by hand — you just tell the panel which file to start.
The startup file
The one file Passenger runs to boot your app — its front door. For a plain Express app that is your server file; for a framework like Next.js it is usually a small file that starts the framework's own server. You point the panel at it once and forget it is there.
The build step
Some frameworks compile your code ahead of time, turning your source into the optimised files a browser actually receives. That compilation is the build. It runs once per change to the code — not on every visit — and it has to finish before the app starts. On your laptop it is the npm run build command; here it is a button.
node_modules
The folder of downloaded libraries your app depends on. It is deliberately kept out of Git — large and machine-specific — and rebuilt on the server by running install. That is why the first thing you do after the code arrives is install: the code is there, but the things it leans on are not yet.
Environment variables
Settings and secrets — API keys, database passwords — that you set in the panel rather than writing into your code. It keeps them out of your Git repository, which is precisely where secrets should never live, because a repository is one careless click from being public.

push to git. that is the deploy.

Plesk tracks a branch and pulls when you push. No workflow files, no deploy keys to manage by hand. Here is the one-time setup, in order.

  1. Point Plesk at your repository

    Add the Git remote in the panel and choose the branch to track. Plesk clones it into the application root.

  2. Set the Node application up

    Application root, startup file and application mode. The startup file is the entry point Passenger runs — for a framework build that is usually a small server file rather than the framework's own CLI.

  3. Install dependencies

    Run NPM install from the panel. Do this with the application STOPPED — installing over a running app leaves node_modules half-written, and the failure looks like a mysterious build error later.

  4. Run your build

    Run the build script from the panel. For frameworks that compile ahead of time, this is the step that produces what the server actually serves.

  5. Enable and push

    Start the application. From then on, pushing to the tracked branch pulls automatically — you only repeat install and build when dependencies or built output change.

The one that catches everybody: stop the application before running NPM install. Installing over a running app leaves node_modules half-written, and the symptom appears later as a build error that looks like something else entirely. Disable, install, build, enable — in that order.

the startup file, demystified.

It is the one artefact that stumps people, and it is genuinely small. The startup file is simply the file Passenger runs to switch your app on. For a plain Express app it is your server file; for Next.js it is a short file that boots the framework’s server.

Set once in the panel

Application root
where your repo was cloned
Startup file
server.js
Application mode
production
Node.js version
match what you build with

You point the panel at these once and never touch them again. From then on, deployment is a push.

server.jsnext.js startup file
const { createServer } = require("http");const next = require("next"); // dev:false runs the built app, not the dev serverconst app = next({ dev: false });const handle = app.getRequestHandler(); app.prepare().then(() => {  // Passenger tells us which port to listen on  createServer((req, res) => handle(req, res))    .listen(process.env.PORT || 3000);});

Illustrative — the deployment guide has the full version, plus the equivalents for Express, Nuxt and Astro, and the panel settings screen by screen.

what fits here, and what wants a server.

Shared hosting Node is real, but it is not a cloud server with a nicer panel. Here is the honest split.

What Node.js workloads suit shared hosting versus a cloud server
 Shared hostingCloud server
Next.js / Nuxt / Astro siteIncludedIncluded
Express or Fastify APIIncludedIncluded
Static site build stepIncludedIncluded
AI-built site (Claude, Cursor, v0)IncludedIncluded
Headless CMS (Strapi, Payload)Small instancesIncluded
Long-running background workersNot includedIncluded
WebSockets at scaleNot includedIncluded
Your own system packagesNot includedIncluded
Root accessNot includedIncluded
You maintain the OSNo — we doYes

the usual suspects all run.

Anything that boots a Node HTTP server works, which is most of the ecosystem. Frameworks that build ahead of time need their build step run before the app starts — that is the only real difference from a local machine.

We can say this one with confidence: sparkz.network itself is a Next.js application running on this stack, deployed from GitHub.

Known to run

  • Next.js
  • Express
  • Nuxt
  • Fastify
  • Astro
  • SvelteKit
  • Remix
  • NestJS
  • Strapi
  • Payload CMS

Running something not listed? Ask — if it boots a Node server and does not need root, it almost certainly works.

Domain search

need a domain for it?

Search every extension we sell, with renewal prices shown next to registration prices.

node.js questions

Can you really run Node.js on shared hosting?

Yes. Plesk runs Node applications through Phusion Passenger, which keeps your app running as a real long-lived process behind nginx. It is not a workaround or a CGI shim. Most budget shared hosting is PHP-only, which is why people assume Node needs a VPS — it does not, unless you need what a VPS specifically gives you.

I used an AI tool to build my site and I am not a developer — can I still deploy it here?

Yes, and it is increasingly why people arrive here. The AI writes your site into a Git repository just like a developer would; you connect that repository in the panel once, choose the Node version and startup file, then install and build with a button each. After that, every change goes live when it is pushed. You do not have to write code to follow the setup — and if a step is unclear, the team who run the platform will walk you through the one-time part.

Which Node versions are available?

Several, and you choose per application rather than per account. That matters when you are running an older app that has not been updated alongside something current — they can coexist without one dictating the other's runtime.

How does Git deployment work?

Connect a GitHub, GitLab or Bitbucket repository in the panel and choose a branch. Plesk pulls when you push. There are no workflow files to write and no deploy keys to manage by hand — though you still run install and build yourself when dependencies or built output change.

What is a startup file, and how do I know what mine is?

It is the single file Passenger runs to start your app — think of it as the front door. For a plain Express or Fastify app it is your main server file. For a framework like Next.js it is usually a small file that boots the framework's server; our deployment guide includes one you can copy almost verbatim. You set it once in the panel and never touch it again.

Can I run Next.js?

Yes, and it is one of the most common things people run here. Next needs a small startup file that boots the server for Passenger, and the build has to be run before the app starts. Our guide walks through both, including the mistakes that cost people an afternoon.

Do I need to use a terminal or know Linux?

For most things, no. Installing dependencies, running the build, restarting the app and editing environment variables are all buttons in the Plesk panel. SSH is available if you prefer a command line or need to do something fiddly, but it is optional rather than the main way in.

Do I get SSH access?

SSH is available, and useful for anything fiddly. Most day-to-day work — installing dependencies, running scripts, restarting the app, editing environment variables — can be done from the panel without it.

Can I use a database with my Node app?

Yes. Create MySQL or MariaDB databases in the panel and connect to them from Node exactly as you would anywhere else. Because a Node app is a long-lived process, a connection pool stays open between requests instead of being torn down and rebuilt on every one — one of the practical upsides of the persistent model.

What are the limits compared with a cloud server?

You do not get root, you cannot install system packages, and long-running background workers or heavy WebSocket use are not a good fit — those want a server of your own. For a rendered site, an API, or a small app, shared hosting handles it and you are not responsible for patching the operating system.

Can I run Node.js and WordPress on the same account?

Yes. They are separate applications under the same Plesk account, with their own domains or subdomains. A marketing site on WordPress, a Node API alongside it, and a legacy PHP app on anything from PHP 5 to 8.5+ can all coexist on one account.

What happens on a deploy — does the site go down?

Passenger restarts the application, so there is a brief moment while the new process starts. For most sites that is a second or two. If you need genuinely zero-downtime deploys, that is a cloud server conversation.

deploy it from git this afternoon.

Tell us what you are running and we will tell you honestly whether shared hosting fits it — or whether you want a server.

Node.js Hosting UK — Deploy from Git on Shared Hosting · SPARKZ