Where it lives
A static site has three good answers: a free global CDN, a fast deploy pipeline, or a box you own. Pick based on how much control you want, how much traffic you expect, and whether you already run a server somewhere.
The three options
$0 / month
Free tier covers this site forever. Global CDN, auto-TLS, deploys on every push.
$0 / month
The fastest path from a GitHub repo to a live URL. Free tier is generous, Pro is $19/mo if you grow.
€4.35 / month (CX22)
A box you own. Full control, runs other things too. More work to set up and maintain.
Option 1
Cloudflare Pages serves your site from their global edge network — ~300 cities. Your site loads fast for visitors everywhere, and you never think about capacity. Free tier is enough for a personal site forever.
The site must be in a GitHub repo (or GitLab/Bitbucket). See the README for the standard pattern.
Connect your GitHub account, pick the repo.
Framework preset: None. Build command: empty. Build output directory: website.
~30 seconds later your site is live at <project>.pages.dev.
Custom domains → set up. Cloudflare walks you through changing your nameservers (or adding a CNAME). TLS issues automatically.
Every push to main triggers a deploy. Preview URLs are generated for every branch and PR. Rollbacks are a click in the dashboard.
Option 2
Netlify is the original static-site host. The setup is slightly faster than Cloudflare (one less click), the dashboard is friendlier, but the free-tier limits are tighter and the CDN is smaller. Pick Netlify if you've used it before and prefer the workflow.
Same as Cloudflare — repo on GitHub first.
Pick the GitHub repo.
Build command: empty. Publish directory: website.
~20 seconds later your site is live at <random>.netlify.app.
Domain settings → Add domain. Netlify walks you through the DNS records and issues the cert.
If you've used neither before, the difference is mostly aesthetic. Both are excellent. The deciding factors:
Option 3
Self-hosting is the right call when you already have a box running other things, or you want one machine for static + dynamic (e.g. this site + a CRM + an Ollama server). The setup is more work, but the control is total.
4GB RAM, 40GB NVMe, €4.35/mo. Ubuntu 24.04. Note the public IPv4.
At your registrar, add an A record for taskaigenius.com → the box's IPv4. (And an AAAA for IPv6 if Hetzner assigned one.)
apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 22,80,443/tcp
ufw --force enable
mkdir -p /var/www/taskaigenius.com
rsync -av --delete ~/taskaigenius-site/website/ \
root@<box>:/var/www/taskaigenius.com/
server {
listen 80;
server_name taskaigenius.com www.taskaigenius.com;
root /var/www/taskaigenius.com;
index index.html;
location / { try_files $uri $uri/ =404; }
}
certbot --nginx -d taskaigenius.com -d www.taskaigenius.com
Updates are an rsync + reload away. No build step. certbot auto-renews via a systemd timer you didn't have to set up.
DNS primer
Skim this if you've never set up a domain before — it's the only piece of the puzzle that's actually tricky.
taskaigenius.com)GoDaddy, Cloudflare Registrar, Namecheap, Porkbun. Pay yearly, point the nameservers somewhere.
For Cloudflare Pages: it adds the CNAME for you. For Netlify: same. For Hetzner: you add an A record pointing at the box's IP.
Takes 5 minutes to 24 hours. Cloudflare and Netlify handle this in <5 min because they own the nameservers.
The host (or Caddy/certbot) requests a Let's Encrypt cert the first time someone hits your domain. Auto-renews forever.
That's it. Nothing more to do for a static site.
Decision tree
Answer in order — the first match wins.
/var/wwwWhere to run it
Cloudflare Pages and Netlify run on their hardware — you don't pick the box. Hetzner + nginx is where you start choosing. This section is for the people who want a physical machine at home or in a rack, running the static site *and* the Ollama server that powers it. The site itself is trivial (a 6-page static directory is ~77KB); the real cost is the model serving behind it.
Apple's tiny desktop. The "default" for local-first AI in 2026. Silent, sips power, unified memory is genuinely good for LLM inference.
NVIDIA's edge-AI board. Has a real GPU, runs Linux natively, and draws ~15–60W. More "embedded" than "desktop" — perfect for headless racks, kiosks, robotics.
The "I already have one" option. Any x86 box with enough RAM and a discrete NVIDIA GPU will run Ollama fine via WSL2. The mature path; the most software-compatible.
The "I run a homelab" option. Intel NUC, used Dell Optiplex, Beelink SER7, or a real 1U. Best price/perf, no Apple tax, no ARM weirdness.
At a glance
"I want a quiet box on my desk that runs everything."
RAM: 24GB+
Best models: 14B–20B Q4
Power: 25–80W
Noise: silent
Price: ~$1,500 new
"I want an edge device that sips power and has a real GPU."
RAM: 16GB unified
Best models: 7B–8B Q4
Power: 15–60W
Noise: silent
Price: ~$600
"I already have a gaming PC, give me a reason to use it."
VRAM: 12GB
Best models: 14B on GPU, 32B offload
Power: 200–400W
Noise: depends
Price: $0 (repurpose) or ~$300 used GPU
Common patterns
The Mac runs Ollama + Hermes + OpenClaw on your home network. The static site is on Cloudflare Pages (free, no port forwarding). Phone, laptop, and chat apps talk to the Mac over Tailscale. Cost: $1,500 one-time + $0/mo.
Jetson runs nginx serving the site + Ollama on the LAN. Tailscale for remote access, or a Cloudflare Tunnel for public access without opening ports. Cost: $600 one-time + $0/mo.
WSL2 + Ubuntu, nginx + Ollama + Hermes all running. Static site served from the box. Open port 80/443 to the world (or use Cloudflare Tunnel). Cost: $0 if you have a spare GPU, otherwise $300 used GPU.
Beelink sits in a homelab rack or on a shelf, runs everything. Hetzner Storage Box (€3.50/mo) backs up the configs and Modelfiles. Cloudflare in front of the Beelink for DDoS protection. Cost: $500 one-time + €3.50/mo.
Refurbished & budget
LLM inference doesn't need the latest silicon. A 3-year-old Mac mini or a 2-year-old gaming GPU runs the same models at 80–90% the speed of new hardware, for half the price.
All of these are 2-3 year-old silicon. The LLM world moves fast but inference is throughput-bound, not feature-bound — older hardware stays relevant longer than you'd expect.
What about a Raspberry Pi?
A Raspberry Pi 5 (8GB) can serve the static site fine — nginx + 77KB of HTML is nothing. But running a useful LLM on it is brutal: 8GB RAM, no GPU, slow CPU. You can technically run a 1B–3B model at 1–2 tokens/second, which is unusable for chat but might work for simple classification tasks.
If you want a tiny always-on box for *just the static site* (and Ollama is on a separate Mac/Jetson/desktop), the Pi 5 is fine. If you want the Pi to be the inference box, step up to a Jetson Orin Nano — same form factor, real GPU, 5–10× faster.