What's installed on your Node.js server?
- Node.js 26 LTS and npm from the NodeSource repository
- PM2 7, which keeps your app running and brings it back after a reboot
- Caddy as a reverse proxy: it gets its own HTTPS certificate, and the site opens on an sslip.io address based on your IP
- An unprivileged app user and a /home/app/uygulama project folder
- A sample server.js listening on 127.0.0.1:3000
- git, so you can pull in your code
- Firewall with ports 22, 80 and 443 open, while your app's port 3000 stays internal
What size do you need for Node.js?
Node.js has no official RAM figure. As a rule of thumb, 1 GB works as a start for one API or small Express app, 2 GB is more comfortable once npm install and a build step are involved, and 4 GB suits a large front-end build. This install doesn't add swap, so a build stops when memory runs out. When you add CPU cores, pm2 start server.js -i max runs one process per core. You change the size from your panel, and your data and IP address stay the same.
| Use | Size | Price | Choose |
|---|---|---|---|
| Starter | 1 GB RAM · 1 vCore · 25 GB NVMe | $2.58/mo | |
| Medium | 2 GB RAM · 1 vCore · 40 GB NVMe | $4.01/mo | |
| Powerful | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/mo |
Who is it for?
- Developers writing APIs with Express, Fastify or NestJS
- Apps that use WebSockets, which Caddy passes through to your process
- Bots, queue workers and scheduled jobs that need to keep running
- People who'd rather run a plain server themselves than depend on a deployment platform
- Projects with users in Turkey that want their API in Istanbul
What happens after you order?
- Set the size and complete your payment.
- Your server starts and Node.js installs itself. This took about 3 minutes in our real-server tests.
- On your panel's Overview tab, open the Site address link. The sample page shows the Node.js version.
- Connect over SSH, run su - app and go to the folder with cd ~/uygulama. Delete the sample server.js and bring in your code with git clone.
- Run npm install, then pm2 delete uygulama, pm2 start server.js --name uygulama with your own entry file, and pm2 save.
- Have your app listen on port 3000. Caddy forwards incoming HTTPS requests to it.
With every server
- Daily backups included in the price
- Unlimited traffic
- Full root access
- Scale RAM and CPU up or down later, and grow the disk
- Location: Istanbul · IST-1.
Good to know
- If your app listens on another port, change the reverse_proxy line in /etc/caddy/Caddyfile and run systemctl reload caddy as root.
- Without pm2 save, your new process list isn't stored, and the old list comes back after a reboot.
- Build tools aren't included. For packages that compile native modules, run apt install build-essential as root.
- No database is installed. Connect your app to a separate database server or install one here yourself.
- Node.js stays on major version 26. Patches come through apt, but running apt upgrade and moving to a new major version are up to you.
- If a certificate can't be issued, the site opens over http on your IP address.
Node.js questions and answers
How do I deploy a Node.js app to a VPS?
Connect over SSH, run su - app and bring your code into ~/uygulama with git clone. Run npm install, start the app with pm2 start and store it with pm2 save. If it listens on port 3000, it opens at your HTTPS address.
How much RAM does Node.js hosting need?
Node.js has no official RAM figure. As a rule of thumb, 1 GB is a good start for a small API, 2 GB for a project with a build step and 4 GB for a large front-end build. If it isn't enough, you scale up from your panel.
Will my app come back after the server restarts?
Yes. PM2 starts at boot through a systemd service called pm2-app and restores the processes you saved with pm2 save. After starting a new app, remember to run pm2 save.
Can I run Next.js or Express?
Yes, any Node.js app that listens on port 3000 works. For Next.js, run npm run build, then pm2 start npm --name uygulama -- start. Builds usually need more memory than running the app, so scale up first for a large project.
How do I connect my own domain to a Node.js server?
Point your domain's A record at your server's IP address. Replace the old name everywhere in /etc/caddy/Caddyfile with your domain and run systemctl reload caddy as root. Caddy gets and renews the certificate by itself.
Can I use a different Node.js version?
Yes, since you have root. Version 26 LTS is what's installed. For another version, install nvm for the app user and point PM2 at that version's node binary with the --interpreter option.