<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>vNinja.net on vNinja.net | VMware, VCF &amp; Homelab</title><link>https://vninja.net/</link><description>Recent content in vNinja.net on vNinja.net | VMware, VCF &amp; Homelab</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>&amp;copy; 2010 - 2026 &lt;b&gt;vNinja.net&lt;/b&gt; &lt;br/&gt; &lt;em&gt;There is a thin line between agile and fragile&lt;/em&gt;</copyright><lastBuildDate>Mon, 14 Sep 2026 14:04:54 +0200</lastBuildDate><atom:link href="https://vninja.net/index.xml" rel="self" type="application/rss+xml"/><item><title>Locking Down the Proxmox Management VLAN</title><link>https://vninja.net/2026/09/14/locking-down-the-proxmox-management-vlan/</link><pubDate>Mon, 14 Sep 2026 10:00:00 +0000</pubDate><guid>https://vninja.net/2026/09/14/locking-down-the-proxmox-management-vlan/</guid><description>I moved Proxmox VE cluster management onto its own isolated network, found every real dependency before blocking anything, and built two independent ways back in. Along the way: a UniFi rule-ordering trap and a UPS monitor that broke, for a reason I want to explain properly.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/09/14/locking-down-the-proxmox-management-vlan/featured.png"/></item><item><title>Introducing Signals</title><link>https://vninja.net/2026/09/01/introducing-signals/</link><pubDate>Tue, 01 Sep 2026 09:00:00 +0000</pubDate><guid>https://vninja.net/2026/09/01/introducing-signals/</guid><description>A new linkblog at signals.vninja.net for everything I bookmark but never write a full post about, heavily inspired by Tsugliani's Campfire.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/09/01/introducing-signals/featured.png"/></item><item><title>Fronting Proxmox VE With Caddy</title><link>https://vninja.net/2026/09/01/fronting-proxmox-ve-with-caddy/</link><pubDate>Tue, 01 Sep 2026 06:00:00 +0000</pubDate><guid>https://vninja.net/2026/09/01/fronting-proxmox-ve-with-caddy/</guid><description>A short Caddy fragment reverse-proxies my 3-node Proxmox VE cluster behind one hostname, restricts who can reach it with its own IP allowlist, and one load-balancing setting decides whether the noVNC console actually stays connected.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/09/01/fronting-proxmox-ve-with-caddy/featured.png"/></item><item><title>How I Got Matter Over Thread Working on a Segmented UniFi Network</title><link>https://vninja.net/2026/08/17/how-i-got-matter-over-thread-working-on-a-segmented-unifi-network/</link><pubDate>Mon, 17 Aug 2026 11:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/17/how-i-got-matter-over-thread-working-on-a-segmented-unifi-network/</guid><description>Getting Matter over Thread working across UniFi VLANs took two separate fixes on the gateway: enabling IPv6 on a tagged VLAN using a static Unique Local Address (ULA) prefix, then routing Thread's own address space explicitly, since IPv6 alone doesn't cover it.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/17/how-i-got-matter-over-thread-working-on-a-segmented-unifi-network/featured.png"/></item><item><title>UniFi's Zone-Based Firewall Changes the IoT VLAN Rule</title><link>https://vninja.net/2026/08/13/unifi-zone-based-firewall-changes-the-iot-vlan-rule/</link><pubDate>Thu, 13 Aug 2026 12:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/13/unifi-zone-based-firewall-changes-the-iot-vlan-rule/</guid><description>How the 2019 UniFi IoT VLAN firewall rule translates to UniFi's Zone-Based Firewall (ZBF): the same isolation policy, inverted from an allow rule to a scoped block rule.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/13/unifi-zone-based-firewall-changes-the-iot-vlan-rule/featured.png"/></item><item><title>A UniFi Gateway Hardware Swap Silently Dropped My Firewall Rules</title><link>https://vninja.net/2026/08/12/unifi-gateway-hardware-swap-silently-dropped-my-firewall-rules/</link><pubDate>Wed, 12 Aug 2026 12:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/12/unifi-gateway-hardware-swap-silently-dropped-my-firewall-rules/</guid><description>Ubiquiti's documented path from UniFi's legacy firewall engine to Zone-Based Firewall does map your old rules forward. Swap gateway hardware outright without running that step first, and there's nothing to map at all, with no warning and no visible symptom.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/12/unifi-gateway-hardware-swap-silently-dropped-my-firewall-rules/featured.png"/></item><item><title>Revisiting the Ceph-Over-Thunderbolt Numbers</title><link>https://vninja.net/2026/08/10/revisiting-the-ceph-over-thunderbolt-numbers/</link><pubDate>Mon, 10 Aug 2026 12:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/10/revisiting-the-ceph-over-thunderbolt-numbers/</guid><description>Re-benchmarking the three-node Ceph-over-Thunderbolt cluster under real production load, days after the original build, and asking whether the numbers hold up or were just good for a novelty setup.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/10/revisiting-the-ceph-over-thunderbolt-numbers/featured.png"/></item><item><title>An NVMe Power-State Bug Kept Crashing My Ceph Cluster</title><link>https://vninja.net/2026/08/10/an-nvme-power-state-bug-kept-crashing-my-ceph-cluster/</link><pubDate>Mon, 10 Aug 2026 09:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/10/an-nvme-power-state-bug-kept-crashing-my-ceph-cluster/</guid><description>The same class of NVMe drive failed three times in 48 hours on my three-node Thunderbolt cluster: a real NVMe firmware bug, a smartctl red herring, a fix I already had half of by accident, and a ten-hour alerting blind spot I didn't know I had.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/10/an-nvme-power-state-bug-kept-crashing-my-ceph-cluster/featured.png"/></item><item><title>Managing Hosts and Zones in My Homelab's DNS</title><link>https://vninja.net/2026/08/05/managing-hosts-and-zones-in-my-homelabs-dns/</link><pubDate>Wed, 05 Aug 2026 13:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/05/managing-hosts-and-zones-in-my-homelabs-dns/</guid><description>The everyday mechanics of running DNS in my homelab: the zone file format, how Knot auto-derives every PTR record, adding and removing hosts and zones, and what actually happens when something goes wrong.</description></item><item><title>Proxmox VE and Ceph Over a Thunderbolt Ring on Three NUCs</title><link>https://vninja.net/2026/08/05/ceph-over-a-thunderbolt-ring-on-three-nucs/</link><pubDate>Wed, 05 Aug 2026 12:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/05/ceph-over-a-thunderbolt-ring-on-three-nucs/</guid><description>Building a dedicated Ceph storage fabric over a Thunderbolt 4 ring between three ASUS NUC 15 Pro nodes: the ports that enumerated nothing, the 15-month-old BIOS that turned out to be the real problem, the addressing scheme that survives reboots, and the node-failure test that proves the cluster actually holds up.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/08/05/ceph-over-a-thunderbolt-ring-on-three-nucs/featured.png"/></item><item><title>How DNS and Caddy Work in My Homelab</title><link>https://vninja.net/2026/08/05/how-dns-and-caddy-work-in-my-homelab/</link><pubDate>Wed, 05 Aug 2026 11:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/05/how-dns-and-caddy-work-in-my-homelab/</guid><description>A deep dive into the DNS and Caddy design behind my Proxmox VE homelab rebuild: layered resolvers, a deliberate core/apps zone split, a Cloudflare Tunnel, and a second, fully separate Caddy for anything genuinely public.</description></item><item><title>How I GitOps'ed My Homelab</title><link>https://vninja.net/2026/08/05/how-i-gitopsed-my-homelab/</link><pubDate>Wed, 05 Aug 2026 10:00:00 +0000</pubDate><guid>https://vninja.net/2026/08/05/how-i-gitopsed-my-homelab/</guid><description>My home lab has been a cluster for close to twenty years, from two Dell Precision T7500s to four Dell OptiPlex 7090 UFF nodes on VMware vSAN, to a new three node ASUS NUC 15 Pro cluster on Proxmox VE and Ceph. This is the story of the rebuild: why it happened now, what my first GitOps attempt got badly wrong, and the principles behind the single repo, called Dojo, that runs it all today.</description></item><item><title>Christians Home Lab Setup</title><link>https://vninja.net/homelab/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/homelab/</guid><description>&lt;h2 class="relative group"&gt;Homelab V4.0&#10; &lt;div id="homelab-v40" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#homelab-v40" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Some details on the previous hosts and setup: &lt;a href="https://vninja.net/2022/03/07/the-home-lab-2022-edition/" &gt;The Home Lab: 2022 Edition (V3.0)&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;This page covers the current generation, V4.0, a full rebuild onto Proxmox VE. The story of why and how is its own series:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://vninja.net/2026/08/05/how-i-gitopsed-my-homelab/" &gt;How I GitOps&amp;rsquo;ed My Homelab&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://vninja.net/2026/08/05/how-dns-and-caddy-work-in-my-homelab/" &gt;How DNS and Caddy Work in My Homelab&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://vninja.net/2026/08/05/managing-hosts-and-zones-in-my-homelabs-dns/" &gt;Managing Hosts and Zones in My Homelab&amp;rsquo;s DNS&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://vninja.net/2026/08/05/ceph-over-a-thunderbolt-ring-on-three-nucs/" &gt;Proxmox VE and Ceph Over a Thunderbolt Ring on Three NUCs&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This is a living document, and is subject to change at any given time.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated August 5th, 2026.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Home Lab: DNS Resolution</title><link>https://vninja.net/homelab/dns/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/homelab/dns/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This is a living document, and is subject to change at any given time.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated August 5th, 2026.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Home Lab: Lab Isolated Networks</title><link>https://vninja.net/homelab/labnetwork/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/homelab/labnetwork/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This page describes a part of the old (V3.0) home lab setup that has been retired as part of this year&amp;rsquo;s rebuild onto Proxmox VE. The isolated lab networks below, and the VyOS router that routed them, no longer exist. Kept here for historical reference only.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated August 5th, 2026.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Home Lab: Physical Network Diagram</title><link>https://vninja.net/homelab/physical-network/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/homelab/physical-network/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This is a living document, and is subject to change at any given time.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated August 5th, 2026.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Home Lab: Services &amp; Software</title><link>https://vninja.net/homelab/services/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/homelab/services/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;&#10; &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;&#10; &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="grow"&gt;&#10; Note&#10; &lt;/div&gt;&#10; &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This is a living document, and is subject to change at any given time.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated August 5th, 2026.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Overriding ESX Host Acceptance Level with Secure Boot Enabled</title><link>https://vninja.net/2026/07/31/overriding-esx-host-acceptance-level-with-secure-boot-enabled/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/2026/07/31/overriding-esx-host-acceptance-level-with-secure-boot-enabled/</guid><description>How configstorecli bypasses ESX Acceptance Level guard on a Secure Boot-enabled host, letting unsigned VIBs run.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/07/31/overriding-esx-host-acceptance-level-with-secure-boot-enabled/featured.png"/></item><item><title>Ghostty xterm-ghostty Over SSH: What's Actually Fixed (and What Isn't)</title><link>https://vninja.net/2026/07/19/ghostty-ssh-terminfo-whats-actually-fixed/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/2026/07/19/ghostty-ssh-terminfo-whats-actually-fixed/</guid><description>Ghostty shipped a partial fix for its SSH terminfo problem back in version 1.2.0, and a proper one is coming in 1.4.0. I went looking for why I was still running into trouble, and found the real story is more complicated than either release note lets on.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/07/19/ghostty-ssh-terminfo-whats-actually-fixed/featured.png"/></item><item><title>Migrating from Unifi UXG-Lite to Express 7</title><link>https://vninja.net/2026/07/17/migrating-from-unifi-uxg-lite-to-express-7/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid>https://vninja.net/2026/07/17/migrating-from-unifi-uxg-lite-to-express-7/</guid><description>A UniFi restore that reports no errors, restarts cleanly, and lets you log in with your admin account, but somehow leaves you with an empty configuration, is a special kind of frustrating. That's the short version of what it took to move from a HostiFi-hosted controller to a local UniFi Express 7 (UX7). It should have been a cable swap and a restore. Instead it turned into a two-attempt debugging exercise, followed by a workaround involving a throwaway Docker controller and some direct MongoDB open-heart surgery.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://vninja.net/2026/07/17/migrating-from-unifi-uxg-lite-to-express-7/featured.png"/></item></channel></rss>