Building the laddzilla.com platform
This is entry #1 — and fittingly, it’s about the thing running everything else. I wanted one place to deploy and test the apps I build, reach them from anywhere, and keep a public log of what I’m working on. Here’s how the platform came together.
The stack
The whole thing runs on a single small Linux box, with a handful of pieces doing the heavy lifting:
- Hetzner Cloud — the VPS itself. A CPX21 (3 vCPU / 4 GB RAM) in a US region, which is plenty to run a self-hosted platform plus several small apps.
- Coolify — a self-hosted, Heroku-style dashboard. I push code and it builds, deploys, wires up a reverse proxy, and issues HTTPS. Full terminal access to the box stays mine.
- Cloudflare — DNS for the domain, plus a wildcard record so every subdomain points at the server automatically.
- Tailscale — a private network so half-built apps are reachable from my laptop and phone without ever being exposed to the public internet.
What it does
The payoff is that adding a new app is almost no work. I deploy in Coolify, pick a
subdomain like todo.laddzilla.com, and it’s live with a valid certificate a
moment later — no DNS edits, no manual nginx configs, no Let’s Encrypt dance. The
wildcard DNS record (*.laddzilla.com → the server) means the subdomain just
works the instant the app is up.
Public apps go through Coolify’s proxy; anything I want kept private lives behind Tailscale instead. And this log site — the one you’re reading — sits out front on its own, deliberately separate from the experiment box so a broken deploy can never take down the page other people actually see.
Things that bit me
A couple of snags worth remembering:
- Line endings. A setup script picked up Windows carriage returns and bash
choked on
set -euo pipefailwith a cryptic “invalid option name”. A quicksed -i 's/\r$//' script.shfixed it. Lesson: edit scripts on the server, not through a Windows editor. - Hardening vs. automation. I locked SSH down with
PermitRootLogin no, then Coolify couldn’t manage its own host — it connects as root over SSH. The fix wasPermitRootLogin prohibit-password: root can log in by key only, never by password, which keeps the box secure and lets Coolify do its job.
What’s next
Now that the platform is up, the plan is to actually build on it — each new project gets deployed here and gets an entry in this log. If you’re reading this, the pipeline works.