Self-hosting your first web app — the no-nonsense guide

 I spent way too long being intimidated by self-hosting. It seemed like something only sysadmin wizards did. Then I actually tried it — and it took one afternoon. Here’s the exact process I followed.

What you need

  • A cheap VPS (I use Hetzner — €4/month for a 2-core, 4GB RAM instance)
  • A domain name (~$10/year)
  • Basic comfort with the terminal

Step 1 — Point your domain

Add an A record in your DNS provider pointing to your VPS IP. Propagation usually takes under 5 minutes with Cloudflare.

Step 2 — Install Nginx and Certbot

sudo apt update && sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com

Step 3 — Deploy your app

For a Node.js app, use PM2 to keep it alive. For a Python app, use gunicorn + a systemd service. The pattern is always the same: run your app on a local port, then proxy it through Nginx.

# Nginx config snippet
location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Host $host;
}
The hardest part isn’t the setup — it’s convincing yourself you can do it.

That’s genuinely it. You now have a live app with HTTPS, served from your own server, at a fraction of what AWS or Vercel would cost at scale.

Post a Comment

Previous Post Next Post