π About Me
π whoami
Hey, I'm Leo β a homelab tinkerer who breaks things on purpose so I understand them well enough to fix them better. I don't really call myself a developer; I'm the person who'd rather run the cluster than just read about it.
Most of what I do lives in a self-hosted homelab I treat like a tiny production environment β version-controlled, automated, and held together by equal parts curiosity and stubbornness. This blog runs on it too: Ghost on a k3s cluster, deployed by GitOps, behind a Cloudflare Tunnel. (The terminal theme you're looking at? I built it by driving an AI agent end-to-end β design, code, debugging, and deploys.)
the lab
- βΈοΈ k3s β the source of truth for everything I self-host, reconciled by Flux
- π Vault + External Secrets β nothing sensitive lives in plaintext
- πΈοΈ Tailscale β a flat, secure mesh across subnets and machines
- βοΈ Cloudflare Tunnel β exposed to the world without opening a single port
- π‘οΈ AdGuard Home β DNS, DoH/DoT, network-wide filtering
- π Traefik β ingress and routing, L7 & L4
- π§ Linux everywhere β Fedora, Debian, Proxmox, and whatever I break next
what I'm into
Automating the boring parts, debugging the weird parts, and wiring AI into my workflow β I've even got a Telegram-driven agent that SSHes into my machines to run ops for me. If it can be self-hosted, scripted, or made to reconcile itself, I'm probably already trying it (and pushing my RAM past 27GB doing it).
what's logged here
Field notes from the lab β the real ones:
- Fixes for problems I actually hit (the 2 a.m. kind)
- Self-hosting architectures and the decisions behind them
- Linux notes, mistakes, and the fixes that stuck
- Hardware and performance tradeoffs
If you self-host, tinker with networking, or just like taking things apart until they make sense β welcome. Pull up a terminal and stay a while.
$ β Leo