Anvil Career
Back to Blog
TECHNICAL SKILLS

Deploy a Node.js App on a VPS in 24 Hours: The Skill That Gets You Past Resume Screening

9 min read

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 ₹99 DOMAIN IS THE HIGHEST-ROI INVESTMENT YOU CAN MAKE IN YOUR PLACEMENT SEARCH

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.

The 24-Hour Deployment Pipeline THE 24-HOUR DEPLOYMENT PIPELINE 01. Provision VPS Oracle Cloud Free 02. Install Node + PM2 Runtime + Process 03. Configure Nginx Reverse Proxy 04. Domain + SSL Let's Encrypt 05. CI/CD Auto Deploy Estimated time: 8-12 hours total. Doable in one weekend. Deploy Friday night, finish Sunday evening. Pro tip: Document each step as you go. The terminal commands you run become content for your README. A deployment guide in your own README proves you understand the process, not just the outcome.

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.

CI/CD Pipeline for Node.js VPS Deployment CI/CD PIPELINE: AUTO-DEPLOY ON EVERY PUSH git push to main GitHub Actions Runs: SSH into VPS git pull origin main npm install Install dependencies Run migrations pm2 restart App restarts with new code. Zero downtime. The entire pipeline runs in under 2 minutes, triggered automatically on every push to main. You write code. You push. It is live. This is how production teams work.

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."