DEV Community

Alex Chen
Alex Chen

Posted on

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

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 🎉
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 <5K errors/month)

# 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:
< 100 users/month → VPS is overkill, use free PaaS
100-1000 users/month → Single VPS handles this easily
1000-10000 users/month → Add Redis, maybe separate DB
10000+ users/month → Time to think about proper architecture

By then, you're making money → pay for better hosting from revenue ♻️
Enter fullscreen mode Exit fullscreen mode

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

Follow @armorbreak for more practical DevOps content.


Resources mentioned:

Top comments (0)