<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>heezy.blog</title><link>https://heezy.blog/</link><description>Recent content on heezy.blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 14 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://heezy.blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Cloudflare on IaC</title><link>https://heezy.blog/posts/cloudflare-iac/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/cloudflare-iac/</guid><description>&lt;p&gt;Everything in the lab is managed as code. FortiGate firewall rules, Proxmox VMs, Kubernetes manifests. Cloudflare was the last holdout. DNS records, tunnel config, and zone settings all lived in the dashboard, clicked into existence and never tracked anywhere. Time to fix that.&lt;/p&gt;</description></item><item><title>Docker 28, NVIDIA GPUs, and the cgroupns Trap</title><link>https://heezy.blog/posts/docker-gpu-cgroupns/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/docker-gpu-cgroupns/</guid><description>&lt;p&gt;Plex was pegging the CPU on every transcode. The GTX 1070 sitting in the box was doing nothing. The GPU was passed through to the container correctly, the NVIDIA driver capabilities were set, the device requests were in the compose file. Everything looked right. It wasn&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>Swapping a Drive in a 10-Year-Old FreeNAS Box</title><link>https://heezy.blog/posts/freenas-drive-swap/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/freenas-drive-swap/</guid><description>&lt;p&gt;My Freenas box is one of those things that I don&amp;rsquo;t touch unless I need to add capacity or if I pop a drive. Over the
years, this box was built from old Nutanix drives, and old web filter chassis, and even a set of four hand me down
drives that had been spinning in someone else&amp;rsquo;s array for 8+ years before I used them. After popping a drive every 3
months for a year or two, I was running out of spares, and patience. So I started replacing them over the past six
years, to expand capacity and finally make this thing a reliable piece of hardware that I could count on to hold my
stuff.&lt;/p&gt;
&lt;p&gt;Recently I purged about 4TB of media. And although I have about 6TB free of 42TB, I wish it was more. I figured with
everything going on in the world with increasing costs for global electronic goods, I decided I would replace the last
two ancient drives, before they become unavailable, or even more costly (hint: I was right, the price on the new
drives just jumped $80 in a single month).&lt;/p&gt;
&lt;p&gt;Today, this array consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2x 4TB hand-me-down Nutanix (Seagate and HGST, free)&lt;/li&gt;
&lt;li&gt;2x 4TB WD Red (bought new in January 2020, $100 each, 40GB per dollar)
&lt;img src="https://heezy.blog/posts/freenas-drive-swap/media/4tb%20cost.png" alt="4tb cost.png"&gt;&lt;/li&gt;
&lt;li&gt;2x 14TB Seagate Ironwolf ($247 each November 2022, 56GB per dollar)
&lt;img src="https://heezy.blog/posts/freenas-drive-swap/media/14tb%20cost.png" alt="14tb cost.png"&gt;&lt;/li&gt;
&lt;li&gt;2x 20TB WD Red ($270 each July 2023, 74GB per dollar)
&lt;img src="https://heezy.blog/posts/freenas-drive-swap/media/20tb%20cost.png" alt="20tb cost.png"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only affordably priced drives, with the capacity I needed were 16TB Seagate Ironwolf. I am not a big fan of Seagate,
considering my anecdotal experience with them outside of my array, but the price point and availability were a big
factor. WD Reds were outside my budget, and so these were the only drives I could find that I could get within a month.&lt;/p&gt;
&lt;p&gt;And even more of a pain in the ass, the limit for both Amazon and NewEgg were one per address, but fortunately both had
the same model in stock. So I bought them.&lt;/p&gt;
&lt;p&gt;$379 each, 42GB per dollar. Looking back at my pricing and purchase history, I purchased larger drives every time, which
gives you better value for your dollar, but the fact I just bought 32TB of disks for 42GB per dollar, that is like I was
buying them back in 2020 in the smallest sizing possible.&lt;/p&gt;</description></item><item><title>Pi-hole on Kubernetes with MetalLB and a Ruckus SSID</title><link>https://heezy.blog/posts/pihole-metallb-ruckus/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/pihole-metallb-ruckus/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;
Switch and Ruckus configuration pending. Screenshots to be added.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pi-hole was already running on the cluster. It worked fine from inside the cluster and via NodePort on weird high ports. The problem was that no actual client device could use it as a DNS server, because DNS clients expect port 53 and NodePort gives you 30054.&lt;/p&gt;
&lt;p&gt;What started as &amp;ldquo;just give Pi-hole a real IP&amp;rdquo; turned into a new VLAN, a new DHCP server, firewall policy changes, switch configuration, and a Ruckus SSID. The usual homelab scope creep.&lt;/p&gt;</description></item><item><title>Scope Creep and Its Cousins</title><link>https://heezy.blog/posts/scope-creep/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/scope-creep/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;TODO: Write blog post about scope creep, and the various forms it takes, and its related cousins: unclear requirements, bad information, or repeated work.&lt;/p&gt;</description></item><item><title>About This Site</title><link>https://heezy.blog/posts/about-this-site/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/about-this-site/</guid><description>&lt;p&gt;This site is built with &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; using the &lt;a href="https://github.com/panr/hugo-theme-terminal"&gt;Terminal&lt;/a&gt; theme. The Hugo static site is compiled inside a Docker
multi-stage build, bundled into a &lt;a href="https://github.com/linuxserver/docker-swag"&gt;SWAG&lt;/a&gt; container image, pushed to Amazon ECR, and deployed to a MicroK8s cluster
via GitHub Actions. Source content lives in a Git repo and a push to main triggers the full build-and-deploy pipeline
automatically.&lt;/p&gt;</description></item><item><title>Game Servers</title><link>https://heezy.blog/posts/game-servers/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/game-servers/</guid><description>&lt;p&gt;Game servers running on dedicated DMZ VMs as Docker Compose workloads. Provisioned by Terraform, configured by Ansible, deployed through GitHub Actions.&lt;/p&gt;</description></item><item><title>Giving a 2012 Mac Mini a Second Life with Debian and XFCE</title><link>https://heezy.blog/posts/mac-mini-debian-xfce/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/mac-mini-debian-xfce/</guid><description>&lt;p&gt;I had a 2012 Mac Mini sitting in a drawer. Apple stopped supporting it years ago, macOS ran like garbage on it, and it had been collecting dust. I put Debian 12 with XFCE on it, swapped the spinning disk for an SSD I already had, and now it&amp;rsquo;s my kid&amp;rsquo;s Minecraft machine.&lt;/p&gt;</description></item><item><title>Minecraft, Modding, and Why Java Edition Is a Gateway Drug to Computer Science</title><link>https://heezy.blog/posts/minecraft-modding-and-java/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/minecraft-modding-and-java/</guid><description>&lt;p&gt;Minecraft Java Edition is a 15-year-old Java application with a plugin architecture, a third-party dependency ecosystem that rivals Maven Central in complexity, and a deployment model that will feel immediately familiar to anyone who&amp;rsquo;s ever managed a production service. I run three instances of it. One is a stock binary for the kids. The other two are modded Java servers with 30+ managed dependencies, version-pinned artifacts, and CI-driven deployments. The modded servers are where it stops being a game and starts being software operations.&lt;/p&gt;</description></item><item><title>Vendor Relationships and Free Enterprise Gear</title><link>https://heezy.blog/posts/vendor-relationships-and-free-gear/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/vendor-relationships-and-free-gear/</guid><description>&lt;p&gt;If you work in enterprise IT long enough, vendor sales reps will give you free hardware. They&amp;rsquo;re not doing it out of kindness. They&amp;rsquo;re doing it because getting their gear into your environment is how they close deals, and giving you a demo unit or letting you keep eval hardware costs them nothing compared to the support contracts and renewals they&amp;rsquo;re chasing.&lt;/p&gt;</description></item><item><title>Vendor Relationships and Free Food</title><link>https://heezy.blog/posts/vendor-relationships-and-free-food/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/vendor-relationships-and-free-food/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&amp;rsquo;ve ever been to Cisco Live, AWS re:Invent, or any vendor conference with a badge and a pulse, you know the drill. Free meals, free drinks, free swag, free everything. Vendors spend more on a single dinner at a steakhouse with six engineers than most people spend on groceries in a month. And that&amp;rsquo;s before the expo hall opens and you&amp;rsquo;re walking out with a suitcase full of t-shirts, water bottles, and a drone you won from spinning a wheel.&lt;/p&gt;</description></item><item><title>Why I Host Old Games</title><link>https://heezy.blog/posts/why-i-host-old-games/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/why-i-host-old-games/</guid><description>&lt;p&gt;Yes, I still run a CS 1.6 server. I have a Discord alert that pings me the second someone connects so I can drop what I&amp;rsquo;m doing and go play. I&amp;rsquo;m 41 years old.&lt;/p&gt;</description></item><item><title>Hosting a Blog on Kubernetes Through Cloudflare with Zero Exposed Ports</title><link>https://heezy.blog/posts/swag-cloudflare-blog-hosting/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/swag-cloudflare-blog-hosting/</guid><description>&lt;p&gt;I wanted a blog. Not a WordPress instance, not a hosted platform, not something I pay monthly for. A static site built with Hugo, baked into a container image, served by nginx, tunneled through Cloudflare, running on my Kubernetes cluster at home. No ports exposed to the internet. No public IP pointing at my house. Just a Cloudflare Tunnel and a reverse proxy.&lt;/p&gt;</description></item><item><title>Split DNS, MetalLB, and the dnsmasq Debugging Saga</title><link>https://heezy.blog/posts/internal-dns-rollout-dnsmasq-metallb/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/internal-dns-rollout-dnsmasq-metallb/</guid><description>&lt;p&gt;This is the story of building split-horizon DNS for a homelab with four VLANs, a FortiGate firewall, a 5-node MicroK8s cluster, and a Cloudflare tunnel. Then spending hours debugging why dnsmasq wouldn&amp;rsquo;t answer queries despite the port being open, the firewall allowing traffic, and the container running fine. The entire implementation and debugging session was driven through MCP tooling.&lt;/p&gt;</description></item><item><title>The LGTM Stack: Monitoring a Homelab Like It's Production</title><link>https://heezy.blog/posts/lgtm-monitoring-stack/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/lgtm-monitoring-stack/</guid><description>&lt;p&gt;The monitoring stack runs on a dedicated VM at 10.x.x.x (shared-lgtm), deliberately separate from the Kubernetes cluster it watches. If the cluster goes down, the thing watching it needs to still be running. Seven containers in a single Docker Compose stack handle metrics collection, log aggregation, long-term storage, tracing, and dashboards with alerting. The whole thing is deployed and configured by a single Ansible role (&lt;code&gt;roles/lgtm/&lt;/code&gt;) with Jinja2 templates for every config file. Push a change, GitHub Actions runs the playbook, Ansible templates the configs and restarts the stack. This post covers what each component does, what gets scraped, and how alerting works.&lt;/p&gt;</description></item><item><title>A Dumpster-Bound R710 That Ran for Another 8 Years</title><link>https://heezy.blog/posts/enterprise-hardware-and-ewaste/</link><pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/enterprise-hardware-and-ewaste/</guid><description>&lt;p&gt;In 2017, I was doing a job at a motorcycle dealership during maintenance hours. One of those loud, overpriced, American-branded, made-in-Mexico free-rider-problem motorcycle dealers with a sticker cost that would make you believe it was an ass-wiping robot. A motorcycle dealer doesn&amp;rsquo;t need much from a systems perspective, but they need the typical things. Networking, storage, servers. We were pulling out a bunch of old servers and switch equipment as part of a refresh on sales-and-vendor-recommended support schedules, and my peer Joe told me to throw them away. I asked if I could have one instead. He said yes.&lt;/p&gt;
&lt;div style="display: flex; gap: 1rem; flex-wrap: wrap;"&gt;
&lt;img src="images/south-park-bikers-1.png" alt="South Park bikers 1" style="flex: 1; min-width: 200px; max-width: 480px; width: 100%;" /&gt;
&lt;img src="images/south-park-bikers-2.png" alt="South Park bikers 2" style="flex: 1; min-width: 200px; max-width: 480px; width: 100%;" /&gt;
&lt;/div&gt;</description></item><item><title>Networking the Heezy: VLANs, Firewall Zones, and How Traffic Moves</title><link>https://heezy.blog/posts/networking-vlans-and-firewall/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/networking-vlans-and-firewall/</guid><description>&lt;p&gt;The network is the foundation of everything in the lab. Four VLANs, a FortiGate doing all the routing, a Cisco 3560 doing the switching, and a set of rules about what can talk to what. This post covers how it&amp;rsquo;s all wired together, how DNS works across zones, and how remote access gets in without exposing anything to the internet.&lt;/p&gt;</description></item><item><title>The Heezy: A Homelab That Got Out of Hand</title><link>https://heezy.blog/posts/the-heezy-architecture/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/the-heezy-architecture/</guid><description>&lt;h2 id="contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-even-is-a-heezy"&gt;What Even Is a Heezy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-network"&gt;The Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-kubernetes-cluster"&gt;The Kubernetes Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-runs-on-the-cluster"&gt;What Runs on the Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-dmz"&gt;The DMZ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#monitoring"&gt;Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#dns"&gt;DNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#infrastructure-as-code"&gt;Infrastructure as Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-aws-bootstrap-cdk-first-everything-else-after"&gt;The AWS Bootstrap: CDK First, Everything Else After&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#secrets"&gt;Secrets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-id-do-differently"&gt;What I&amp;rsquo;d Do Differently&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-name"&gt;The Name&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-even-is-a-heezy"&gt;What Even Is a Heezy&lt;/h2&gt;
&lt;p&gt;If you grew up in the early 2000s, you probably remember when Snoop Dogg had everyone adding &amp;ldquo;-izzle&amp;rdquo; to everything. &amp;ldquo;For sheezy&amp;rdquo; was peak vocabulary for a 12-year-old who spent too much time on Counter-Strike and not enough time on homework. &amp;ldquo;Heezy&amp;rdquo; rhymes with &amp;ldquo;easy,&amp;rdquo; which is what I told myself this project would be. It was not easy. But the name stuck, and now my entire infrastructure is named after slang that peaked in 2003. No regrets.&lt;/p&gt;</description></item><item><title>Running 25+ Services on a 5-Node MicroK8s Cluster</title><link>https://heezy.blog/posts/kubernetes-cluster-build-and-operations/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/kubernetes-cluster-build-and-operations/</guid><description>&lt;p&gt;This is the full story of building a MicroK8s cluster from scratch, migrating a Docker Compose stack onto it, and all the things that broke along the way. If you&amp;rsquo;re thinking about running Kubernetes at home for self-hosted services, this is what it actually looks like.&lt;/p&gt;</description></item><item><title>Tailscale, FortiGate CVEs, and Remote Access That Doesn't Suck</title><link>https://heezy.blog/posts/tailscale-remote-access/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/tailscale-remote-access/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;
This post is a work in progress.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="the-problem"&gt;The Problem&lt;/h2&gt;
&lt;p&gt;I need to reach into my home network from anywhere. SSH into nodes, check Grafana dashboards, access services that aren&amp;rsquo;t exposed through Cloudflare. The traditional answer is a VPN, and I have a FortiGate sitting right there with IPSec and SSL VPN capabilities built in.&lt;/p&gt;</description></item><item><title>The Budget Home Datacenter</title><link>https://heezy.blog/posts/budget-home-datacenter/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/budget-home-datacenter/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;
This post is a work in progress. Photos are being added. Some sections are incomplete. And some photos are just wrong&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is the physical side of the homelab. Not the software, not the automation, not the Kubernetes cluster. The actual rack, the wiring, the hardware, and the questionable carpentry that holds it all together.&lt;/p&gt;</description></item><item><title>Cheap NVMe, Dead Talos, and How I Ended Up on MicroK8s</title><link>https://heezy.blog/posts/thinkcentre-talos-microk8s/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/thinkcentre-talos-microk8s/</guid><description>&lt;p&gt;I wanted to experiment with Kubernetes on a budget. The rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Five nodes&lt;/li&gt;
&lt;li&gt;Intel QuickSync-compatible processors for hardware transcoding&lt;/li&gt;
&lt;li&gt;As cheap as possible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found a bulk refurb reseller and bought five Lenovo ThinkCentres off the used market.&lt;/p&gt;</description></item><item><title>Terraform, Ansible, and the Automation That Runs Everything</title><link>https://heezy.blog/posts/terraform-ansible-automation/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/terraform-ansible-automation/</guid><description>&lt;p&gt;This is the story of taking a homelab that was 100% manually configured and turning it into something where every change is a git commit, every deployment is a GitHub Actions run, and I never SSH into a box to make a &amp;ldquo;quick fix&amp;rdquo; again. It took a lot of hours, a lot of broken credential chains, and one memorable incident where I leaked secrets because of echo output. But it works now, and it works well.&lt;/p&gt;</description></item><item><title>The Storage Array</title><link>https://heezy.blog/posts/storage-array/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/storage-array/</guid><description>&lt;p&gt;Storage in the lab is split between two systems: the &lt;a href="https://heezy.blog/posts/freenas-storage/"&gt;FreeNAS box&lt;/a&gt; for bulk media over NFS, and Longhorn on the k8s nodes for application config and state. They serve different purposes and don&amp;rsquo;t overlap.&lt;/p&gt;</description></item><item><title>The FreeNAS Box: 10 Years of Spinning Rust</title><link>https://heezy.blog/posts/freenas-storage/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/freenas-storage/</guid><description>&lt;p&gt;The SuperMicro FreeNAS box is the oldest continuously running piece of infrastructure in the lab. It predates the FortiGate, the k8s cluster, the Proxmox hypervisor, and every automation tool I&amp;rsquo;ve ever set up. It just sits there, serves NFS, and doesn&amp;rsquo;t complain.&lt;/p&gt;</description></item><item><title>Lab Modernization: From Manual Configs to Full Automation</title><link>https://heezy.blog/posts/lab-modernization-journal/</link><pubDate>Thu, 18 Sep 2025 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/lab-modernization-journal/</guid><description>&lt;p&gt;This is the journal of taking a homelab that was held together with SSH sessions and good intentions and turning it into something that manages itself. It took months of evenings and weekends, a lot of broken things, and more hours than I want to admit. But the lab went from &amp;ldquo;I hope nobody touches that server&amp;rdquo; to &amp;ldquo;push to main and walk away.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Cellular Backup Internet</title><link>https://heezy.blog/posts/cellular-backup/</link><pubDate>Sat, 19 Nov 2022 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/cellular-backup/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;img src="images/cellular-backup-1.jpg" alt="Cellular backup setup 1" style="max-width: 480px; width: 100%;" /&gt;
&lt;img src="images/cellular-backup-2.jpg" alt="Cellular backup setup 2" style="max-width: 480px; width: 100%;" /&gt;
&lt;img src="images/cellular-backup-3.jpg" alt="Cellular backup setup 3" style="max-width: 480px; width: 100%;" /&gt;</description></item></channel></rss>