Updated Jun 19, 2026

Ship Your Side Project to the Internet

You built something. It runs on localhost:3000 and it works. And now there's a gap - the one nobody warns you about - between "it works on my machine" and "a stranger can open a URL and use it." That gap is small in concept and full of tiny, infuriating traps: billing that keeps running after you power off, an SSH key that's "permission denied" for five different reasons, a $ in your password that quietly breaks everything, a login that works locally and silently fails in production.

This guide walks the whole journey, once, end to end - the path a real first deploy actually takes - and flags every trap as a ⚠️ so it bites the page instead of you. We won't re-teach SSH or Docker or DNS from scratch; each has its own guide, and we'll link them. This is the map that strings them together into "my thing is live."

flowchart LR
  Local[your laptop] --> VPS[a VPS] --> Docker[Docker compose up] --> DNS[domain + DNS] --> CF[Cloudflare + HTTPS] --> Auto[auto-deploy on merge]

How to read this

  • First deploy ever? Read in order - it's the literal sequence you'll follow, top to bottom.
  • Stuck on one step? Each phase is self-contained; jump to the one that's fighting you (the ⚠️ callouts are the fixes).

The phases

  1. Pick a Cheap VPS - what specs you actually need, why the build needs more RAM than the app, and the billing trap.
  2. SSH In With a Key - keys not passwords, and the "Permission denied" decision tree.
  3. Docker & Your Private Repo - install Docker, get a private repo onto the box with a deploy key, compose up.
  4. Domains & DNS - buy one, point it, apex vs www, and the .dev HTTPS trap.
  5. Behind Cloudflare - free HTTPS, no open ports, and the cookie/CSRF must-dos that break logins.
  6. Auto-Deploy on Merge - merge to main, and it's live.

Every step here builds on a guide that goes deeper: What a Server Is · SSH & Keys · Docker Without the Magic · Docker Compose for Real Projects · Deploying to a VPS · HTTPS & TLS · Environment Variables & Config · Your First Pipeline (GitHub Actions). This guide is the end-to-end thread; reach for those when you want the full picture of one piece.