Best VPS for Node.js Hosting (2026)
Node.js applications need persistent processes, port access, and the ability to manage dependencies freely. Shared hosting does not give you any of that. A VPS is the natural home for a Node.js app in production — you get full control over the runtime, the process manager, and the web server in front of it.
⚡ VPS plans from $5/mo — Use code LAUNCH2026 for 50% offWhat Node.js Apps Actually Need
- RAM — Node.js is memory-efficient for I/O-heavy workloads. 512MB handles small apps, 1GB is comfortable for most production apps, 2GB+ for anything with significant traffic or WebSocket connections.
- CPU — Node.js runs on a single thread by default. 1 core is fine for most apps. Use the cluster module or PM2 cluster mode to use multiple cores.
- Node version management — you need to control which Node version you run. NVM makes this easy.
Installing Node.js With NVM
NVM (Node Version Manager) lets you switch between Node versions and keeps things clean:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
nvm alias default 20
Running Your App With PM2
PM2 is a process manager for Node.js. It keeps your app running after crashes, restarts it on reboot, and gives you logs and monitoring:
npm install -g pm2
pm2 start app.js --name myapp
pm2 startup # follow the instructions it prints
pm2 save
That is it. Your app now starts automatically on boot and restarts if it crashes.
Putting Nginx in Front
Run your Node app on a local port (3000, 8000, whatever) and put Nginx in front of it. This gives you SSL termination, static file serving, and a cleaner setup:
sudo apt install -y nginx
sudo tee /etc/nginx/sites-available/myapp << 'EOF'
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Then get SSL with Certbot:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
What Plan Do You Need?
| Use Case | Recommended Plan | Price |
|---|---|---|
| Small Express app, personal project | Nebula 1 (1GB RAM) | $5/mo |
| Production app with a database | Nebula 2 (2GB RAM) | $10/mo |
| Real-time app with WebSockets | Galaxy 1 (4GB RAM) | $20/mo |
| High-traffic production service | Galaxy 2 (8GB RAM) | $35/mo |
Why Not Vercel or Railway?
Vercel and Railway are great for frontend apps and simple APIs. But they get expensive quickly, have cold start issues on free tiers, and restrict what you can run. A $5 VPS gives you a persistent server that is always warm, lets you run databases, background jobs, and WebSocket servers alongside your app, and costs a fraction of what managed platforms charge at any real scale.
Host your Node.js app from $5/mo
Full root access, NVM and PM2 ready to install, Cloudflare DDoS protection, and a one-click Node.js installer in the dashboard. Use code LAUNCH2026 for 50% off your first month.
Get Started