[{"data":1,"prerenderedAt":1104},["ShallowReactive",2],{"blog-chromebox-proxmox-homelab-rebuild":3,"blog-chromebox-proxmox-homelab-rebuild-favor-of":1103},{"id":4,"title":5,"body":6,"cover_image":1087,"date":1088,"description":1089,"extension":1090,"meta":1091,"navigation":768,"path":1092,"seo":1093,"stem":1094,"tags":1095,"type":1101,"__hash__":1102},"blog\u002Fblog\u002Fchromebox-proxmox-homelab-rebuild.md","Repurposing an i7 Chromebox into a Proxmox VE Server: MrChromebox UEFI & Stability Guide",{"type":7,"value":8,"toc":1065},"minimark",[9,13,20,27,30,33,36,39,55,58,61,66,69,206,212,214,218,229,249,265,272,274,278,283,320,324,332,376,380,383,391,395,398,404,407,427,435,439,446,448,452,537,539,543,554,589,592,596,601,608,621,628,634,637,646,650,655,667,670,676,679,692,694,701,704,720,725,731,733,737,740,837,841,848,852,861,864,876,882,884,888,1017,1019,1023,1026,1035,1055,1058,1061],[10,11,5],"h1",{"id":12},"repurposing-an-i7-chromebox-into-a-proxmox-ve-server-mrchromebox-uefi-stability-guide",[14,15,16],"p",{},[17,18,19],"em",{},"From ChromeOS Desktop to 24\u002F7 Enterprise Hypervisor: Hardware Teardown, UEFI Flashing, MAC Restoration, and Mandatory Kernel Stability Fixes.",[14,21,22],{},[23,24],"img",{"alt":25,"src":26},"Repurposing an Intel Core i7 Chromebox for Proxmox VE","\u002Fimages\u002Fblog\u002Fchromebox-hardware-teardown.jpg",[14,28,29],{},"I am wiping my homelab and rebuilding everything from bare metal.",[14,31,32],{},"Over the last two years, my homelab became a museum of forgotten experiments: custom Postgres operators, local LLM runtimes, test Kubernetes clusters, and manual SSH hotfixes. Everything worked, but drift had piled up. If a drive died at 2 AM, I would have to remember dozens of undocumented system tweaks to restore it.",[14,34,35],{},"I pulled the hardware apart to start clean.",[14,37,38],{},"This article covers the foundation of the rebuild. Before I get to declarative OpenTofu\u002FTerraform pipelines, Ansible convergence, or high-availability Postgres clusters, I have to get the physical hardware stable.",[14,40,41,42,46,47,50,51,54],{},"My compute nodes for this rebuild are ",[43,44,45],"strong",{},"Intel Core i7 Chromeboxes (4 cores, 8 threads, 16GB DDR4 RAM, 500GB NVMe SSD)",". Google designed these machines for ChromeOS kiosks and desktop browsing. I had already repurposed them once in my lab, and now I am bringing them up to modern standards: I flash the latest ",[43,48,49],{},"MrChromebox UEFI Full ROM"," firmware, install ",[43,52,53],{},"Proxmox VE 9.2"," clean (it builds on Debian 13 Trixie with Linux Kernel 7.0), and apply the kernel fixes that keep mobile hardware stable 24\u002F7.",[14,56,57],{},"Here is the step-by-step runbook.",[59,60],"hr",{},[62,63,65],"h2",{"id":64},"️-the-node-architecture-hardware-specs","🛠️ The Node Architecture & Hardware Specs",[14,67,68],{},"For this cluster, I am preparing two identical nodes:",[70,71,72,96],"table",{},[73,74,75],"thead",{},[76,77,78,82,90],"tr",{},[79,80,81],"th",{},"Specification",[79,83,84,85,89],{},"Node A (",[86,87,88],"code",{},"pve-01.lan",")",[79,91,92,93,89],{},"Node B (",[86,94,95],{},"pve-02.lan",[97,98,99,112,124,136,148,165,182,194],"tbody",{},[76,100,101,107,110],{},[102,103,104],"td",{},[43,105,106],{},"Form Factor",[102,108,109],{},"1-Liter Ultra-Compact Chromebox",[102,111,109],{},[76,113,114,119,122],{},[102,115,116],{},[43,117,118],{},"CPU",[102,120,121],{},"Intel Core i7 (4 Cores \u002F 8 Threads)",[102,123,121],{},[76,125,126,131,134],{},[102,127,128],{},[43,129,130],{},"RAM",[102,132,133],{},"16 GB DDR4 SO-DIMM (Dual-Channel)",[102,135,133],{},[76,137,138,143,146],{},[102,139,140],{},[43,141,142],{},"Storage",[102,144,145],{},"500 GB M.2 NVMe SSD",[102,147,145],{},[76,149,150,155,160],{},[102,151,152],{},[43,153,154],{},"Chassis LAN MAC",[102,156,157],{},[86,158,159],{},"B4:A9:FC:21:B9:77",[102,161,162],{},[86,163,164],{},"D8:C4:97:AD:0F:A4",[76,166,167,172,177],{},[102,168,169],{},[43,170,171],{},"Static IP",[102,173,174],{},[86,175,176],{},"192.168.1.51",[102,178,179],{},[86,180,181],{},"192.168.1.52",[76,183,184,189,192],{},[102,185,186],{},[43,187,188],{},"Target OS",[102,190,191],{},"Proxmox VE 9.2 (Debian 13 Trixie)",[102,193,191],{},[76,195,196,201,204],{},[102,197,198],{},[43,199,200],{},"Idle Power",[102,202,203],{},"~7–11 Watts",[102,205,203],{},[14,207,208],{},[23,209],{"alt":210,"src":211},"Flashing a Chromebox to Proxmox VE 9.2: Flashing & Stability Pipeline | wide","\u002Fimages\u002Fblog\u002Fchromebox-proxmox-workflow-poster.svg#wide",[59,213],{},[62,215,217],{"id":216},"prerequisites-prepare-your-usb-drives","Prerequisites: Prepare Your USB Drives",[14,219,220,221,228],{},"You will need two USB flash drives (or a single drive equipped with ",[222,223,227],"a",{"href":224,"rel":225},"https:\u002F\u002Fwww.ventoy.net\u002F",[226],"nofollow","Ventoy","):",[230,231,232,239],"ol",{},[233,234,235,238],"li",{},[43,236,237],{},"Live Linux USB:"," Standard Ubuntu Desktop, Linux Mint, or Fedora Live ISO. It only boots into memory and runs the MrChromebox firmware utility script.",[233,240,241,244,245,248],{},[43,242,243],{},"Proxmox VE USB:"," The official Proxmox VE 9.2 ISO written via Rufus (in ",[43,246,247],{},"DD mode","), BalenaEtcher, or Ventoy.",[250,251,252,259],"blockquote",{},[14,253,254,258],{},[255,256,257],"span",{},"!NOTE","\nBefore flashing, seat the NVMe SSD, connect an Ethernet cable with active internet access, attach a display via HDMI\u002FDisplayPort, and plug in a USB keyboard.",[14,260,261,264],{},[43,262,263],{},"Why Proxmox VE 9.2?"," Proxmox VE 8.x reached End-Of-Life (EOL) in August 2026. Proxmox VE 9.2 builds on Debian 13 (\"Trixie\") and ships with Linux Kernel 7.0 by default, with native Cluster Resource Scheduling (CRS) dynamic load balancing and integrated WireGuard Software-Defined Networking (SDN).",[14,266,267,268,271],{},"Because these units already had custom UEFI firmware from their prior lifecycle, ",[43,269,270],{},"you do not need to touch the physical write-protect screw or ChromeOS Developer Mode jumpers again",".",[59,273],{},[62,275,277],{"id":276},"step-1-flash-the-latest-mrchromebox-uefi-firmware","Step 1: Flash the Latest MrChromebox UEFI Firmware",[279,280,282],"h3",{"id":281},"_1-boot-into-live-linux","1. Boot into Live Linux",[230,284,285,288,300,307],{},[233,286,287],{},"Insert your Live Linux USB into the Chromebox.",[233,289,290,291,295,296,299],{},"Power on the unit and tap ",[292,293,294],"kbd",{},"ESC"," (or ",[292,297,298],{},"F2",") repeatedly at boot to open the UEFI boot menu.",[233,301,302,303,306],{},"Select your USB drive and boot into the live desktop environment (",[17,304,305],{},"\"Try Ubuntu without installing\"",").",[233,308,309,310,313,314,313,317,306],{},"Open a terminal (",[292,311,312],{},"Ctrl"," + ",[292,315,316],{},"Alt",[292,318,319],{},"T",[279,321,323],{"id":322},"_2-download-and-run-the-firmware-utility-script","2. Download and Run the Firmware Utility Script",[14,325,326,327,228],{},"Run the official utility from Matt DeVillier (",[222,328,331],{"href":329,"rel":330},"https:\u002F\u002Fmrchromebox.tech",[226],"mrchromebox.tech",[333,334,339],"pre",{"className":335,"code":336,"language":337,"meta":338,"style":338},"language-bash shiki shiki-themes github-light github-dark","cd; curl -LOf https:\u002F\u002Fmrchromebox.tech\u002Ffirmware-util.sh && sudo bash firmware-util.sh\n","bash","",[86,340,341],{"__ignoreMap":338},[255,342,345,349,353,357,360,364,367,370,373],{"class":343,"line":344},"line",1,[255,346,348],{"class":347},"sj4cs","cd",[255,350,352],{"class":351},"sVt8B","; ",[255,354,356],{"class":355},"sScJk","curl",[255,358,359],{"class":347}," -LOf",[255,361,363],{"class":362},"sZZnC"," https:\u002F\u002Fmrchromebox.tech\u002Ffirmware-util.sh",[255,365,366],{"class":351}," && ",[255,368,369],{"class":355},"sudo",[255,371,372],{"class":362}," bash",[255,374,375],{"class":362}," firmware-util.sh\n",[279,377,379],{"id":378},"_3-select-option-2-installupdate-uefi-full-rom","3. Select Option 2 (Install\u002FUpdate UEFI Full ROM)",[14,381,382],{},"In the interactive menu, choose:",[333,384,389],{"className":385,"code":387,"language":388,"meta":338},[386],"language-text","2) Install\u002FUpdate UEFI (Full ROM) Firmware\n","text",[86,390,387],{"__ignoreMap":338},[279,392,394],{"id":393},"_4-set-the-physical-ethernet-mac-address-critical","4. Set the Physical Ethernet MAC Address (CRITICAL)",[14,396,397],{},"If the utility detects missing, wiped, or corrupted Vital Product Data (VPD) in the firmware flash, it will prompt:",[333,399,402],{"className":400,"code":401,"language":388,"meta":338},[386],"Enter Ethernet MAC address:\n",[86,403,401],{"__ignoreMap":338},[14,405,406],{},"Type the exact physical LAN MAC address printed on the chassis sticker of that specific hardware unit:",[408,409,410,419],"ul",{},[233,411,412,415,416],{},[43,413,414],{},"Node A:"," ",[86,417,418],{},"B4A9FC21B977",[233,420,421,415,424],{},[43,422,423],{},"Node B:",[86,425,426],{},"D8C497AD0FA4",[250,428,429],{},[14,430,431,434],{},[255,432,433],{},"!IMPORTANT","\nDo not skip or fake this step. Chromebox Realtek\u002FIntel onboard NICs rely on this VPD address. If you enter an invalid MAC or skip it, your network bridge will assign fallback MACs, breaking static DHCP reservations and Proxmox cluster communication.",[279,436,438],{"id":437},"_5-complete-the-flash-power-off","5. Complete the Flash & Power Off",[14,440,441,442,445],{},"Once the flashing progress bar reaches 100% and validates checksums, ",[43,443,444],{},"choose the script option to Power Off"," (do not simply issue a software reboot). Unplug the Live Linux USB.",[59,447],{},[62,449,451],{"id":450},"step-2-install-proxmox-ve-92-debian-13-trixie","Step 2: Install Proxmox VE 9.2 (Debian 13 Trixie)",[230,453,454,457,463,469,495,534],{},[233,455,456],{},"Insert your Proxmox VE 9.2 USB installer into the Chromebox.",[233,458,459,460,462],{},"Power on and tap ",[292,461,294],{}," to enter the boot menu. Select the Proxmox installer.",[233,464,465,466,271],{},"Choose ",[43,467,468],{},"Install Proxmox VE (Graphical)",[233,470,471,474,475,478,479],{},[43,472,473],{},"Target Harddisk:"," Select your internal NVMe SSD (",[86,476,477],{},"\u002Fdev\u002Fnvme0n1",").\n",[408,480,481],{},[233,482,483,486,487,490,491,494],{},[17,484,485],{},"Filesystem choice:"," Select ",[86,488,489],{},"ext4"," (recommended here for straightforward GRUB maintenance on single drives) or ",[86,492,493],{},"ZFS (RAID0)"," if you prefer copy-on-write datasets and snapshotting.",[233,496,497,500],{},[43,498,499],{},"Network Configuration:",[408,501,502,521],{},[233,503,504,506,507,510,511,514,515,518,519,271],{},[43,505,414],{}," IP ",[86,508,509],{},"192.168.1.51\u002F24",", Gateway ",[86,512,513],{},"192.168.1.1",", DNS ",[86,516,517],{},"1.1.1.1",", Hostname ",[86,520,88],{},[233,522,523,506,525,510,528,514,530,518,532,271],{},[43,524,423],{},[86,526,527],{},"192.168.1.52\u002F24",[86,529,513],{},[86,531,517],{},[86,533,95],{},[233,535,536],{},"Complete the wizard. Remove the USB drive when prompted and let the machine reboot.",[59,538],{},[62,540,542],{"id":541},"step-3-mandatory-post-install-stability-configuration","Step 3: Mandatory Post-Install Stability Configuration",[14,544,545,546,549,550,553],{},"Once Proxmox boots to the console\u002Flogin prompt (",[86,547,548],{},"https:\u002F\u002F\u003Cip>:8006","), log in as ",[86,551,552],{},"root"," (either locally or over SSH).",[250,555,556,569],{},[14,557,558,561,564,565,568],{},[255,559,560],{},"!CAUTION",[43,562,563],{},"Why 99% of Chromebox server setups crash:","\nChromeboxes use mobile laptop-grade Intel processors and consumer NVMe controllers. In a desktop environment with a human moving a mouse and a screen attached, they work fine. But on a ",[43,566,567],{},"headless 24\u002F7 server with no display plugged in",", they will freeze after 6 to 18 hours due to three specific hardware quirks:",[230,570,571,577,583],{},[233,572,573,576],{},[43,574,575],{},"Intel Mobile C-State Lockups:"," The CPU enters ultra-low power idle states (C7\u002FC8) and never wakes up.",[233,578,579,582],{},[43,580,581],{},"NVMe APST Drops:"," Samsung and consumer SSDs enter aggressive Autonomous Power State Transitions, the controller drops off the PCIe bus, and Linux forces the filesystem into read-only mode.",[233,584,585,588],{},[43,586,587],{},"Headless GPU Driver Hangs:"," The Intel iGPU kernel mode driver panics when it finds no display output.",[14,590,591],{},"Applying the following configuration fixes all three issues permanently.",[279,593,595],{"id":594},"_1-apply-kernel-parameters","1. Apply Kernel Parameters",[597,598,600],"h4",{"id":599},"for-ext4-installations-grub","For ext4 installations (GRUB):",[14,602,603,604,607],{},"Edit ",[86,605,606],{},"\u002Fetc\u002Fdefault\u002Fgrub",":",[333,609,611],{"className":335,"code":610,"language":337,"meta":338,"style":338},"nano \u002Fetc\u002Fdefault\u002Fgrub\n",[86,612,613],{"__ignoreMap":338},[255,614,615,618],{"class":343,"line":344},[255,616,617],{"class":355},"nano",[255,619,620],{"class":362}," \u002Fetc\u002Fdefault\u002Fgrub\n",[14,622,623,624,627],{},"Find ",[86,625,626],{},"GRUB_CMDLINE_LINUX_DEFAULT"," and set it to:",[333,629,632],{"className":630,"code":631,"language":388,"meta":338},[386],"GRUB_CMDLINE_LINUX_DEFAULT=\"quiet intel_idle.max_cstate=1 processor.max_cstate=1 nvme_core.default_ps_max_latency_us=0 nomodeset\"\n",[86,633,631],{"__ignoreMap":338},[14,635,636],{},"Save and apply the changes:",[333,638,640],{"className":335,"code":639,"language":337,"meta":338,"style":338},"update-grub\n",[86,641,642],{"__ignoreMap":338},[255,643,644],{"class":343,"line":344},[255,645,639],{"class":355},[597,647,649],{"id":648},"for-zfs-installations-systemd-boot","For ZFS installations (systemd-boot):",[14,651,603,652,607],{},[86,653,654],{},"\u002Fetc\u002Fkernel\u002Fcmdline",[333,656,658],{"className":335,"code":657,"language":337,"meta":338,"style":338},"nano \u002Fetc\u002Fkernel\u002Fcmdline\n",[86,659,660],{"__ignoreMap":338},[255,661,662,664],{"class":343,"line":344},[255,663,617],{"class":355},[255,665,666],{"class":362}," \u002Fetc\u002Fkernel\u002Fcmdline\n",[14,668,669],{},"Append the stability flags to the existing single line:",[333,671,674],{"className":672,"code":673,"language":388,"meta":338},[386],"root=ZFS=rpool\u002FROOT\u002Fpve-1 boot=zfs intel_idle.max_cstate=1 processor.max_cstate=1 nvme_core.default_ps_max_latency_us=0 nomodeset\n",[86,675,673],{"__ignoreMap":338},[14,677,678],{},"Apply the changes:",[333,680,682],{"className":335,"code":681,"language":337,"meta":338,"style":338},"proxmox-boot-tool refresh\n",[86,683,684],{"__ignoreMap":338},[255,685,686,689],{"class":343,"line":344},[255,687,688],{"class":355},"proxmox-boot-tool",[255,690,691],{"class":362}," refresh\n",[59,693],{},[279,695,697,698],{"id":696},"_2-verify-and-pin-hardware-mac-in-etcnetworkinterfaces","2. Verify and Pin Hardware MAC in ",[86,699,700],{},"\u002Fetc\u002Fnetwork\u002Finterfaces",[14,702,703],{},"Confirm that your network interface uses the true physical MAC from the chassis label:",[333,705,707],{"className":335,"code":706,"language":337,"meta":338,"style":338},"ip link show\n",[86,708,709],{"__ignoreMap":338},[255,710,711,714,717],{"class":343,"line":344},[255,712,713],{"class":355},"ip",[255,715,716],{"class":362}," link",[255,718,719],{"class":362}," show\n",[14,721,722,723,607],{},"If the physical interface defaults to an incorrect address, explicitly pin it in ",[86,724,700],{},[333,726,729],{"className":727,"code":728,"language":388,"meta":338},[386],"iface enp1s0 inet manual\n    hwaddress ether \u003CSTICKER-MAC-HERE>\n",[86,730,728],{"__ignoreMap":338},[59,732],{},[279,734,736],{"id":735},"_3-clean-up-proxmox-repositories-no-subscription","3. Clean Up Proxmox Repositories (No-Subscription)",[14,738,739],{},"Disable the enterprise repository (which errors out without a paid license key) and enable the official community no-subscription repo for Proxmox VE 9.2 (Debian 13 Trixie):",[333,741,743],{"className":335,"code":742,"language":337,"meta":338,"style":338},"# 1. Disable enterprise repository\nrm -f \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpve-enterprise.list\n\n# 2. Add community no-subscription repository (Debian 13 Trixie)\ncat \u003C\u003CEOF > \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpve-no-subscription.list\ndeb http:\u002F\u002Fdownload.proxmox.com\u002Fdebian\u002Fpve trixie pve-no-subscription\nEOF\n\n# 3. Update packages and upgrade system\napt update && apt dist-upgrade -y\n",[86,744,745,751,763,770,776,795,801,807,812,818],{"__ignoreMap":338},[255,746,747],{"class":343,"line":344},[255,748,750],{"class":749},"sJ8bj","# 1. Disable enterprise repository\n",[255,752,754,757,760],{"class":343,"line":753},2,[255,755,756],{"class":355},"rm",[255,758,759],{"class":347}," -f",[255,761,762],{"class":362}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpve-enterprise.list\n",[255,764,766],{"class":343,"line":765},3,[255,767,769],{"emptyLinePlaceholder":768},true,"\n",[255,771,773],{"class":343,"line":772},4,[255,774,775],{"class":749},"# 2. Add community no-subscription repository (Debian 13 Trixie)\n",[255,777,779,782,786,789,792],{"class":343,"line":778},5,[255,780,781],{"class":355},"cat",[255,783,785],{"class":784},"szBVR"," \u003C\u003C",[255,787,788],{"class":362},"EOF",[255,790,791],{"class":784}," >",[255,793,794],{"class":362}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpve-no-subscription.list\n",[255,796,798],{"class":343,"line":797},6,[255,799,800],{"class":362},"deb http:\u002F\u002Fdownload.proxmox.com\u002Fdebian\u002Fpve trixie pve-no-subscription\n",[255,802,804],{"class":343,"line":803},7,[255,805,806],{"class":362},"EOF\n",[255,808,810],{"class":343,"line":809},8,[255,811,769],{"emptyLinePlaceholder":768},[255,813,815],{"class":343,"line":814},9,[255,816,817],{"class":749},"# 3. Update packages and upgrade system\n",[255,819,821,824,827,829,831,834],{"class":343,"line":820},10,[255,822,823],{"class":355},"apt",[255,825,826],{"class":362}," update",[255,828,366],{"class":351},[255,830,823],{"class":355},[255,832,833],{"class":362}," dist-upgrade",[255,835,836],{"class":347}," -y\n",[279,838,840],{"id":839},"_4-m2-wi-fi-card-maintenance","4. M.2 Wi-Fi Card Maintenance",[14,842,843,844,847],{},"If your Chromebox includes an internal M.2 Wi-Fi card, either keep the internal antennas securely connected to the PCB connectors, or physically unscrew and remove the Wi-Fi card altogether. Unconnected Wi-Fi cards frequently flood the Linux kernel ring buffer (",[86,845,846],{},"dmesg",") with antenna scanning loops, which waste CPU cycles and generate heat.",[279,849,851],{"id":850},"_5-final-reboot","5. Final Reboot",[333,853,855],{"className":335,"code":854,"language":337,"meta":338,"style":338},"reboot\n",[86,856,857],{"__ignoreMap":338},[255,858,859],{"class":343,"line":344},[255,860,854],{"class":355},[14,862,863],{},"Once rebooted, verify that the kernel parameters are active:",[333,865,867],{"className":335,"code":866,"language":337,"meta":338,"style":338},"cat \u002Fproc\u002Fcmdline\n",[86,868,869],{"__ignoreMap":338},[255,870,871,873],{"class":343,"line":344},[255,872,781],{"class":355},[255,874,875],{"class":362}," \u002Fproc\u002Fcmdline\n",[14,877,878,879,271],{},"You should see ",[86,880,881],{},"intel_idle.max_cstate=1 processor.max_cstate=1 nvme_core.default_ps_max_latency_us=0 nomodeset",[59,883],{},[62,885,887],{"id":886},"summary-checklist-for-both-nodes","📋 Summary Checklist for Both Nodes",[70,889,890,905],{},[73,891,892],{},[76,893,894,897,901],{},[79,895,896],{},"Task",[79,898,84,899,89],{},[86,900,88],{},[79,902,92,903,89],{},[86,904,95],{},[97,906,907,922,934,949,961,987,1005],{},[76,908,909,914,918],{},[102,910,911],{},[43,912,913],{},"Physical LAN MAC",[102,915,916],{},[86,917,159],{},[102,919,920],{},[86,921,164],{},[76,923,924,929,932],{},[102,925,926],{},[43,927,928],{},"MrChromebox UEFI",[102,930,931],{},"Flashed via Live USB (Option 2)",[102,933,931],{},[76,935,936,941,945],{},[102,937,938],{},[43,939,940],{},"Proxmox Static IP",[102,942,943],{},[86,944,176],{},[102,946,947],{},[86,948,181],{},[76,950,951,956,959],{},[102,952,953],{},[43,954,955],{},"Target Hypervisor",[102,957,958],{},"Proxmox VE 9.2 (Linux Kernel 7.0)",[102,960,958],{},[76,962,963,968,979],{},[102,964,965],{},[43,966,967],{},"Kernel Stability Flags",[102,969,970,313,973,313,976],{},[86,971,972],{},"max_cstate=1",[86,974,975],{},"APST=0",[86,977,978],{},"nomodeset",[102,980,981,313,983,313,985],{},[86,982,972],{},[86,984,975],{},[86,986,978],{},[76,988,989,994,1001],{},[102,990,991],{},[43,992,993],{},"No-Subscription Repo",[102,995,996,997,1000],{},"Configured (",[86,998,999],{},"trixie",") & upgraded",[102,1002,996,1003,1000],{},[86,1004,999],{},[76,1006,1007,1012,1015],{},[102,1008,1009],{},[43,1010,1011],{},"M.2 Wi-Fi Hardware",[102,1013,1014],{},"Antenna connected \u002F card removed",[102,1016,1014],{},[59,1018],{},[62,1020,1022],{"id":1021},"whats-next-the-homelab-rebuild-pipeline","🔮 What’s Next: The Homelab Rebuild Pipeline",[14,1024,1025],{},"The compute layer is now flashed, stabilized, and running Proxmox VE 9.2 on 35W hardware.",[14,1027,1028,1029,1034],{},"In the upcoming articles and YouTube videos on ",[222,1030,1033],{"href":1031,"rel":1032},"https:\u002F\u002Fyoutube.com\u002F@letstalkdev",[226],"@letstalkdev",", I will build the rest of the stack:",[230,1036,1037,1043,1049],{},[233,1038,1039,1042],{},[43,1040,1041],{},"Where Terraform\u002FOpenTofu Stops and Ansible Begins:"," Creating a clean, non-leaky abstraction where OpenTofu provisions cloud-init VM templates via the Proxmox API, and Ansible converges machine state without manual SSH interventions.",[233,1044,1045,1048],{},[43,1046,1047],{},"The 1-Liter Storage Architecture:"," Why enterprise ZFS storage advice doesn't always fit consumer mini PCs, and how I configure storage pools for database workloads.",[233,1050,1051,1054],{},[43,1052,1053],{},"High-Availability PostgreSQL with CloudNativePG:"," Migrating from legacy Patroni stateful sets to native Kubernetes controller reconciliation with Barman Cloud S3 backups.",[14,1056,1057],{},"If you have old Chromeboxes gathering dust in a drawer, don't throw them away. With an i7 processor, 16GB of RAM, and MrChromebox UEFI, they are some of the most power-efficient, cost-effective virtualization nodes you can run.",[14,1059,1060],{},"The full automation pipeline comes next.",[1062,1063,1064],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":338,"searchDepth":753,"depth":753,"links":1066},[1067,1068,1069,1076,1077,1085,1086],{"id":64,"depth":753,"text":65},{"id":216,"depth":753,"text":217},{"id":276,"depth":753,"text":277,"children":1070},[1071,1072,1073,1074,1075],{"id":281,"depth":765,"text":282},{"id":322,"depth":765,"text":323},{"id":378,"depth":765,"text":379},{"id":393,"depth":765,"text":394},{"id":437,"depth":765,"text":438},{"id":450,"depth":753,"text":451},{"id":541,"depth":753,"text":542,"children":1078},[1079,1080,1082,1083,1084],{"id":594,"depth":765,"text":595},{"id":696,"depth":765,"text":1081},"2. Verify and Pin Hardware MAC in \u002Fetc\u002Fnetwork\u002Finterfaces",{"id":735,"depth":765,"text":736},{"id":839,"depth":765,"text":840},{"id":850,"depth":765,"text":851},{"id":886,"depth":753,"text":887},{"id":1021,"depth":753,"text":1022},"\u002Fimages\u002Fcovers\u002Fchromebox-proxmox-homelab-rebuild.png","2026-10-03","Why I am wiping my homelab to rebuild from scratch, how to flash the latest MrChromebox UEFI Full ROM on an Intel Core i7 Chromebox, and the mandatory kernel stability flags needed to run consumer mobile silicon 24\u002F7 without crashing.","md",{},"\u002Fblog\u002Fchromebox-proxmox-homelab-rebuild",{"title":5,"description":1089},"blog\u002Fchromebox-proxmox-homelab-rebuild",[1096,1097,1098,1099,1100],"homelab","proxmox","linux","hardware","devops","blog_post","PdDTcBtcZzzcZS-iMt7IbO5pkVnD7UvHf4y-fhsUdyA",null,1791464645915]