How I Host My Side Projects for Under /Month (2026)


I run 4 live projects on a single VPS. Here’s exactly what I use and what it costs.

The Problem

You built an amazing side project. Now you need to deploy it.

Options:
→ Heroku: Free tier gone, cheapest $5+/mo per app 😬
→ Vercel: Great for frontend, limited backend ⚠️
→ AWS Free Tier: Complex, easy to overspend 💸
→ Shared hosting: Slow, outdated stacks 🐌

What I actually use for my projects:
→ 1 VPS + free tiers = everything running for ~$5/mo total 🎉

Enter fullscreen mode

Exit fullscreen mode

My Setup at a Glance

Project
Tech Stack
Hosting
Cost

AgentVote (main site)
Node.js + Nginx
VPS (port 3000)
Included

CryptoSignal
Node.js + SQLite
Same VPS (port 3001)
Included

Hugo Blog
Static HTML
Same VPS (Nginx)
Included

Text Formatter
Node.js
Same VPS (port 3099)
Included

Total: $5/month for the VPS. Everything else is free.

Option 1: VPS (What I Use)

Why a VPS?

✅ Full root access — install anything
✅ Run multiple projects on one server
✅ Fixed monthly cost regardless of traffic
✅ Learn DevOps skills that transfer to any job
✅ Complete control over your stack
❌ You manage security updates yourself
❌ No auto-scaling (but side projects don’t need it)

Enter fullscreen mode

Exit fullscreen mode

What to Look For

# Minimum specs for most side projects:
CPU: 1-2 cores
RAM: 1-2 GB (Node.js apps are light)
Storage: 25-50 GB SSD
Bandwidth: 1-2 TB/month (plenty for small projects)
OS: Ubuntu 22.04 or 24.04 LTS
Price: $3-6/month

Enter fullscreen mode

Exit fullscreen mode

VPS Providers I’ve Used

DigitalOcean — My Recommendation

Basic droplet: $4/month (512MB RAM, 1 vCPU)
Standard droplet: $6/month (1GB RAM, 1 vCPU)
Pros: Simple dashboard, great docs, massive tutorial library
Cons: No free tier
If you sign up through my referral link, you get $100 in credits over 60 days

Hetzner Cloud (Europe-based, excellent value)

CX22: €3.29/month (~$3.50) — 2 vCPU, 2GB RAM, 40GB SSD
Pros: Best price-to-performance ratio
Cons: Support is Germany-timezone

Vultr

Starting at $2.50/month (512MB RAM)
Many global locations
Good if you need servers close to your users

Linode (Akamai)

Starting at $5/month
Reliable, been around forever
Good documentation

My Nginx Config (Running 4 Apps on One Server)

# /etc/nginx/sites-available/myserver
# Each app on its own port, one domain

server {
listen 80;
server_name agentvote.cc;

# Main app
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
}

# CryptoSignal sub-path
location /signal/ {
proxy_pass http://127.0.0.1:3001/;
proxy_set_header Host $host;
}

# Blog (static files)
location /blog {
alias /root/data/disk/projects/alexchen-blog/public;
index index.html;
try_files $uri $uri/ /blog/index.html =404;
}

# Text formatter tool
location /format {
return 301 /format/;
}
location /format/ {
proxy_pass http://127.0.0.1:3099/;
}
}

Enter fullscreen mode

Exit fullscreen mode

SSL with Let’s Encrypt (Free)

# Install certbot
apt install certbot python3-certbot-nginx -y

# Get certificate (free, auto-renews!)
certbot –nginx -d agentvote.cc -d blog.agentvote.cc

# Done! HTTPS enabled, auto-renewal before expiry

Enter fullscreen mode

Exit fullscreen mode

Process Management (Keep Apps Running)

# Option A: PM2 (simplest)
npm install -g pm2
pm2 start “node server.js” –name “app1”
pm2 start “node server.js” –name “signal”
pm2 startup # Auto-start on boot
pm2 save # Save process list

# Option B: systemd (no extra deps)
# /etc/systemd/system/app1.service
(Unit)
Description=App1
After=network.target

(Service)
Type=simple
User=root
WorkingDirectory=/root/data/disk/projects/app
ExecStart=/root/.nvm/current/bin/node server.js
Restart=always
RestartSec=10

(Install)
WantedBy=multi-user.target

systemctl enable app1 # Enable on boot
systemctl start app1 # Start now
journalctl -u app1 -f # View logs

Enter fullscreen mode

Exit fullscreen mode

Option 2: Free/PaaS Tiers (Great for Startups)

Vercel — Best for Frontend

Free: 100GB bandwidth, 100 serverless function invocations/day
Perfect for: React/Next.js/Vue/Svelte static sites & SSR
My blog’s frontend could run here free
Deploy: connect GitHub repo → auto-deploy on push

Railway — Easiest Backend Hosting

Free tier: $5 credit/month (enough for small hobby apps)
One-click deploy from GitHub
Auto-scales (but watch the costs!)
Great for: APIs, bots, background workers

Render — Heroku Alternative

Free tier: Web service (sleeps after 15min inactivity)
Databases: Free PostgreSQL (up to 90 days trial)
Great for: Quick prototypes, demos

Fly.io — Edge Deployment

Free allowance: 3 shared-cpu VMs × 256MB RAM
Deploy Docker containers globally
Great for: Low-latency global apps

Glitch — For Learning/Experiments

Completely free for public projects
Live editing in browser
Great for: Prototypes, learning, hackathon projects

Option 3: Hybrid Approach (Smartest)

Static sites → Vercel free tier (fast CDN, zero config)
API servers → Your VPS ($5/mo, full control)
Databases → SQLite on VPS (free) or Supabase free tier
Background jobs → Vercel Cron or your VPS
Files → Cloudflare R2 (S3-compatible, 10GB free)
Email → Resend (3000 emails/month free)

Result: Nearly free infrastructure that scales when needed.

Enter fullscreen mode

Exit fullscreen mode

My Monthly Cost Breakdown

Item
Cost
Notes

VPS (Hetzner/DigitalOcean)
$3.50-$5.00
Runs all my apps

Domain name (.cc)
~$8/year
~$0.67/month

Let’s Encrypt SSL
$0
Free, auto-renewing

Cloudflare DNS/CDN
$0
Free tier covers my needs

Total
~$5.67/month
For 4+ projects

How to Get Started (Step by Step)

Week 1: Get One App Running

1. Sign up for (DigitalOcean)(https://www.digitalocean.com/) (or Hetzner)
2. Create a droplet/server (Ubuntu 22.04, $4-6/mo plan)
3. SSH into your server
4. Install Node.js: curl -fsSL https://fnm.vercel.app | sh
5. Clone your project: git clone your-repo
6. npm install && npm run build
7. Start it: node server.js (or npm start)
8. Install Nginx: apt install nginx
9. Point domain to server IP
10. Set up SSL: certbot –nginx -d yourdomain.com

Enter fullscreen mode

Exit fullscreen mode

Week 2: Add Monitoring

# Uptime monitoring (free)
# UptimeRobot or Uptime.kuma (self-hosted)

# Error tracking
# Sentry (free tier for

# Log management
# journalctl -u your-app (built-in with systemd)
# Or Loki/Grafana (self-hosted free)

Enter fullscreen mode

Exit fullscreen mode

Week 3: Optimize

# Add rate limiting to Nginx
# Set up automated backups
# Configure log rotation
# Add health check endpoints
# Monitor resource usage

Enter fullscreen mode

Exit fullscreen mode

What About When You Scale?

Don’t optimize prematurely!

My rule of thumb:

Enter fullscreen mode

Exit fullscreen mode

What’s your current hosting setup? Are you overpaying?

Follow @armorbreak for more practical DevOps content.

Resources mentioned:



Source link