<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Troubleshooting on homelab</title>
    <link>https://homelab.nbkelley.com/tags/troubleshooting/</link>
    <description>Recent content in Troubleshooting on homelab</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://homelab.nbkelley.com/tags/troubleshooting/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Git Push Authentication</title>
      <link>https://homelab.nbkelley.com/docs/administration/git-push-authentication/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/administration/git-push-authentication/</guid>
      <description>&lt;h1 id=&#34;git-push-authentication&#34;&gt;Git Push Authentication&lt;a class=&#34;anchor&#34; href=&#34;#git-push-authentication&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GitHub deprecated password authentication for Git over HTTPS. Even if passwords worked previously, they are now rejected with &lt;code&gt;password not supported&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Personal Access Tokens (PAT) or SSH keys are required for authentication.&lt;/li&gt;&#xA;&lt;li&gt;403 Permission Denied errors typically indicate stale cached credentials or insufficient token scopes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use Personal Access Tokens (PAT) for HTTPS Git operations.&lt;/li&gt;&#xA;&lt;li&gt;Classic tokens require the &lt;code&gt;repo&lt;/code&gt; scope for private repositories.&lt;/li&gt;&#xA;&lt;li&gt;Fine-grained tokens require &lt;code&gt;Contents&lt;/code&gt; (Read and write) and &lt;code&gt;Metadata&lt;/code&gt; (Read) permissions, explicitly scoped to the target repository.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;GitHub Username&lt;/strong&gt;: &lt;code&gt;NK-Iluvatar&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Target Repository&lt;/strong&gt;: &lt;code&gt;MBTADashboard&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Remote URL&lt;/strong&gt;: &lt;code&gt;https://github.com/NK-Iluvatar/MBTADashboard.git&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Password Deprecation&lt;/strong&gt;: GitHub enforced its 2021 policy change retroactively, blocking account passwords for Git operations over HTTPS.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;403 Troubleshooting&lt;/strong&gt;: Resolved by clearing cached credentials (&lt;code&gt;git credential reject&lt;/code&gt; or OS credential manager) and verifying token scopes (&lt;code&gt;repo&lt;/code&gt; for classic, &lt;code&gt;Contents&lt;/code&gt; for fine-grained).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Token Testing&lt;/strong&gt;: Verified token validity using &lt;code&gt;curl -H &amp;quot;Authorization: token TOKEN&amp;quot; https://api.github.com/user&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;None.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Git Pull Strategies&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/homelab-dashboard/&#34;&gt;Homelab Dashboard&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DeepSeek conversation (2026-02-18) regarding &lt;code&gt;MBTADashboard&lt;/code&gt; push failures and PAT configuration.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Git Push Authentication</title>
      <link>https://homelab.nbkelley.com/docs/development/git-push-authentication/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/development/git-push-authentication/</guid>
      <description>&lt;h1 id=&#34;git-push-authentication&#34;&gt;Git Push Authentication&lt;a class=&#34;anchor&#34; href=&#34;#git-push-authentication&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Patterns for resolving Git push authentication issues and handling divergent branches when working across multiple machines.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Multi-machine workflow&lt;/strong&gt;: Always &lt;code&gt;git pull&lt;/code&gt; before starting work; commit and push when done.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Divergent branch resolution&lt;/strong&gt;: When local and remote have diverged, use &lt;code&gt;git pull --no-rebase&lt;/code&gt; (merge) for safety or &lt;code&gt;git fetch origin &amp;amp;&amp;amp; git reset --hard origin/main&lt;/code&gt; to discard local commits for remote-only state.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;resolving-divergent-branches&#34;&gt;Resolving Divergent Branches&lt;a class=&#34;anchor&#34; href=&#34;#resolving-divergent-branches&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;symptom&#34;&gt;Symptom&lt;a class=&#34;anchor&#34; href=&#34;#symptom&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hint: You have divergent branches and need to specify how to reconcile them.&#xA;fatal: Need to specify how to reconcile divergent branches.&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;option-1-merge-preserves-both-histories&#34;&gt;Option 1: Merge (preserves both histories)&lt;a class=&#34;anchor&#34; href=&#34;#option-1-merge-preserves-both-histories&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git pull --no-rebase&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Or set as default:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config pull.rebase false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;option-2-rebase-local-commits-on-top-of-remote&#34;&gt;Option 2: Rebase (local commits on top of remote)&lt;a class=&#34;anchor&#34; href=&#34;#option-2-rebase-local-commits-on-top-of-remote&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git pull --rebase&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Or set as default:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config pull.rebase true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;option-3-discard-local-use-remote-only&#34;&gt;Option 3: Discard local, use remote only&lt;a class=&#34;anchor&#34; href=&#34;#option-3-discard-local-use-remote-only&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git fetch origin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --hard origin/main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;option-4-fast-forward-only-fails-if-diverged&#34;&gt;Option 4: Fast-forward only (fails if diverged)&lt;a class=&#34;anchor&#34; href=&#34;#option-4-fast-forward-only-fails-if-diverged&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git pull --ff-only&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;multi-machine-workflow&#34;&gt;Multi-Machine Workflow&lt;a class=&#34;anchor&#34; href=&#34;#multi-machine-workflow&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When working from multiple machines on the same repo:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo Deployment to Cloudflare Pages - Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/services/hugo-cloudflare-pages/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/hugo-cloudflare-pages/</guid>
      <description>&lt;h1 id=&#34;hugo-deployment-to-cloudflare-pages---troubleshooting&#34;&gt;Hugo Deployment to Cloudflare Pages - Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#hugo-deployment-to-cloudflare-pages---troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Patterns for resolving missing assets (favicons, CSS, styling) and build failures when deploying Hugo-generated static sites to Cloudflare Pages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Build Configuration&lt;/strong&gt;: Set build command to &lt;code&gt;hugo&lt;/code&gt;, output directory to &lt;code&gt;public&lt;/code&gt;, and explicitly match the local Hugo version in Cloudflare Pages settings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static Asset Placement&lt;/strong&gt;: Ensure all static files (e.g., &lt;code&gt;favicon.ico&lt;/code&gt;, CSS) reside in the &lt;code&gt;static/&lt;/code&gt; directory root or theme-specific static folders.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rebuild Enforcement&lt;/strong&gt;: Use &lt;code&gt;hugo --cleanDestinationDir&lt;/code&gt; or manually remove the &lt;code&gt;public/&lt;/code&gt; directory to force Hugo to regenerate all assets and detect changes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cache Management&lt;/strong&gt;: Clear both Cloudflare Pages deployment cache and browser cache to prevent stale asset delivery.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verification Workflow&lt;/strong&gt;: Validate locally via &lt;code&gt;hugo server&lt;/code&gt;, inspect the generated &lt;code&gt;public/&lt;/code&gt; directory, review Cloudflare deployment logs, and confirm full Git commits.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Build Command&lt;/strong&gt;: &lt;code&gt;hugo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Output Directory&lt;/strong&gt;: &lt;code&gt;public&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static Directory&lt;/strong&gt;: &lt;code&gt;static/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Config File&lt;/strong&gt;: &lt;code&gt;config.toml&lt;/code&gt; / &lt;code&gt;config.yaml&lt;/code&gt; (verify &lt;code&gt;baseURL&lt;/code&gt; matches target domain)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;obsidian-integration-for-hugo-date-format&#34;&gt;Obsidian Integration for Hugo Date Format&lt;a class=&#34;anchor&#34; href=&#34;#obsidian-integration-for-hugo-date-format&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hugo expects ISO 8601 dates with timezone offset: &lt;code&gt;2025-11-22T23:11:12-05:00&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>KVM Input Switch Sleep Issues</title>
      <link>https://homelab.nbkelley.com/docs/hardware/kvm-troubleshooting/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/hardware/kvm-troubleshooting/</guid>
      <description>&lt;h1 id=&#34;kvm-input-switch-sleep-issues&#34;&gt;KVM Input Switch Sleep Issues&lt;a class=&#34;anchor&#34; href=&#34;#kvm-input-switch-sleep-issues&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Switching inputs on a KVM switch can trigger connected PCs to enter sleep mode and fail to wake up. This is typically caused by EDID handshake interruptions or power management settings reacting to display signal loss when the KVM switches away from a connected machine.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions--troubleshooting-steps&#34;&gt;Key Decisions &amp;amp; Troubleshooting Steps&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions--troubleshooting-steps&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hardware Model&lt;/strong&gt;: Inland Dual 4K Display KVM Switch/Dock.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;EDID Emulation&lt;/strong&gt;: The most critical fix. Ensure the KVM is configured for EDID emulation (often via dip switches or firmware settings) to maintain a persistent display handshake and prevent the host OS from detecting a disconnected monitor.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Firmware Updates&lt;/strong&gt;: Check manufacturer resources (e.g., Micro Center for Inland) for firmware updates to improve display handshake compatibility.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Windows Power Management&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Set &amp;lsquo;Screen&amp;rsquo; and &amp;lsquo;Sleep&amp;rsquo; to &amp;lsquo;Never&amp;rsquo; in Power &amp;amp; Sleep settings.&lt;/li&gt;&#xA;&lt;li&gt;Adjust NVIDIA Control Panel power management to &amp;lsquo;Prefer Maximum Performance&amp;rsquo;.&lt;/li&gt;&#xA;&lt;li&gt;Use Group Policy (&lt;code&gt;gpedit.msc&lt;/code&gt;) to disable video/display power saving templates.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux Mint Power Management&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Configure &lt;code&gt;/etc/X11/xorg.conf&lt;/code&gt; to disable blank/standby/suspend/off times (&lt;code&gt;ServerFlags&lt;/code&gt; section).&lt;/li&gt;&#xA;&lt;li&gt;Add &lt;code&gt;xset s off&lt;/code&gt; and &lt;code&gt;xset -dpms&lt;/code&gt; to startup applications.&lt;/li&gt;&#xA;&lt;li&gt;Modify GRUB cmdline (&lt;code&gt;/etc/default/grub&lt;/code&gt;) with &lt;code&gt;video=vesafb:off video=eefb:off drm_kms_helper.edid_firmware=edid/1920x1080.bin&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hardware Checks&lt;/strong&gt;: Use high-quality/shorter HDMI/DisplayPort cables, ensure direct monitor connections to KVM outputs, and utilize the KVM&amp;rsquo;s built-in USB hub for peripherals.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Workaround&lt;/strong&gt;: Manual wake via brief power button press or keyboard input if automatic wake fails due to lost display signal.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversation date: 2025-11-29.&lt;/li&gt;&#xA;&lt;li&gt;Specific to Inland Dual 4K KVM dock behavior.&lt;/li&gt;&#xA;&lt;li&gt;EDID emulation is consistently the primary resolution for this class of KVM-induced sleep issues.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Does the specific Inland dock model have a known firmware revision that fully resolves this behavior?&lt;/li&gt;&#xA;&lt;li&gt;Are external EDID emulators required if built-in emulation remains insufficient?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;wiki/hardware/monitor-standards.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;wiki/infrastructure/gpu-passthrough-lxc.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/122-KVM Input Switch Causes PC Sleep Issue.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Mobile Hotspot &amp; Proton VPN Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/networking/mobile-hotspot-vpn/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/networking/mobile-hotspot-vpn/</guid>
      <description>&lt;h1 id=&#34;mobile-hotspot--proton-vpn-troubleshooting&#34;&gt;Mobile Hotspot &amp;amp; Proton VPN Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#mobile-hotspot--proton-vpn-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A PC connected to a mobile hotspot will always display a local/private IP address (e.g., &lt;code&gt;192.168.43.x&lt;/code&gt;) to communicate with the phone acting as the gateway/router.&lt;/li&gt;&#xA;&lt;li&gt;Enabling Proton VPN on the mobile device does not automatically extend the encrypted tunnel to connected hotspot devices by default. This is due to app-level vs. system-level routing, separate network interfaces, and carrier/OS restrictions.&lt;/li&gt;&#xA;&lt;li&gt;Public IP verification and DNS leak tests are required to confirm whether hotspot traffic is actually being routed through the VPN tunnel.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Local IP vs Public IP&lt;/strong&gt;: Local IPs are expected and required for LAN communication; privacy and security are determined by the public IP and DNS resolution, not the local address.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;VPN Extension Methods&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable &amp;ldquo;Always-on VPN&amp;rdquo; and &amp;ldquo;VPN passthrough&amp;rdquo; in the phone&amp;rsquo;s hotspot/tethering settings.&lt;/li&gt;&#xA;&lt;li&gt;Install Proton VPN directly on the PC for guaranteed tunneling, kill switch functionality, and split tunneling control.&lt;/li&gt;&#xA;&lt;li&gt;Use USB tethering instead of Wi-Fi hotspot if Wi-Fi passthrough fails or is blocked by the carrier.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Order of Operations&lt;/strong&gt;: Disabling and re-enabling the hotspot &lt;em&gt;after&lt;/em&gt; establishing the VPN connection can force the routing table to update and apply the tunnel correctly.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;N/A (General networking troubleshooting pattern applicable to remote management of homelab infrastructure like Isengard (192.168.1.69) or Legolas (192.168.1.45) via mobile data).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversation dated 2025-12-13.&lt;/li&gt;&#xA;&lt;li&gt;Proton VPN mobile app behavior varies significantly by OS (iOS/Android) and mobile carrier; some devices natively block VPN over hotspot.&lt;/li&gt;&#xA;&lt;li&gt;This pattern is relevant for remote homelab administration or travel scenarios where mobile data serves as the primary internet source.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Does the specific mobile carrier or OS version in use support native VPN passthrough for hotspots without third-party apps?&lt;/li&gt;&#xA;&lt;li&gt;Are there specific Proton VPN mobile app settings that consistently bypass carrier restrictions for tethering?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/unifi-express-vpn/&#34;&gt;UniFi Express VPN &amp;amp; Network Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/proxy-management/&#34;&gt;Proxy Management &amp;amp; Cloudflare Tunnels&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/network/&#34;&gt;Network Infrastructure &amp;amp; VLANs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/130-PC Local IP While Hotspot with VPN.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek conversation: PC Local IP While Hotspot with VPN (2025-12-13)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>PLA Filament Troubleshooting &amp; Calibration</title>
      <link>https://homelab.nbkelley.com/docs/3d-printing/pla-troubleshooting/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/3d-printing/pla-troubleshooting/</guid>
      <description>&lt;h1 id=&#34;pla-filament-troubleshooting--calibration&#34;&gt;PLA Filament Troubleshooting &amp;amp; Calibration&lt;a class=&#34;anchor&#34; href=&#34;#pla-filament-troubleshooting--calibration&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Switching PLA filament colors can cause functional failures even with identical models due to subtle differences in pigment, viscosity, shrinkage rates, and surface finish.&lt;/li&gt;&#xA;&lt;li&gt;Whistle functionality is highly sensitive to airway geometry, fipple edge sharpness, and internal surface smoothness.&lt;/li&gt;&#xA;&lt;li&gt;Top surface ironing in Bambu Studio can cause &amp;ldquo;dimple&amp;rdquo; pits due to over-melting, insufficient underlying support, or incorrect flow/speed ratios.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;functional-failure-color-switch&#34;&gt;Functional Failure (Color Switch)&lt;a class=&#34;anchor&#34; href=&#34;#functional-failure-color-switch&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dimensional Accuracy:&lt;/strong&gt; Different pigments cause varying shrinkage. A 0.1-0.2mm variance in airway width or fipple can kill sound.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Run a Temperature Tower and Flow Rate/Extrusion Multiplier Calibration for the new color.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Surface Finish &amp;amp; Friction:&lt;/strong&gt; Viscosity differences affect interior surface smoothness.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Lower print temperature by 5-10°C to reduce glossiness and sharpen the fipple edge. Max cooling fan (100%) during ironing/printing.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Moisture:&lt;/strong&gt; New filament rolls may absorb ambient moisture, causing bubbling and inconsistent extrusion.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Dry filament at 45-50°C for 4-6 hours.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Retraction/Oozing:&lt;/strong&gt; Viscosity changes can cause stringing inside the airway.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Increase retraction distance by 0.5-1mm or increase speed. Enable &amp;ldquo;Retract on Layer Change&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Post-Processing:&lt;/strong&gt; Critical for fipple edges.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Use folded printer paper or a precision knife to manually deburr and sharpen the internal fipple edge. Probe airway with thin filament to check for obstructions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;surface-pitting-ironing&#34;&gt;Surface Pitting (Ironing)&lt;a class=&#34;anchor&#34; href=&#34;#surface-pitting-ironing&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Over-Ironing:&lt;/strong&gt; Excessive ironing flow or low nozzle height displaces molten plastic, creating waves that solidify into pits.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Reduce &lt;code&gt;Ironing Flow&lt;/code&gt; by half (e.g., 10% -&amp;gt; 5%). Increase &lt;code&gt;Ironing Speed&lt;/code&gt; by 20-30%. Adjust &lt;code&gt;Ironing Line Spacing&lt;/code&gt; wider (e.g., 0.1mm -&amp;gt; 0.15mm).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Insufficient Support:&lt;/strong&gt; Too few top layers or low infill density causes the top surface to deflect into the infill pattern.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Increase &lt;code&gt;Top Layers&lt;/code&gt; to 4-6. Increase &lt;code&gt;Infill Density&lt;/code&gt; to 20-25% using Gyroid or Rectilinear patterns.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Temperature Sensitivity:&lt;/strong&gt; Blue PLA may be more heat-sensitive.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Set &lt;code&gt;Ironing Temperature&lt;/code&gt; 5-10°C lower than normal print temp. Ensure 100% fan cooling during the ironing pass.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;alternative-approach-skip-ironing&#34;&gt;Alternative Approach (Skip Ironing)&lt;a class=&#34;anchor&#34; href=&#34;#alternative-approach-skip-ironing&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ironing is aesthetic and unnecessary for functional parts like whistle bodies.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;Fix:&lt;/em&gt; Rely on standard top layer settings: &lt;code&gt;Top Layer Flow&lt;/code&gt; at 105-110%, smaller &lt;code&gt;Top Layer Line Width&lt;/code&gt; (e.g., 0.3mm on 0.4mm nozzle), and sufficient &lt;code&gt;Infill Overlap&lt;/code&gt; (15-20%).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Baseline Ironing Settings (Clean Ironing):&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Top Layers: 5&lt;/li&gt;&#xA;&lt;li&gt;Infill Density: 25% (Gyroid)&lt;/li&gt;&#xA;&lt;li&gt;Ironing: Enabled&lt;/li&gt;&#xA;&lt;li&gt;Ironing Flow: 5%&lt;/li&gt;&#xA;&lt;li&gt;Ironing Speed: 100 mm/s (or 1.5x normal top layer speed)&lt;/li&gt;&#xA;&lt;li&gt;Ironing Temperature: -5°C from base print temp&lt;/li&gt;&#xA;&lt;li&gt;Fan during Ironing: 100%&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Standard Top Layer Fallback:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Top Layer Flow: 105-110%&lt;/li&gt;&#xA;&lt;li&gt;Top Layer Line Width: 0.3mm (on 0.4mm nozzle)&lt;/li&gt;&#xA;&lt;li&gt;Infill Overlap: 15-20%&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversation date: 2026-02-01.&lt;/li&gt;&#xA;&lt;li&gt;Specific to Bambu Studio slicer settings and PLA filament behavior.&lt;/li&gt;&#xA;&lt;li&gt;No specific hardware or software versions mentioned beyond standard PLA and Bambu Studio ironing features.&lt;/li&gt;&#xA;&lt;li&gt;No known changes to filament manufacturing standards or slicer algorithms since this date.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Does the specific blue PLA brand have known shrinkage characteristics compared to the green PLA?&lt;/li&gt;&#xA;&lt;li&gt;Are there slicer profiles or G-code modifiers specifically tuned for whistle geometries?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/3d-printing/bambu-studio-layer-gcode/&#34;&gt;Bambu Studio Layer G-code&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/163-Troubleshooting Blue PLA 3D Printed Whistles.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Historical DeepSeek conversation (2026-02-01) on 3D printed whistle troubleshooting.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Proxy Management &amp; Cloudflare Tunnels</title>
      <link>https://homelab.nbkelley.com/docs/networking/proxy-management/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/networking/proxy-management/</guid>
      <description>&lt;h1 id=&#34;proxy-management--cloudflare-tunnels&#34;&gt;Proxy Management &amp;amp; Cloudflare Tunnels&lt;a class=&#34;anchor&#34; href=&#34;#proxy-management--cloudflare-tunnels&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There are multiple layers of proxying available in the homelab, ranging from edge protection (Cloudflare) to local routing (OPNsense/Nginx Proxy Manager).&lt;/p&gt;&#xA;&lt;h2 id=&#34;nginx-proxy-manager-npm-troubleshooting&#34;&gt;Nginx Proxy Manager (NPM) Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#nginx-proxy-manager-npm-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Redirect Loops &amp;amp; Timeouts&lt;/strong&gt;: Often caused by misconfigured upstream servers or aggressive timeout settings in NPM&amp;rsquo;s web UI. Resolving a redirect loop may expose underlying connectivity issues that manifest as timeouts.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Docker Compose Pattern&lt;/strong&gt;: NPM is deployed with &lt;code&gt;network_mode: host&lt;/code&gt; to bind directly to host ports (80, 443, 81), bypassing Docker&amp;rsquo;s NAT for direct host network access.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verification Steps&lt;/strong&gt;:&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Check container health: &lt;code&gt;docker ps | grep nginx-proxy-manager&lt;/code&gt; (ensure &lt;code&gt;healthy&lt;/code&gt; status).&lt;/li&gt;&#xA;&lt;li&gt;Verify port bindings: &lt;code&gt;sudo netstat -tulpn | grep :80&lt;/code&gt; / &lt;code&gt;:443&lt;/code&gt; (requires &lt;code&gt;net-tools&lt;/code&gt; package).&lt;/li&gt;&#xA;&lt;li&gt;Inspect NPM Web UI: Access at &lt;code&gt;http://&amp;lt;host-ip&amp;gt;:81&lt;/code&gt; to review Proxy Host settings, specifically timeout values and upstream server addresses.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Port Conflicts&lt;/strong&gt;: Use &lt;code&gt;netstat&lt;/code&gt; to identify which container owns a specific port (e.g., &lt;code&gt;docker-proxy&lt;/code&gt; vs &lt;code&gt;nginx: master&lt;/code&gt;). In this setup, port 8000 was observed bound to &lt;code&gt;docker-proxy&lt;/code&gt;, indicating another service in the compose stack.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Co-located Services&lt;/strong&gt;: The same Docker Compose stack hosts &lt;code&gt;cloudflare-ddns&lt;/code&gt; (for dynamic IP updates) and &lt;code&gt;netbird&lt;/code&gt; (for mesh networking), requiring careful port management to avoid conflicts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use &lt;code&gt;network_mode: host&lt;/code&gt; for NPM to simplify port mapping and ensure direct access to host network interfaces.&lt;/li&gt;&#xA;&lt;li&gt;Rely on &lt;code&gt;net-tools&lt;/code&gt; (&lt;code&gt;netstat&lt;/code&gt;) for quick port binding verification in host-networked Docker containers.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Docker Host&lt;/strong&gt;: &lt;code&gt;iluvatar@proxy&lt;/code&gt; (192.168.1.208)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;NPM Web UI&lt;/strong&gt;: &lt;code&gt;http://192.168.1.208:81&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ports&lt;/strong&gt;: 80 (HTTP), 443 (HTTPS), 81 (NPM Admin UI)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Troubleshooting session from 2025-11-17 resolved a redirect loop that subsequently turned into a timeout issue.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;net-tools&lt;/code&gt; installation was required to diagnose port bindings on the host.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Specific timeout values configured in NPM for upstream services.&lt;/li&gt;&#xA;&lt;li&gt;Whether &lt;code&gt;netbird&lt;/code&gt; or &lt;code&gt;cloudflare-ddns&lt;/code&gt; requires dedicated port exposure or can share the host network.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/security/cloudflare_integration/&#34;&gt;Cloudflare Integration: SSL &amp;amp; DNS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/opnsense_dmz_iot_firewall/&#34;&gt;OPNsense DMZ Firewall Rules for IoT&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Docker Host Configuration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/uptime-kuma/&#34;&gt;Uptime Kuma - Configuration &amp;amp; Integrations&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Servarr - Media Automation Stack</title>
      <link>https://homelab.nbkelley.com/docs/services/servarr/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/servarr/</guid>
      <description>&lt;h1 id=&#34;servarr---media-automation-stack&#34;&gt;Servarr - Media Automation Stack&lt;a class=&#34;anchor&#34; href=&#34;#servarr---media-automation-stack&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Servarr is a full VM at &lt;code&gt;192.168.1.112&lt;/code&gt; (hostname: &lt;code&gt;servarr&lt;/code&gt;) running a Docker Compose media automation stack. All services depend on a NAS mount at &lt;code&gt;/data&lt;/code&gt; for media storage. Download clients (qbittorrent, nzbget) and indexer (prowlarr) route through a Gluetun VPN container via &lt;code&gt;network_mode: service:gluetun&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This VM is distinct from &lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/varda-server/&#34;&gt;Varda&lt;/a&gt; (&lt;code&gt;192.168.1.131&lt;/code&gt;), which is a separate web server hosting &lt;code&gt;ilmare.nbkelley.com&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;vm-specs&#34;&gt;VM Specs&lt;a class=&#34;anchor&#34; href=&#34;#vm-specs&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Detail&lt;/th&gt;&#xA;          &lt;th&gt;Value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Hostname&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;servarr&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;IP&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;192.168.1.112&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;OS&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Ubuntu 24.04.4 LTS (Noble)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Kernel&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;6.8.0-107-generic&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;QEMU Virtual CPU, 4 vCPUs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;7.8 GB&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Disk&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;63 GB root (&lt;code&gt;/dev/sda2&lt;/code&gt; ext4, 38% used)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Hypervisor&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Proxmox (Minas Tirith)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;container-inventory&#34;&gt;Container Inventory&lt;a class=&#34;anchor&#34; href=&#34;#container-inventory&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;servarr-stack-dockerservarrcomposeyaml&#34;&gt;Servarr Stack (&lt;code&gt;/docker/servarr/compose.yaml&lt;/code&gt;)&lt;a class=&#34;anchor&#34; href=&#34;#servarr-stack-dockerservarrcomposeyaml&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Network: &lt;code&gt;servarrnetwork&lt;/code&gt; (&lt;code&gt;172.39.0.0/24&lt;/code&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Servarr Stack - Gluetun VPN Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/services/servarr-vpn-troubleshooting/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/servarr-vpn-troubleshooting/</guid>
      <description>&lt;h1 id=&#34;servarr-stack---gluetun-vpn-troubleshooting&#34;&gt;Servarr Stack - Gluetun VPN Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#servarr-stack---gluetun-vpn-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Historical note:&lt;/strong&gt; This session was conducted on a machine at &lt;code&gt;192.168.1.30&lt;/code&gt; (hostname possibly &amp;ldquo;Varda&amp;rdquo; at the time, directory &lt;code&gt;~/home/nbkelley/docker/servarr&lt;/code&gt;). The current production Servarr stack lives on the &lt;code&gt;servarr&lt;/code&gt; VM at &lt;code&gt;192.168.1.112&lt;/code&gt;, directory &lt;code&gt;/docker/servarr/&lt;/code&gt;. See &lt;a href=&#34;https://homelab.nbkelley.com/docs/services/servarr/&#34;&gt;Servarr - Media Automation Stack&lt;/a&gt; for current configuration. The troubleshooting patterns documented here remain applicable.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This session documents the deployment and troubleshooting of the Servarr media automation stack (Sonarr, Prowlarr, qBittorrent) behind a Gluetun VPN container. The stack relies on &lt;code&gt;network_mode: service:gluetun&lt;/code&gt; to route all container traffic through AirVPN.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH Host Key Management &amp; Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/ssh_host_key_management/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/ssh_host_key_management/</guid>
      <description>&lt;h1 id=&#34;ssh-host-key-management--troubleshooting&#34;&gt;SSH Host Key Management &amp;amp; Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#ssh-host-key-management--troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Standard procedures for resolving SSH &lt;code&gt;REMOTE HOST IDENTIFICATION HAS CHANGED&lt;/code&gt; warnings, which occur when a host&amp;rsquo;s SSH fingerprint differs from the locally stored &lt;code&gt;known_hosts&lt;/code&gt; entry. This typically happens after a server reinstall, OS upgrade, or SSH key regeneration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions--commands&#34;&gt;Key Decisions &amp;amp; Commands&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions--commands&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verify Legitimacy&lt;/strong&gt;: Always confirm with a system administrator or check server logs if a key change is unexpected, as it could indicate a man-in-the-middle attack.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Remove Stale Keys&lt;/strong&gt;: Use &lt;code&gt;ssh-keygen -R &amp;lt;hostname&amp;gt;&lt;/code&gt; to safely remove the outdated entry from &lt;code&gt;~/.ssh/known_hosts&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Targeted Removal&lt;/strong&gt;: If the error specifies a line number (e.g., line 9), you can remove it via &lt;code&gt;sed -i &#39;&#39; &#39;9d&#39; ~/.ssh/known_hosts&lt;/code&gt; or manually edit the file.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pre-populate Keys&lt;/strong&gt;: In managed environments, use &lt;code&gt;ssh-keyscan &amp;lt;host&amp;gt; &amp;gt;&amp;gt; ~/.ssh/known_hosts&lt;/code&gt; to automate key acceptance.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Security Best Practice&lt;/strong&gt;: Prefer certificate-based authentication in sensitive environments to bypass host key checking entirely.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Host Encountered&lt;/strong&gt;: &lt;code&gt;proxy&lt;/code&gt; (192.168.1.222, Nginx Proxy Manager)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;User Context&lt;/strong&gt;: Commands executed from macOS (&lt;code&gt;NK---Galadriel&lt;/code&gt;) as user &lt;code&gt;natekelley&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fingerprint Example&lt;/strong&gt;: &lt;code&gt;SHA256:k5j8V356rpQXapznIs12MeBEWHfZYwfeicXdNNWFyOI&lt;/code&gt; (ED25519)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Initial troubleshooting documented on 2025-11-17. The &lt;code&gt;proxy&lt;/code&gt; host likely had its underlying VM/container rebuilt or its SSH configuration reset, triggering the warning.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Should SSH host keys be version-controlled or managed via a configuration management tool (e.g., Ansible) to prevent future mismatches?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/proxy-management/&#34;&gt;Proxy Management &amp;amp; Cloudflare Tunnels&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/network_troubleshooting/&#34;&gt;Troubleshooting Network Interface Changes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/111-Check and Install Git, Go, Dart Sass on Ubuntu.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/104-SSH Host Key Change Warning and Fix.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Historical DeepSeek conversation: SSH Host Key Change Warning and Fix (2025-11-17)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>OPNsense Interface Reassignment &amp; NIC Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/networking/opnsense_interface_reassignment/</link>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/networking/opnsense_interface_reassignment/</guid>
      <description>&lt;h1 id=&#34;opnsense-interface-reassignment--nic-troubleshooting&#34;&gt;OPNsense Interface Reassignment &amp;amp; NIC Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#opnsense-interface-reassignment--nic-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Procedures for reassigning WAN/LAN interfaces via the OPNsense console following a system upgrade, and troubleshooting connectivity loss after a physical NIC replacement.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Console-Based Reassignment&lt;/strong&gt;: Use the OPNsense console menu (&lt;code&gt;1. Assign Interfaces&lt;/code&gt;) to map physical ports to WAN/LAN roles.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Network-Only Reset&lt;/strong&gt;: If configuration is lost, use &lt;code&gt;2. Reset to factory defaults&lt;/code&gt; and select &amp;ldquo;Reset only the network configuration&amp;rdquo; to preserve other settings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Manual Config Edit&lt;/strong&gt;: Fallback to &lt;code&gt;vi /conf/config.xml&lt;/code&gt; to manually adjust &lt;code&gt;&amp;lt;interfaces&amp;gt;&lt;/code&gt; tags (&lt;code&gt;&amp;lt;wan&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;lan&amp;gt;&lt;/code&gt;) if the menu fails.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;NIC Troubleshooting Workflow&lt;/strong&gt;: Verify driver recognition (&lt;code&gt;vmstat -i&lt;/code&gt;), link status (&lt;code&gt;ifconfig&lt;/code&gt;), and system logs (&lt;code&gt;dmesg&lt;/code&gt;). Check NAT/Outbound and LAN firewall rules. Isolate hardware issues by reverting to the original NIC.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Gateway&lt;/strong&gt;: UCG Express &amp;ldquo;Olorín&amp;rdquo; (OPNsense) at &lt;code&gt;192.168.1.1&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;VLANs&lt;/strong&gt;: Gandalf (192.168.1.x), Mithrandir (192.168.2.x), Tharkûn (192.168.3.x), Rivendell (192.168.4.x).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Switch&lt;/strong&gt;: Netgear MS308E (trunk/access VLANs managed via OPNsense).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Procedures documented for OPNsense upgrades where interface assignments reset.&lt;/li&gt;&#xA;&lt;li&gt;Troubleshooting steps refined for scenarios involving physical NIC swaps (e.g., 2.5GbE to 1GbE) causing interface loss.&lt;/li&gt;&#xA;&lt;li&gt;Note: Driver support (Intel &lt;code&gt;igb&lt;/code&gt;/&lt;code&gt;em&lt;/code&gt;, Realtek) and firmware updates may be required for newer NICs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Specific driver requirements for the current UCG Express &amp;ldquo;Olorín&amp;rdquo; gateway NICs.&lt;/li&gt;&#xA;&lt;li&gt;Automation of interface reassignment to prevent manual console steps during future upgrades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/opnsense_dhcp/&#34;&gt;OPNsense DHCP Configuration&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/vlan_setup/&#34;&gt;VLAN Configuration: OPNsense &amp;amp; Netgear MS308E&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/network_troubleshooting/&#34;&gt;Troubleshooting Network Interface Changes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/network/&#34;&gt;Network Infrastructure &amp;amp; VLANs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/034-Reassign WAN and LAN on OPNsense Post-Upgrade.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Historical DeepSeek conversation on OPNsense console interface reassignment and NIC troubleshooting.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Windows VM Installation Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/windows-vm-installation/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/windows-vm-installation/</guid>
      <description>&lt;h1 id=&#34;windows-vm-installation-troubleshooting&#34;&gt;Windows VM Installation Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#windows-vm-installation-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Troubleshooting guide for Windows installation when the local disk does not appear in the partitioning screen during setup.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-troubleshooting-steps&#34;&gt;Key Troubleshooting Steps&lt;a class=&#34;anchor&#34; href=&#34;#key-troubleshooting-steps&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Check disk detection in BIOS/UEFI&lt;/strong&gt; — If the disk doesn&amp;rsquo;t appear in BIOS, it&amp;rsquo;s a hardware issue (loose cable, faulty drive, wrong SATA port).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Load storage drivers&lt;/strong&gt; — Modern NVMe/RAID controllers may need drivers loaded during setup via &lt;code&gt;Shift + F10&lt;/code&gt; → &amp;ldquo;Load Driver&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VS Code Live Server Path Configuration</title>
      <link>https://homelab.nbkelley.com/docs/development/vscode-liveserver-paths/</link>
      <pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/development/vscode-liveserver-paths/</guid>
      <description>&lt;h1 id=&#34;vs-code-live-server-path-configuration&#34;&gt;VS Code Live Server Path Configuration&lt;a class=&#34;anchor&#34; href=&#34;#vs-code-live-server-path-configuration&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Resolved the &amp;ldquo;Cannot GET /page-name&amp;rdquo; error in VS Code Live Server by implementing a standardized project directory structure and correct relative pathing. The core fix involves ensuring the server root is set to the project root and using &lt;code&gt;../&lt;/code&gt; to traverse up from subdirectories.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Project Rooting&lt;/strong&gt;: Always open the top-level project folder in VS &lt;code&gt;Code&lt;/code&gt; rather than individual subfolders (like &lt;code&gt;html/&lt;/code&gt;). This allows Live Server to correctly resolve paths relative to the project root.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Directory Separation&lt;/strong&gt;: Adopted a structured hierarchy to separate assets, logic, and presentation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;project-structure&#34;&gt;Project Structure&lt;a class=&#34;anchor&#34; href=&#34;#project-structure&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;project-root/&#xA;├── Assets/&#xA;│   ├── icons/&#xA;│   └── images/&#xA;├── html/&#xA;│   ├── index.html&#xA;│   ├── about.html&#xA;│   └── contact.html&#xA;├── scripts/&#xA;│   └── main.js&#xA;└── Styles/&#xA;    └── style.css&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;pathing-rules-when-working-inside-html&#34;&gt;Pathing Rules (when working inside &lt;code&gt;html/&lt;/code&gt;)&lt;a class=&#34;anchor&#34; href=&#34;#pathing-rules-when-working-inside-html&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When files are located within the &lt;code&gt;html/&lt;/code&gt; subdirectory, all links to external directories must use the &lt;code&gt;../&lt;/code&gt; prefix to exit the &lt;code&gt;html/&lt;/code&gt; folder first.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxmox Network Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/proxmox_networking/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/proxmox_networking/</guid>
      <description>&lt;h1 id=&#34;proxmox-network-troubleshooting&#34;&gt;Proxmox Network Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#proxmox-network-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Troubleshooting steps for resolving connectivity loss to Proxmox nodes, specifically addressing IP conflicts and subnet mismatches.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static IP Reservation&lt;/strong&gt;: Proxmox nodes should always have a static IP (e.g., &lt;code&gt;192.168.0.69&lt;/code&gt;) that is &lt;strong&gt;excluded&lt;/strong&gt; from the OPNsense DHCP pool.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;troubleshooting-workflow&#34;&gt;Troubleshooting Workflow&lt;a class=&#34;anchor&#34; href=&#34;#troubleshooting-workflow&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verify Connectivity&lt;/strong&gt;: &lt;code&gt;ping 192.168.0.69&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Check Local Config&lt;/strong&gt;: Log in via console and verify &lt;code&gt;/etc/network/interfaces&lt;/code&gt;:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;auto vmbr0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;iface vmbr0 inet static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;address 192.168.0.69/24&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gateway 192.168.0.1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;bridge-ports enp3s0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Check for IP Conflicts&lt;/strong&gt;: Ensure no other device (via DHCP) has been assigned &lt;code&gt;192.168.0.69&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ARP Cache&lt;/strong&gt;: Clear local ARP cache if IP conflicts are suspected: &lt;code&gt;arp -d 192.168.0.69&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Identified an issue where a DHCP client was assigned &lt;code&gt;192.168.0.69&lt;/code&gt;, conflicting with the Proxmox static IP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting DeepSeek Language Switching</title>
      <link>https://homelab.nbkelley.com/docs/ai/deepseek_language_switching/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/ai/deepseek_language_switching/</guid>
      <description>&lt;h1 id=&#34;troubleshooting-deepseek-language-switching&#34;&gt;Troubleshooting DeepSeek Language Switching&lt;a class=&#34;anchor&#34; href=&#34;#troubleshooting-deepseek-language-switching&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Local DeepSeek models may intermittently switch from English to Chinese mid-response. This is typically caused by training bias (heavy Chinese dataset influence), loss of context during long conversations, or mixed-language input prompts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To maintain English-only responses, the following parameters and prompting strategies should be applied:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Explicit Instruction&lt;/strong&gt;: Always include a system-level or initial prompt instruction to respond exclusively in English.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Temperature Control&lt;/strong&gt;: Use lower temperature settings (e.g., &lt;code&gt;0.3&lt;/code&gt;) to make the model more deterministic and less likely to drift.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Repetition Penalty&lt;/strong&gt;: Implement a &lt;code&gt;repetition_penalty&lt;/code&gt; (e.g., &lt;code&gt;1.2&lt;/code&gt;) to discourage the model from falling into repetitive patterns that might trigger language switching.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;system-message-pattern&#34;&gt;System Message Pattern&lt;a class=&#34;anchor&#34; href=&#34;#system-message-pattern&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When using APIs or local inference engines that support system roles:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting Network Interface Changes</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/network_troubleshooting/</link>
      <pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/network_troubleshooting/</guid>
      <description>&lt;h1 id=&#34;troubleshooting-network-interface-changes&#34;&gt;Troubleshooting Network Interface Changes&lt;a class=&#34;anchor&#34; href=&#34;#troubleshooting-network-interface-changes&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When replacing a physical Network Interface Card (NIC)—for example, swapping a 2.5GbE card for a 1GbE card—the system will lose connectivity if the software configuration still references the old interface name.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Connectivity loss after a hardware swap is usually due to a mismatch in the &lt;code&gt;bridge-ports&lt;/code&gt; setting within the network configuration. The new NIC will likely have a different kernel interface name (e.g., changing from &lt;code&gt;enp0s1&lt;/code&gt; to &lt;code&gt;enp0s2&lt;/code&gt;).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
