πŸ‘‹ 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