Deploy a Node.js App on a VPS in 24 Hours: The Skill That Gets You Past Resume Screening
Your project runs on localhost:3000. It works perfectly on your laptop. You have demonstrated it to your friends. You have listed it on your resume. The recruiter opens your GitHub, sees no live URL, and closes the tab. A project that only runs on localhost is indistinguishable from a project that was never finished. The fastest way to change how recruiters perceive your portfolio is to deploy your best project on a real server at a real domain. This article walks you through the 5-step deployment pipeline — from zero to a live, SSL-enabled Node.js application in 24 hours.
DEPLOYMENT PLATFORMS: WHAT RECRUITERS ACTUALLY VALUE
| PLATFORM | SETUP DIFFICULTY | RECRUITER SIGNAL VALUE | MONTHLY COST (FREE TIER) | BEST FOR |
|---|---|---|---|---|
| Vercel / Netlify | Very Easy | Low — platform handles everything. You clicked "Deploy." | ₹0 | Static sites. Frontend-only projects. |
| Render / Railway | Easy | Low-Medium — more configurable but still managed. | ₹0 (limited) | Quick API deploys. Backend prototypes. |
| Self-managed VPS (Oracle Cloud Free) | Medium-Hard | High — you configured the server, reverse proxy, SSL, and process management yourself. | ₹0 (Oracle Free Tier: 4 ARM cores, 24GB RAM) | Full-stack apps. The deployment recruiters want to see. |
A free Vercel subdomain (your-app.vercel.app) tells a recruiter: "I used the easiest platform available and stopped there." A custom domain (your-name.in or your-project.com) with SSL tells a recruiter: "I understand DNS. I understand SSL termination. I understand that production software runs at a real address." The difference in recruiter perception between these two URLs is larger than any single item on your resume. Buy a ₹99 .in domain from Namecheap or GoDaddy. Point it to your VPS IP address. It takes 15 minutes. It will return more placement ROI than 50 additional LeetCode problems.
Step 1: Provision a Free-Tier VPS
Oracle Cloud offers a generous Always Free Tier: up to 4 ARM-based Ampere cores, 24GB RAM, and 200GB storage — enough to run multiple applications. Sign up at oracle.com/cloud/free. Create an instance running Ubuntu 22.04. Download the SSH key. Connect via ssh -i your-key.pem ubuntu@your-instance-ip. Run sudo apt update && sudo apt upgrade. Your server is live.
Step 2: Install Node.js and PM2
Install Node.js using the NodeSource repository for the latest LTS version. Install PM2 globally: npm install -g pm2. PM2 keeps your Node.js process running in the background, restarts it if it crashes, and provides logs and monitoring. Clone your project repository onto the server, install dependencies, and start it with pm2 start app.js --name my-app.
NGINX CONFIGURATION REFERENCE
| DIRECTIVE | VALUE | WHY |
|---|---|---|
| server_name | your-domain.com www.your-domain.com | Tells Nginx which domain this server block handles |
| location / | proxy_pass http://localhost:3000 | Forwards all HTTP traffic to your Node.js app running on port 3000 |
| proxy_set_header Host | $host | Preserves the original host header so your app knows the real domain |
| proxy_set_header X-Real-IP | $remote_addr | Passes the client IP to your app (needed for rate limiting, logging) |
| listen 443 ssl | ssl_certificate /etc/letsencrypt/live/.../fullchain.pem | Enables HTTPS with your Let's Encrypt certificate |
Step 5: CI/CD with GitHub Actions
The final step is automation. A GitHub Actions workflow that deploys your app on every push to main eliminates the manual SSH-copy-paste cycle and signals professional maturity.
HOW TO LIST DEPLOYMENT ON YOUR RESUME: BEFORE AND AFTER
| BEFORE (WHAT IT SAYS TO A RECRUITER) | AFTER (WHAT IT SAYS TO A RECRUITER) |
|---|---|
| "Built a MERN stack e-commerce website" (vague, no URL, no deployment info) | "Built and deployed a full-stack placement dashboard at your-domain.com. Configured Nginx reverse proxy with SSL termination. Set up CI/CD pipeline with GitHub Actions for automated deployment on push to main. Managed process lifecycle with PM2." |
| "Developed REST API using Node.js and Express" (could be any tutorial project) | "Designed and deployed a rate-limited REST API at api.your-domain.com serving 12 endpoints. Configured CORS, JWT authentication middleware, and PostgreSQL with Prisma ORM. Deployment documented in README with architecture diagram." |