<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Homelab on Margrop Blog</title>
    <link>https://blog.margrop.net/en/tag/homelab/</link>
    <description>Recent content in Homelab on Margrop Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Sat, 13 Jun 2026 08:30:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/en/tag/homelab/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PhotoPrism Stuck for 5 Minutes on First Boot? A Postmortem on PHOTOPRISM_INIT=intel</title>
      <link>https://blog.margrop.net/en/post/photoprism-init-intel-stuck/</link>
      <pubDate>Sat, 13 Jun 2026 08:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/photoprism-init-intel-stuck/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR (The Short Version)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;PHOTOPRISM_INIT: &amp;quot;intel&amp;quot;&lt;/code&gt; line in PhotoPrism&amp;rsquo;s Plus Docker image is &lt;strong&gt;not&lt;/strong&gt; just a flag to enable Intel hardware acceleration at runtime — it&amp;rsquo;s a one-shot &lt;strong&gt;system-level installer&lt;/strong&gt; that runs &lt;code&gt;apt-get dist-upgrade&lt;/code&gt; against &lt;code&gt;archive.ubuntu.com&lt;/code&gt; and then installs 8 Intel/VA-API packages before the main process is allowed to start. On a fresh container this takes &lt;strong&gt;5–10 minutes&lt;/strong&gt; (sometimes more), during which nothing inside the container listens on port &lt;code&gt;2342&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Meanwhile: &lt;code&gt;docker ps&lt;/code&gt; says &lt;code&gt;Up&lt;/code&gt;, Portainer is green, &lt;code&gt;ss -ltn&lt;/code&gt; on the host shows &lt;code&gt;:2342&lt;/code&gt; LISTEN — but your browser gets &lt;code&gt;ERR_CONNECTION_RESET&lt;/code&gt; / &lt;code&gt;Connection reset by peer&lt;/code&gt;. Because host-side &lt;code&gt;docker-proxy&lt;/code&gt; accepts the connection and then tries to forward to a port inside the container that has no listener, the kernel sends back an RST.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; just remove or empty that one line. If you already pass &lt;code&gt;/dev/dri/renderD128&lt;/code&gt; via &lt;code&gt;devices:&lt;/code&gt;, the host&amp;rsquo;s drivers and userland libraries are perfectly usable from the container — there&amp;rsquo;s nothing to &amp;ldquo;install&amp;rdquo; in there.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Seamless Homelab Networking: Deploying Tailscale on Ubuntu 26.04 for Effortless Remote Access</title>
      <link>https://blog.margrop.net/en/post/seamless-homelab-networking-deploy-tailscale-ubuntu-2604/</link>
      <pubDate>Tue, 26 May 2026 14:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/seamless-homelab-networking-deploy-tailscale-ubuntu-2604/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The Short Version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cross-carrier connectivity, lack of public IPv4 addresses, and multi-device connection management have always been the ultimate pain points for Homelab enthusiasts and enterprise sysadmins alike. This article provides a comprehensive, step-by-step guide on how to cleanly and securely install and configure the latest version of Tailscale on the newly released Ubuntu 26.04 (Resolute Raccoon) using the modern APT Keyring standards. Beyond a clean command-line install walkthrough, we delve into the architectural design of Tailscale, Subnet Router routing, and Exit Node proxying to establish a seamless, encrypted mesh network linking your home Synology NAS, Proxmox VE hypervisors, remote laptops, and mobile devices.&lt;/p&gt;&#xA;&lt;p&gt;All setups and commands documented here have been rigorously tested on a clean Ubuntu 26.04 (Resolute Raccoon) environment. To prioritize safety and avoid leakage, all internal IP addresses, access tokens, routing tables, and server domains have been fully masked using generic placeholders.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Proxmox VE 9.2 Is Out: Not Just a New Kernel, but a Cluster That Can Start Balancing Itself</title>
      <link>https://blog.margrop.net/en/post/proxmox-ve-9-2-dynamic-load-balancer-release/</link>
      <pubDate>Sat, 23 May 2026 12:46:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/proxmox-ve-9-2-dynamic-load-balancer-release/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Proxmox VE 9.2 was officially released on May 21, 2026. On the surface it is a platform refresh: Debian 13.5 Trixie, Linux kernel 7.0, QEMU 11.0, LXC 7.0, ZFS 2.4, and updated Ceph options. The more interesting story is operational: dynamic load balancing through CRS, safer HA maintenance with arm/disarm, a much stronger SDN fabric story, web-based custom CPU model management, and many smaller fixes around guests, storage, security, and automation.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;If you run a single-node homelab, Proxmox VE 9.2 may not feel dramatic on day one. If you operate a multi-node cluster with HA resources, Ceph, software-defined networking, custom CPU compatibility requirements, Windows secure boot, external automation, or strict maintenance windows, this release deserves a careful read.&lt;/p&gt;&#xA;&lt;p&gt;This article summarizes the official Proxmox VE 9.2 release and adds an operator’s view: what changed, what problem each change addresses, what to test before upgrading, and when it is reasonable to wait. All hostnames, addresses, cluster names, accounts, and command outputs are placeholders. No private environment details are included.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading PVE 8 to 9 Without Brute Force: Let an Agent Drive It, or Follow This Manual Checklist</title>
      <link>https://blog.margrop.net/en/post/pve8-to-pve9-agent-manual-upgrade-guide/</link>
      <pubDate>Tue, 12 May 2026 19:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/pve8-to-pve9-agent-manual-upgrade-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Upgrading Proxmox VE 8 to 9 is not just copying a few commands. It is a major system upgrade from Debian Bookworm to Trixie, from PVE 8.4 to PVE 9.x, with kernel, storage, networking, Ceph, and HA behavior in the blast radius. The fastest practical path is to let Codex, Claude, OpenClaw, HermesAgent, or a similar Agent handle checks, command sequencing, logging, and post-upgrade verification. The human operator still needs to approve repository changes, package removals, configuration prompts, reboot timing, and recovery decisions. If you prefer doing everything by hand, the second half of this article gives a concrete manual checklist.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article is for two groups of operators. The first group already uses Agents over SSH and wants a scoped one-sentence task for upgrading PVE. The second group prefers typing every command manually and wants a clear, ordered procedure with the main risk points called out.&lt;/p&gt;&#xA;&lt;p&gt;All hostnames, addresses, repositories, tokens, and accounts in this article are placeholders. Replace values such as &lt;code&gt;&amp;lt;PVE_NODE&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;BACKUP_TARGET&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;ADMIN_CONSOLE&amp;gt;&lt;/code&gt; with your own environment. Before touching a production host, read the official Proxmox documentation and verify that your backups are restorable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding Proxmox VE local-lvm Usage and Link-Speed Monitoring to Uptime Kuma</title>
      <link>https://blog.margrop.net/en/post/proxmoxve-lvm-link-speed-uptime-kuma/</link>
      <pubDate>Tue, 05 May 2026 17:20:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/proxmoxve-lvm-link-speed-uptime-kuma/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Proxmox VE &lt;code&gt;local-lvm&lt;/code&gt; is usually an LVM-thin pool, not a normal mounted directory, so &lt;code&gt;df -h&lt;/code&gt; is not enough to catch it before it becomes full. Network link speed is another quiet failure mode: services may stay online while a NAS or router uplink falls back to 100 Mb/s and turns large file transfers into a crawl. A practical fix is to feed both checks into the Uptime Kuma you already use: expose a small HTTP health endpoint for &lt;code&gt;local-lvm&lt;/code&gt;, and push link-speed status from the Proxmox host with an &lt;code&gt;ethtool&lt;/code&gt; script.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article walks through the design, the problems in a naive implementation, improved scripts, systemd units, Uptime Kuma configuration, verification steps, and safety notes. All addresses, tokens, host names, and environment-specific values are placeholders. Replace &lt;code&gt;&amp;lt;PVE_HOST&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;KUMA_URL&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;PUSH_TOKEN&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;INTERFACE&amp;gt;&lt;/code&gt; with values from your own environment.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
