<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Stacked Infraverse]]></title><description><![CDATA[Building enterprise-grade homelab infrastructure — documenting every decision, mistake, and breakthrough along the way.]]></description><link>https://blog.stackedinfraverse.com</link><image><url>https://substackcdn.com/image/fetch/$s_!4dIn!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d95016-8d88-48b7-93f5-f733233e63b4_1024x1024.png</url><title>Stacked Infraverse</title><link>https://blog.stackedinfraverse.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 10 Apr 2026 07:58:40 GMT</lastBuildDate><atom:link href="https://blog.stackedinfraverse.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Shawn Hank]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[stackedinfraverse@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[stackedinfraverse@substack.com]]></itunes:email><itunes:name><![CDATA[Shawn Hank]]></itunes:name></itunes:owner><itunes:author><![CDATA[Shawn Hank]]></itunes:author><googleplay:owner><![CDATA[stackedinfraverse@substack.com]]></googleplay:owner><googleplay:email><![CDATA[stackedinfraverse@substack.com]]></googleplay:email><googleplay:author><![CDATA[Shawn Hank]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Burn It Down, Built it Up]]></title><description><![CDATA[Since we moved recently, I have the opportunity to build the homelab from scratch. Since I'm starting over today, this is how I'm doing it and why.]]></description><link>https://blog.stackedinfraverse.com/p/burn-it-down-built-it-up</link><guid isPermaLink="false">https://blog.stackedinfraverse.com/p/burn-it-down-built-it-up</guid><dc:creator><![CDATA[Shawn Hank]]></dc:creator><pubDate>Mon, 23 Feb 2026 20:53:18 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>My homelab was dumpster fire&#8230;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3000" height="1993" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1993,&quot;width&quot;:3000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;photo of burning house&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="photo of burning house" title="photo of burning house" srcset="https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1446825597988-2bb4dfd264ac?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxkdW1wc3RlciUyMGZpcmV8ZW58MHx8fHwxNzcxODc5NjYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@steve228uk">Stephen Radford</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Not because I didn&#8217;t know what I was doing, though that was part of it. It just wasn&#8217;t the complete story.</p><p>I&#8217;ve been in the technology industry for nearly 30 years. I&#8217;ve soldered analog 2 and 4 wire phone circuits on old school wood and metal distribution blocks on MDFs and IDFs , buried outside plant (copper and fiber optic cables), built VoIP trunking from scratch, setup C-band video transmission systems to film and record missile tests from helicopters, configured legacy firewall systems and ridden the wave through almost every generation of &#8220;this is the new thing&#8221; in computing that happened over the last 3 decades.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.stackedinfraverse.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Stacked Infraverse! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But all that experience isn&#8217;t enough when your lab becomes a house of cards held together with hope, string and some duct tape.</p><p><strong>My previous homelab was a tech junkyard:</strong></p><ul><li><p>Raspberry Pis scattered everywhere, performing different functions</p></li><li><p>SuperMicro mini ITX mini servers running Proxmox and VMware infrastructure for Virtual Machines and Containers</p></li><li><p>Core functions like DHCP, DNS, NTP, Domain Controller and Certificate Authorities managed across different systems and hardware</p></li><li><p>Different routers and switches from different manufacturers spanning generations of tech</p></li><li><p>Random scripts on random systems</p></li><li><p>Manual hardening (sometimes), no real automation</p></li><li><p>Zero documentation</p></li></ul><p>It started as a playground to learn technologies related to my role as a presales engineer. Over time it became a less than mission-critical kludge. Everything was reactive, experimental, or temporary&#8212;which became permanent by accident. It got to the point where I couldn&#8217;t trust it to scale, evolve, or even reboot cleanly. It was an embarrassment, and I was too ashamed to show and tell.</p><blockquote><p>&#8220;Some things work sometimes. Other things have never worked.&#8221;</p></blockquote><p>So I did the only sane thing one could do in this situation: I stopped everything. Cold turkey. No more string. No more duct tape. No more trying to change engine and wings of an airplane in mid-flight.</p><p>I decided to <strong>burn it down</strong> and start over.</p><div><hr></div><h2>&#128195; Lessons from the Failure</h2><p>Here&#8217;s what failed and why:</p><p>Symptom Root Problem</p><p>Inconsistent DNS and hostnames</p><p>No internal authority; Pi-hole and router DNS fought each other, causing poor connectivity and a low WAF (Wife Approval Factor).</p><p>TLS warnings everywhere</p><p>No internal CA, no public Let&#8217;s Encrypt fallback. Everything was insecure and undisciplined.</p><p>Untrusted services</p><p>Self-signed certs, expired certs, broken ACME chains.</p><p>No backups, no redeploys</p><p>No Git, no Ansible, no Terraform. Manual everything. What a time suck.</p><p>IoT + Everything on one VLAN</p><p>No segmentation, isolation, or firewall visibility. At least the management traffic was separated.</p><p>Zero observability</p><p>No metrics, logs, heartbeat checks, or dashboards. Just the family saying, &#8220;Hey, the Internet is down again.&#8221; Livin&#8217; the Dream.</p><p>Insecure defaults</p><p>Default users, password SSH logins, no firewalls. Everything open.</p><p>Service sprawl</p><p>Containers running random things on random hardware. No unified stack. No harmony.</p><p>The deeper truth: I half-assed my homelab. It didn&#8217;t reflect how I think, what I value, or how I really feel about my passion, my career, or my life. It needed to change.</p><div><hr></div><h2>&#128170; What I&#8217;m (re) Building Instead</h2><p>Yes, on the surface this is a rebuild, but it&#8217;s also much more than that. It&#8217;s a refactor of everything from self-hosting, home lab infrastructure, and, to be honest, my life and how I choose to show up in it each and every day.</p><h3>Guiding Principles:</h3><ul><li><p><strong>Automated</strong>: Every device is provisioned from a known-good script or playbook. Things will be more consistent, reliable, scalable and I&#8217;ll save a ton of time.</p></li><li><p><strong>Documented</strong>: All content, configs, decisions, and diagrams live in Git and synced to GitHub (and maybe GitLab) for public viewing, consumption and feedback.</p></li><li><p><strong>Segmented</strong>: VLANs, firewall rules, and device trust boundaries are defined and enforced</p></li><li><p><strong>Secure</strong>: SSH keys only, hardened OS&#8217;s, local firewalling, root logins disabled</p></li><li><p><strong>Observable</strong>: Metrics, logs, health checks, and uptime monitoring built-in - complete with visuals and interactive real time dashboards</p></li><li><p><strong>Modular</strong>: DNS, certs, services, monitoring&#8212;all separate, swappable, and upgradable.</p></li></ul><div><hr></div><h2>&#128295; First Things First: DNS, Identity, and Trust</h2><p>The first services I&#8217;m rebuilding are the ones everything else depends on:</p><h3>1. <strong>DNS Infrastructure</strong></h3><p>I&#8217;m building a small test cluster with 2 Pi-hole nodes and 2 AdGuard Home nodes, all backed by <strong>Unbound</strong> for recursive resolution. These will sit behind a load balancer/reverse proxy so I can test, benchmark, and observe each solution side-by-side before choosing a primary.</p><p>All of this will be internally resolvable via a <code>thisdemo.rocks</code> domain namespace (e.g., <code>truenas.thisdemo.rocks</code>, <code>ca.thisdemo.rocks</code>, <code>minipc2.thisdemo.rocks</code>). The Unifi Dream Machine Pro Max will remain the central DHCP authority, and will forward DNS requests to a load balanced cluster of Raspberry Pi&#8217;s running PiHole, AdGuardHome and Unbound for recursive DNS.</p><p>Unbound will handle DNS resolution for everything outside the homelab (e.g., google.com, digitalocean.com, etc.)</p><h3>2. <strong>Internal Certificate Authority</strong></h3><p>I&#8217;m deploying <strong>Smallstep CA</strong> on a dedicated Raspberry Pi. It will issue internal TLS certificates internally to allow me to secure:</p><ul><li><p>IP-based services (like TrueNAS or IPMI interfaces)</p></li><li><p>Hostname-based services on private DNS</p></li></ul><p>No more self-signed cert hell. No more TLS warnings. And no more relying on Let&#8217;s Encrypt for internal infrastructure. I&#8217;ll still use Let&#8217;s Encrypt for externally exposed services via ACME DNS validation or Cloudflare SSL Origin Certs with their Tunnels solution.</p><h3>3. <strong>Network Segmentation Probes</strong></h3><p>I&#8217;ll be dropping a few different physical Pi SCBs into different network segments and using tools like:</p><ul><li><p><code>iperf3</code> for bandwidth testing</p></li><li><p><code>tcpdump</code> for packet captures</p></li><li><p><code>ping</code> and <code>mtr</code> for reachability</p></li></ul><p>These will verify that VLANs are working as intended, and that firewall rules aren&#8217;t just assumed correct.</p><div><hr></div><h2>&#129302; Infrastructure as Code (Git Repos FTW)</h2><p>Everything in the new homelab gets committed to Git:</p><ul><li><p><code>content/</code> &#8212; notes, diagrams, blog posts, documentation</p></li><li><p><code>infra/</code> &#8212; provisioning, hardening scripts, templates</p></li><li><p><code>services/</code> &#8212; Docker stacks, Compose files, reverse proxies</p></li></ul><p>No more undocumented changes. No more tribal knowledge. Everything gets tracked. Everything gets shared via GitHub public repos.</p><p>The repos are mostly empty at the moment because I&#8217;m just starting the rebuild process, but the framework and structure for the repos are completed as best as they can be for now.</p><p>Feel free to check them out:</p><blockquote><p><a href="https://github.com/stackedinfraverse/content?ref=stackedinfraverse.com">https://github.com/stackedinfraverse/content</a></p><p><a href="https://github.com/stackedinfraverse/infra?ref=stackedinfraverse.com">https://github.com/stackedinfraverse/infra</a></p><p><a href="https://github.com/stackedinfraverse/services?ref=stackedinfraverse.com">https://github.com/stackedinfraverse/services</a></p></blockquote><div><hr></div><h2>&#127775; Closing Thoughts</h2><p>This entire project is about rethinking things and doing everything right. &#8220;Right&#8221; means implementing best practices so everything is secure, repeatable, observable, and versioned. It&#8217;s a platform I can learn from, publish on, and ultimately... trust.</p><div><hr></div><h2>&#9197;&#65039; Future Posts</h2><ul><li><p>The secure Raspberry Pi bootstrap process (<code>pi-secure.sh</code>)</p></li><li><p>Automating device setup with raspi-config</p></li><li><p>Building admin tools with <code>pi-admin-setup.sh</code></p></li><li><p>Hardening x86 systems with <code>minipc2-secure-v5.sh</code></p></li></ul><p>This isn&#8217;t a weekend project. This is the new foundation.</p><p>LFG</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.stackedinfraverse.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Stacked Infraverse! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Stacked Infraverse.]]></description><link>https://blog.stackedinfraverse.com/p/coming-soon</link><guid isPermaLink="false">https://blog.stackedinfraverse.com/p/coming-soon</guid><dc:creator><![CDATA[Shawn Hank]]></dc:creator><pubDate>Mon, 23 Feb 2026 19:40:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4dIn!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d95016-8d88-48b7-93f5-f733233e63b4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Stacked Infraverse.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.stackedinfraverse.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.stackedinfraverse.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>