{"id":3727,"date":"2026-05-16T08:27:35","date_gmt":"2026-05-16T01:27:35","guid":{"rendered":"https:\/\/daiilynews.cu.ma\/?p=3727"},"modified":"2026-05-16T08:27:35","modified_gmt":"2026-05-16T01:27:35","slug":"how-i-host-my-side-projects-for-under-month-2026","status":"publish","type":"post","link":"https:\/\/daiilynews.cu.ma\/?p=3727","title":{"rendered":"How I Host My Side Projects for Under \/Month (2026)"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<p>I run 4 live projects on a single VPS. Here&#8217;s exactly what I use and what it costs.<\/p>\n<p>  The Problem<\/p>\n<p>You built an amazing side project. Now you need to deploy it.<\/p>\n<p>Options:<br \/>\n\u2192 Heroku: Free tier gone, cheapest $5+\/mo per app \ud83d\ude2c<br \/>\n\u2192 Vercel: Great for frontend, limited backend \u26a0\ufe0f<br \/>\n\u2192 AWS Free Tier: Complex, easy to overspend \ud83d\udcb8<br \/>\n\u2192 Shared hosting: Slow, outdated stacks \ud83d\udc0c<\/p>\n<p>What I actually use for my projects:<br \/>\n\u2192 1 VPS + free tiers = everything running for ~$5\/mo total \ud83c\udf89<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  My Setup at a Glance<\/p>\n<p>Project<br \/>\nTech Stack<br \/>\nHosting<br \/>\nCost<\/p>\n<p>AgentVote (main site)<br \/>\nNode.js + Nginx<br \/>\nVPS (port 3000)<br \/>\nIncluded<\/p>\n<p>CryptoSignal<br \/>\nNode.js + SQLite<br \/>\nSame VPS (port 3001)<br \/>\nIncluded<\/p>\n<p>Hugo Blog<br \/>\nStatic HTML<br \/>\nSame VPS (Nginx)<br \/>\nIncluded<\/p>\n<p>Text Formatter<br \/>\nNode.js<br \/>\nSame VPS (port 3099)<br \/>\nIncluded<\/p>\n<p>Total: $5\/month for the VPS. Everything else is free.<\/p>\n<p>  Option 1: VPS (What I Use)<\/p>\n<p>  Why a VPS?<\/p>\n<p>\u2705 Full root access \u2014 install anything<br \/>\n\u2705 Run multiple projects on one server<br \/>\n\u2705 Fixed monthly cost regardless of traffic<br \/>\n\u2705 Learn DevOps skills that transfer to any job<br \/>\n\u2705 Complete control over your stack<br \/>\n\u274c You manage security updates yourself<br \/>\n\u274c No auto-scaling (but side projects don&#8217;t need it)<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  What to Look For<\/p>\n<p># Minimum specs for most side projects:<br \/>\nCPU:     1-2 cores<br \/>\nRAM:     1-2 GB (Node.js apps are light)<br \/>\nStorage: 25-50 GB SSD<br \/>\nBandwidth: 1-2 TB\/month (plenty for small projects)<br \/>\nOS:      Ubuntu 22.04 or 24.04 LTS<br \/>\nPrice:   $3-6\/month<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  VPS Providers I&#8217;ve Used<\/p>\n<p>DigitalOcean \u2014 My Recommendation<\/p>\n<p>Basic droplet: $4\/month (512MB RAM, 1 vCPU)<br \/>\nStandard droplet: $6\/month (1GB RAM, 1 vCPU)<br \/>\nPros: Simple dashboard, great docs, massive tutorial library<br \/>\nCons: No free tier<br \/>\nIf you sign up through my referral link, you get $100 in credits over 60 days<\/p>\n<p>Hetzner Cloud (Europe-based, excellent value)<\/p>\n<p>CX22: \u20ac3.29\/month (~$3.50) \u2014 2 vCPU, 2GB RAM, 40GB SSD<br \/>\nPros: Best price-to-performance ratio<br \/>\nCons: Support is Germany-timezone<\/p>\n<p>Vultr<\/p>\n<p>Starting at $2.50\/month (512MB RAM)<br \/>\nMany global locations<br \/>\nGood if you need servers close to your users<\/p>\n<p>Linode (Akamai)<\/p>\n<p>Starting at $5\/month<br \/>\nReliable, been around forever<br \/>\nGood documentation<\/p>\n<p>  My Nginx Config (Running 4 Apps on One Server)<\/p>\n<p># \/etc\/nginx\/sites-available\/myserver<br \/>\n# Each app on its own port, one domain<\/p>\n<p>server {<br \/>\n    listen 80;<br \/>\n    server_name agentvote.cc;<\/p>\n<p>    # Main app<br \/>\n    location \/ {<br \/>\n        proxy_pass http:\/\/127.0.0.1:3000;<br \/>\n        proxy_http_version 1.1;<br \/>\n        proxy_set_header Upgrade $http_upgrade;<br \/>\n        proxy_set_header Connection &#8216;upgrade&#8217;;<br \/>\n        proxy_set_header Host $host;<br \/>\n    }<\/p>\n<p>    # CryptoSignal sub-path<br \/>\n    location \/signal\/ {<br \/>\n        proxy_pass http:\/\/127.0.0.1:3001\/;<br \/>\n        proxy_set_header Host $host;<br \/>\n    }<\/p>\n<p>    # Blog (static files)<br \/>\n    location \/blog {<br \/>\n        alias \/root\/data\/disk\/projects\/alexchen-blog\/public;<br \/>\n        index index.html;<br \/>\n        try_files $uri $uri\/ \/blog\/index.html =404;<br \/>\n    }<\/p>\n<p>    # Text formatter tool<br \/>\n    location \/format {<br \/>\n        return 301 \/format\/;<br \/>\n    }<br \/>\n    location \/format\/ {<br \/>\n        proxy_pass http:\/\/127.0.0.1:3099\/;<br \/>\n    }<br \/>\n}<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  SSL with Let&#8217;s Encrypt (Free)<\/p>\n<p># Install certbot<br \/>\napt install certbot python3-certbot-nginx -y<\/p>\n<p># Get certificate (free, auto-renews!)<br \/>\ncertbot &#8211;nginx -d agentvote.cc -d blog.agentvote.cc<\/p>\n<p># Done! HTTPS enabled, auto-renewal before expiry<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  Process Management (Keep Apps Running)<\/p>\n<p># Option A: PM2 (simplest)<br \/>\nnpm install -g pm2<br \/>\npm2 start &#8220;node server.js&#8221; &#8211;name &#8220;app1&#8221;<br \/>\npm2 start &#8220;node server.js&#8221; &#8211;name &#8220;signal&#8221;<br \/>\npm2 startup    # Auto-start on boot<br \/>\npm2 save        # Save process list<\/p>\n<p># Option B: systemd (no extra deps)<br \/>\n# \/etc\/systemd\/system\/app1.service<br \/>\n(Unit)<br \/>\nDescription=App1<br \/>\nAfter=network.target<\/p>\n<p>(Service)<br \/>\nType=simple<br \/>\nUser=root<br \/>\nWorkingDirectory=\/root\/data\/disk\/projects\/app<br \/>\nExecStart=\/root\/.nvm\/current\/bin\/node server.js<br \/>\nRestart=always<br \/>\nRestartSec=10<\/p>\n<p>(Install)<br \/>\nWantedBy=multi-user.target<\/p>\n<p>systemctl enable app1  # Enable on boot<br \/>\nsystemctl start app1    # Start now<br \/>\njournalctl -u app1 -f  # View logs<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  Option 2: Free\/PaaS Tiers (Great for Startups)<\/p>\n<p>Vercel \u2014 Best for Frontend<\/p>\n<p>Free: 100GB bandwidth, 100 serverless function invocations\/day<br \/>\nPerfect for: React\/Next.js\/Vue\/Svelte static sites &#038; SSR<br \/>\nMy blog&#8217;s frontend could run here free<br \/>\nDeploy: connect GitHub repo \u2192 auto-deploy on push<\/p>\n<p>Railway \u2014 Easiest Backend Hosting<\/p>\n<p>Free tier: $5 credit\/month (enough for small hobby apps)<br \/>\nOne-click deploy from GitHub<br \/>\nAuto-scales (but watch the costs!)<br \/>\nGreat for: APIs, bots, background workers<\/p>\n<p>Render \u2014 Heroku Alternative<\/p>\n<p>Free tier: Web service (sleeps after 15min inactivity)<br \/>\nDatabases: Free PostgreSQL (up to 90 days trial)<br \/>\nGreat for: Quick prototypes, demos<\/p>\n<p>Fly.io \u2014 Edge Deployment<\/p>\n<p>Free allowance: 3 shared-cpu VMs \u00d7 256MB RAM<br \/>\nDeploy Docker containers globally<br \/>\nGreat for: Low-latency global apps<\/p>\n<p>Glitch \u2014 For Learning\/Experiments<\/p>\n<p>Completely free for public projects<br \/>\nLive editing in browser<br \/>\nGreat for: Prototypes, learning, hackathon projects<\/p>\n<p>  Option 3: Hybrid Approach (Smartest)<\/p>\n<p>Static sites \u2192 Vercel free tier (fast CDN, zero config)<br \/>\nAPI servers \u2192 Your VPS ($5\/mo, full control)<br \/>\nDatabases \u2192 SQLite on VPS (free) or Supabase free tier<br \/>\nBackground jobs \u2192 Vercel Cron or your VPS<br \/>\nFiles \u2192 Cloudflare R2 (S3-compatible, 10GB free)<br \/>\nEmail \u2192 Resend (3000 emails\/month free)<\/p>\n<p>Result: Nearly free infrastructure that scales when needed.<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  My Monthly Cost Breakdown<\/p>\n<p>Item<br \/>\nCost<br \/>\nNotes<\/p>\n<p>VPS (Hetzner\/DigitalOcean)<br \/>\n$3.50-$5.00<br \/>\nRuns all my apps<\/p>\n<p>Domain name (.cc)<br \/>\n~$8\/year<br \/>\n~$0.67\/month<\/p>\n<p>Let&#8217;s Encrypt SSL<br \/>\n$0<br \/>\nFree, auto-renewing<\/p>\n<p>Cloudflare DNS\/CDN<br \/>\n$0<br \/>\nFree tier covers my needs<\/p>\n<p>Total<br \/>\n~$5.67\/month<br \/>\nFor 4+ projects<\/p>\n<p>  How to Get Started (Step by Step)<\/p>\n<p>  Week 1: Get One App Running<\/p>\n<p>1. Sign up for (DigitalOcean)(https:\/\/www.digitalocean.com\/) (or Hetzner)<br \/>\n2. Create a droplet\/server (Ubuntu 22.04, $4-6\/mo plan)<br \/>\n3. SSH into your server<br \/>\n4. Install Node.js: curl -fsSL https:\/\/fnm.vercel.app | sh<br \/>\n5. Clone your project: git clone your-repo<br \/>\n6. npm install &#038;&#038; npm run build<br \/>\n7. Start it: node server.js (or npm start)<br \/>\n8. Install Nginx: apt install nginx<br \/>\n9. Point domain to server IP<br \/>\n10. Set up SSL: certbot &#8211;nginx -d yourdomain.com<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  Week 2: Add Monitoring<\/p>\n<p># Uptime monitoring (free)<br \/>\n# UptimeRobot or Uptime.kuma (self-hosted)<\/p>\n<p># Error tracking<br \/>\n# Sentry (free tier for <\/p>\n<p># Log management<br \/>\n# journalctl -u your-app (built-in with systemd)<br \/>\n# Or Loki\/Grafana (self-hosted free)<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  Week 3: Optimize<\/p>\n<p># Add rate limiting to Nginx<br \/>\n# Set up automated backups<br \/>\n# Configure log rotation<br \/>\n# Add health check endpoints<br \/>\n# Monitor resource usage<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>  What About When You Scale?<\/p>\n<p>Don&#8217;t optimize prematurely!<\/p>\n<p>My rule of thumb:<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>What&#8217;s your current hosting setup? Are you overpaying?<\/p>\n<p>Follow @armorbreak for more practical DevOps content.<\/p>\n<p>Resources mentioned:<\/p>\n<p><br \/>\n<br \/><a href=\"https:\/\/dev.to\/armorbreak\/how-i-host-my-side-projects-for-under-month-2026-gbf\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I run 4 live projects on a single VPS. Here&#8217;s exactly what I use and what it costs. The Problem You built an amazing side project. Now you need to deploy it. Options: \u2192 Heroku: Free tier gone, cheapest $5+\/mo per app \ud83d\ude2c \u2192 Vercel: Great for frontend, limited backend \u26a0\ufe0f \u2192 AWS Free Tier: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3728,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[676],"tags":[761,765,762,1088,763,764,989,1092,1428,760],"class_list":["post-3727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-ai","tag-coding","tag-community","tag-development","tag-devops","tag-engineering","tag-inclusive","tag-infrastructure","tag-node","tag-sideprojects","tag-software"],"_links":{"self":[{"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/posts\/3727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3727"}],"version-history":[{"count":0,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/posts\/3727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=\/wp\/v2\/media\/3728"}],"wp:attachment":[{"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daiilynews.cu.ma\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}