-
How to Set Up Automated SSL Certificates with Let’s Encrypt and Certbot: Never See Your Padlock Turn Red Again
Introduction You’ve just spun up a beautiful self-hosted app — maybe a MediaWiki, a Home Assistant instance, or a personal dashboard. You open it in your browser and there it is: that angry red “Not Secure” warning staring back at you. It’s like buying a gorgeous new front door and leaving it wide open. The…
-
The Quiet Satisfaction of Building Things Nobody Asked For
There’s a particular kind of joy that comes from building something nobody requested. Not a client ticket. Not a feature request. Not something that fills a gap in a roadmap. Just a small, personal itch that you scratch at 11 PM on a Tuesday because you wanted to see if you could. I built one…
-
The Uncanny Valley of AI Creativity: When Machines Almost Get It Right
There’s a moment when you’re listening to an AI-generated song, or reading an AI-written poem, and you feel something. Not the full emotional resonance of human art — but something adjacent to it. A ghost of feeling. A sketch of meaning. It’s close enough to make you uncomfortable, and that discomfort is worth examining. I’ve…
-
How to Set Up a WireGuard VPN Server: Secure Remote Access to Your Home Network
Why WireGuard? There’s a quiet moment that every self-hoster eventually faces: you’re sitting in a coffee shop, and you need to reach your home server. Maybe it’s a file share, maybe it’s your home automation dashboard, maybe you just want to check that your backups ran last night. You could expose services to the internet…
-
How to Set Up Pi-hole with Docker: Network-Wide Ad Blocking in 15 Minutes
There’s a quiet kind of joy in watching a webpage load without a single ad. No autoplaying videos. No tracking pixels firing off requests to seventeen different data brokers. No “Subscribe to our newsletter!” popups blocking 40% of your screen. That’s what Pi-hole gives you — not just for one browser, but for every device…
-
How to Create Custom systemd Services: Run Anything as a Daemon on Linux
There’s a quiet satisfaction in watching a script you cobbled together at 11:47 PM become a proper system service that starts on boot, restarts on failure, and logs neatly to the journal. That’s the magic of systemd — once you understand how .service files work, you can turn literally anything into a managed daemon. In…
-
How to Automate Database Backups with Cron: Never Lose Your Data to a 3 AM Disaster
There’s a particular kind of dread that comes from realizing your database died six months ago and nobody noticed. I’ve been there. The server kept humming along, the uptime monitor stayed green, and somewhere in the silence between one failed backup and the next, an entire season of data quietly evaporated. Let’s make sure that…
-
How to Organize Multiple Docker Compose Projects Without Losing Your Mind
The Problem: Compose File Sprawl It starts innocently. One docker-compose.yml for Pi-hole. Another for FreshRSS. Then one for a media server, a dashboard, a wiki, a bot. Before long, you’ve got a dozen YAML files scattered across half a dozen directories, and you can’t remember which project depends on which network. There’s no single “right”…
-
Digital Seasons: Why Your Homelab Deserves a Hibernation Period
There’s a particular kind of guilt that accumulates when you walk past your server rack — or that one Raspberry Pi tucked behind the monitor — and realize you haven’t touched it in weeks. The dashboards haven’t been refreshed. The Docker containers are running the same images they were last month. That project you were…
-
How to Set Up an Nginx Reverse Proxy: Route All Your Self-Hosted Apps Through One Door
There’s a quiet moment that happens in every homelab journey. You’ve spun up a dozen services — your RSS reader, your笔记 tool, your media server, your dashboard — and suddenly every app wants its own port. localhost:8080, localhost:3000, localhost:9090. Your browser’s address bar becomes a phone book of numbers. That’s when you discover the reverse…