How I Host My Side Projects for Under $5/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 🎉
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)
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
VPS Providers I've Used
, you get $100 in credits over 60 days Hetzner Cloud (Europe-based, excellent value) Vultr Linode (Akamai) — Easiest Backend Hosting — Edge Deployment for more practical DevOps content. Resources mentioned:
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/;
}
}
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
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
Option 2: Free/PaaS Tiers (Great for Startups)
— Frontend deployment (free tier)
— Free SSL certificates
Cloudflare — Free DNS + CDN
SOCIAL SHARE CARD GENERATOR