Express, Fastify, Next.js, NestJS, Remix: run any Node.js app on a VPS you control. npm install, point a domain, ship. No compute units or cold starts.
Heroku, Render, Fly, and Vercel are useful platforms until a traffic spike changes the bill. Scale-to-zero can also become wake-up latency that users feel as cold starts.
A VPS is a predictable flat fee. Run any version of Node, any framework, any database. Drop in a Postgres on the same box. Use PM2 or systemd. The whole stack is yours.
nvm-install, install 18 / 20 / 22 side by side, switch per project.
No managed-DB markup. Postgres / Redis / SQLite on the same VPS for free.
Run your app under PM2 or systemd. Auto-restart on crash, restart on reboot.
Always warm. No idle suspension, no first-request lag.
git clone to "it's live" in 10 minutes.nvm or nodesource apt repocertbot)pm2 or a systemd unit to keep your app running$3/$5/$15 plans with the same bill regardless of request count.
Modern hardware. Your build steps and DB queries don't run on commodity SATA.
Run any Node version, any database, any deployment tool. No platform restrictions.
Before that big migration, snapshot. Roll back in seconds if it goes sideways.
Hosted in Florida with flat monthly pricing and no long-term contract.
Flat fee, full root, no cold starts. Move off the platform billing treadmill.
Concrete setup details for the first deploy, the firewall, and the first thing to check when something acts strange.
Run the app on localhost, commonly 3000 or 8080, then proxy public traffic through Nginx or Caddy on 80 and 443.
Nano works for small bots and APIs. Starter is better for Next.js, queues, or anything with Redis/Postgres nearby.
Use systemd or PM2, keep secrets in environment files, and terminate TLS at the reverse proxy.
If deploys hang, check journalctl, npm build memory use, reverse proxy upstream settings, and whether the app binds to 127.0.0.1 or 0.0.0.0.