Node.js Hosting
Shared hosting is built for PHP - processes that exit after each request. Node.js needs to stay running between requests, listen on a port, and restart cleanly if something goes wrong. That requires a VPS. When managed deployment platforms start costing more than the infrastructure they're running on, predictable VPS pricing is worth a look.
How Node.js runs on a VPS
The standard production setup for Node.js on a VPS is three components: Nginx handles incoming traffic on ports 80 and 443, passes it to your Node.js process on an internal port, and PM2 keeps that process running. Each component does one job cleanly, and together they give you a production-grade environment that behaves the same way every time.
Nginx - reverse proxy and SSL termination
Nginx listens on ports 80 and 443, handles SSL certificates (Certbot + Let's Encrypt or any paid certificate), serves static files directly without touching Node, and forwards dynamic requests to your Node.js process on an internal port. It also handles the Upgrade and Connection headers required for WebSocket connections. Configure it once and it requires minimal ongoing maintenance.
PM2 - process management
PM2 keeps your Node.js application running after you close your SSH session, restarts it automatically if it exits unexpectedly, and logs stdout and stderr to files you can inspect later. In cluster mode, PM2 spawns one worker per vCPU, distributing incoming requests across all available cores. PM2 also integrates with systemd, so your application restarts automatically on server reboots.
NVM - Node version management
NVM installs in your home directory and lets you install and switch between any Node.js version with a single command. Run the LTS version for production; use a different version per project if your applications have different requirements. npm, which ships with Node, handles package installation - yarn and pnpm work equally well.
Dedicated RAM - stays allocated to your process
Node.js processes stay in memory rather than exiting after each request. A typical Express or Fastify API uses 50-150MB per process; a Next.js SSR application can use 150-400MB per worker. In PM2 cluster mode, that figure multiplies by your worker count. The RAM your VPS plan allocates is dedicated - no shared pool, no contention from other accounts. Size your plan with your worker count and per-worker footprint in mind, leaving headroom for Nginx, the OS, and any additional services like Redis or a database.
Systemd - alternative to PM2 for simpler setups
If you'd rather manage your Node.js process at the OS level, a systemd unit file works well - particularly for single-process applications or when you want process management integrated with the rest of your server's service lifecycle. Both approaches are standard; use whichever fits your workflow.
Plans
All plans run on KVM with dedicated resources on AMD Ryzen 9 9900X hardware. Node.js CPU usage is bursty - plan sizing is primarily a RAM and bandwidth decision, with vCPU count mattering most if you're running PM2 cluster mode.
| VPS-1 Personal projects, low-traffic APIs, or a single-process production app | VPS-2 Small to medium production apps, Next.js SSR, or PM2 cluster with 2 workers | VPS-4 Higher-traffic APIs, real-time apps with concurrent WebSocket connections, or PM2 across 4 cores | VPS-6 High-traffic production workloads, multiple Node.js applications, or resource-intensive SSR at scale | |
|---|---|---|---|---|
| vCPU | 1 | 2 | 4 | 6 |
| RAM | 1GB DDR5 | 2GB DDR5 | 4GB DDR5 | 8GB DDR5 |
| Storage | 25GB NVMe | 50GB NVMe | 100GB NVMe | 200GB NVMe |
| Bandwidth | 1TB | 2TB | 4TB | 6TB |
| IPv4 | 1 | 1 | 1 | 1 |
| Price | [price] | [price] | [price] | [price] |
| Deploy your VPS. | Deploy your VPS. | Deploy your VPS. | Deploy your VPS. |
These are renewal prices. What you pay today is what you pay next year.
All VPS plans are unmanaged. Bitfoo handles the hardware and network; your Node.js environment - web server configuration, process management, deployments, and maintenance - is your responsibility.
If your server exceeds its monthly bandwidth allocation, throughput is throttled for the remainder of the billing cycle - no additional charges.
Node.js processes stay in memory. A Next.js SSR worker uses 150-400MB; an Express or Fastify process uses less. If you're running PM2 cluster mode, multiply per-worker usage by your worker count when sizing your plan.
Getting started
Once your VPS is live, the typical setup sequence is:
- Choose Ubuntu or Debian as your OS
Both have well-maintained NVM and PM2 documentation and are the most common choice for Node.js production servers. AlmaLinux, Rocky Linux, and CentOS Stream are also supported. - Install NVM and Node.js
Install NVM from the official repository at github.com/nvm-sh/nvm, then use it to install your preferred Node.js LTS version. NVM installs into your home directory - no root access required for Node itself. - Install Nginx and configure your reverse proxy
Install Nginx via your distribution's package manager, configure a server block that proxies port 80 to your Node application's internal port, then use Certbot to issue a Let's Encrypt certificate and configure HTTPS. The official Nginx and Certbot documentation cover this clearly. - Install PM2 and start your application
Install PM2 globally via npm (npm install -g pm2), start your application (pm2 start app.js), and configure PM2 to start on boot (pm2 startupandpm2 save). From this point, your application restarts automatically on crash and on server reboot.
Your environment from here is standard Node.js - deploy via Git, rsync, or any deployment tool that connects over SSH.
What every VPS plan includes
Relevant features for Node.js, from the VPS hosting page:
Full root access and SSH from first boot - install NVM, Node.js, Nginx, PM2, and any other dependency without restriction
KVM virtualization - your own kernel; Node.js process management (PM2, systemd) and network configuration work without host-imposed limits
AMD Ryzen 9 9900X - high single-core clock speed; relevant for CPU-bound request handling in Node's single-threaded event loop and for SSR rendering workloads
NVMe SSD storage - fast I/O for file reads, database queries, and npm package installation; measurable during build steps and application startup
10Gbps network ports on all plans
IPv6 included - configure Node's HTTP server or Nginx to listen on IPv6 if your infrastructure requires it
Self-service control panel - OS reinstall, power control, console access, SSH keys, and resource graphs; use the browser-based emergency console if SSH becomes unreachable after a misconfiguration
99.9% uptime SLA - measured monthly, service credit issued for any shortfall
Automated provisioning - server ready within minutes of payment
5 datacenter locations at order time: US East, US West, UK, EU, Asia-Pacific
Custom ISO support - bring your own image if your environment has specific OS requirements
Who uses this
Node.js runs APIs, real-time applications, SSR frontends, and full-stack JavaScript applications in production across every industry. The common thread is the need for a persistent process with dedicated resources.
Common questions
Can I run Node.js on Bitfoo shared hosting?
No. Shared hosting is built around PHP's request-and-exit model - each request starts a PHP process, which exits when the response is sent. Node.js works differently: your application starts once and stays running, listening on a port and handling requests as they arrive. Shared hosting environments do not allow persistent processes or arbitrary port binding. Node.js requires a VPS.
How do I keep my Node.js app running after I close SSH?
Use PM2. Install it globally with npm, start your application with `pm2 start`, then run `pm2 startup` to generate a systemd startup command and `pm2 save` to persist your process list. After that, your application restarts automatically on crash and survives server reboots. Alternatively, write a systemd unit file directly if you prefer managing the process at the OS level without PM2.
How do I manage Node.js versions?
Install NVM (Node Version Manager) from github.com/nvm-sh/nvm. It installs into your home directory and lets you install any Node.js version - `nvm install --lts` gets the current LTS release, `nvm install 18` gets a specific major version. You can have multiple versions installed and switch between them per session or set a default. This is the standard approach for managing Node versions on Linux; no root access is required for NVM itself.
Do WebSockets work on Bitfoo VPS?
Yes. WebSockets work with no restrictions on the Node.js side. If you're proxying through Nginx - which is standard - you'll need to pass the Upgrade and Connection headers through the proxy configuration. This is a standard two-line addition to your Nginx server block (`proxy_http_version 1.1`, `proxy_set_header Upgrade $http_upgrade`, `proxy_set_header Connection "upgrade"`). Once configured, WebSocket connections pass through Nginx transparently.
Which frameworks and runtimes work on Bitfoo VPS?
Any framework or runtime that runs on Linux works without restriction. Express, Fastify, NestJS, Koa, Hapi, Next.js (in standalone SSR mode), Nuxt.js (in Node server mode), and Remix (Node adapter) all work. Bun - the faster Node.js-compatible runtime - also installs and runs cleanly on Ubuntu and Debian. The VPS gives you a standard Linux environment; whatever Node documentation says to do, you can do it. If you'd rather containerise your Node.js application, see the Docker hosting page. Building with Next.js specifically? See the Next.js hosting page for standalone output, image optimization, and deployment guidance. For Ghost specifically, see the Ghost hosting page - Ghost CLI handles most of the Node.js setup automatically.
Can I run multiple Node.js applications on one VPS?
Yes. Each application listens on a different internal port, and Nginx routes traffic to the correct application based on the domain name in the request. Configure a separate server block in Nginx for each application, each with its own `proxy_pass` pointing to the respective internal port. PM2 manages all processes from a single `pm2 list` view. The practical limit is RAM - add up the memory footprint of all your application processes and confirm it fits within your plan's allocation.
Which plan should I choose for my Node.js application?
The primary considerations are RAM and vCPU count. VPS-1 handles a single Node.js process with modest traffic - a personal API, a small Express app, or a low-traffic production application. VPS-2 suits small to medium production applications and is a reasonable starting point for Next.js SSR, where a server-side rendered React application can use 150-400MB per worker process. VPS-4 suits higher-traffic applications or those using PM2 cluster mode across 4 cores - real-time apps with many concurrent WebSocket connections benefit particularly from additional vCPUs. VPS-6 suits high-traffic production workloads or servers running multiple Node.js applications simultaneously. When in doubt, start on VPS-2 - it handles most real production workloads and you can upgrade without migrating your data.